随着计算机硬件的发展、虚拟化技术的成熟以及人民生活水平的提高,「自己搭个网站」之类的想法已经不再是「高富帅」的专利。低至 ¥85/月以下的价格使普通人在经济上也承担得起。但是由于 Windows 的过度普及和人们对 GNU/Linux 的陌生,使得「服务器」这三个字在技术上仍然显得「高不可攀」。本文将用傻瓜式的教程,手把手地教你搭建起一个简洁但是强劲的网站运行环境,让你轻轻松松跑起自己的网站、博客。感谢 XeHost.com 对本文的赞助。
一、VPS 常识及硬件选择
很久很久以前,一台服务器就是一台服务器,要获得一个独立的服务器环境就要买一台服务器,而服务器是很贵的,硬件贵,托管也贵,所以一般人玩不起。后来,有人发明了虚拟化技术,使一台配置很强大的服务器能被分割成若干个配置低一些的虚拟小机器,这些虚拟小机器依托独立服务器强大的硬件支持还是比较厉害的,但是由于成本平摊,所以租用价格就亲民多了,这就是我们今天的主角:VPS,即「虚拟个人服务器」。
服务器领域使用最广泛的操作系统无疑是 GNU/Linux,它稳定、可靠、强劲、省资源。VPS 的配置对于广大跑着 Windows 的桌面电脑来说似乎显得较为低下,但是 VPS 上的 GNU/Linux 一般不装 GUI,所以其实是很省资源的,64MB 内存的 VPS 即可跑起很大型的博客软件了。当然,VPS 配置越高,网站环境越优。目前市面上销售的 VPS 型号一般以内存来定,比如 512MB 型、1024MB 型、2048MB 型等。本文主要介绍最适合一般新手使用的 512MB 型。本教程所使用的 512MB 型 VPS 由 XeHost.com 提供,年付价格只需 ¥82.5/月。
另外,关于 VPS 的虚拟技术,也有不同的选择,主流的有 Xen 方式、KVM 方式和 OpenVZ 方式。Xen 方式和 KVM 方式能虚拟出真正的高性能 VPS,每台 VPS 具有独立的内核,是良好的虚拟化实现,但是 KVM 目前不如 Xen 成熟。而 OpenVZ 则是一种很不彻底的虚拟,用户数据与宿主服务器的数据共存,一旦文件系统损坏会造成大量数据丢失,但是该虚拟化方式最大的特点就是便宜,因此也被一些要求低的 VPS 商家所采用。如果您在选购 VPS 的时候发现有价格特别低的,那就要小心了,很有可能是 OpenVZ 并且超售(在一台宿主服务器上销售超过服务器性能限制数量的 VPS),为了性能和稳定,请不要购买。本文的赞助商 XeHost.com 如它的名字一样,销售的都是采用 Xen 实现的 VPS。(详见《如何挑选购买最适合自己的美国 VPS?》)
二、VPS 操作系统及网站环境选择
操作系统
VPS 本质上也是台电脑,所以也需要安装操作系统和运行网站所需要的软件。操作系统一般是在 VPS 的控制面板上选择安装的,视 VPS 提供商不同,可选的操作系统也不少。可能有的读者听说过 CentOS 的名头,但是我这里却强烈反对使用它,因为它实在是太老了,官方源里的软件包版本都停留在几年前,且不少软件根本在源里没有,需要自己花大量时间、精力,小心翼翼地去编译。
那么使用什么呢?这里要隆重推荐的是 Ubuntu Server。Ubuntu 家族是从 Debian 发展而来的,在近几年中快速成长,以雄厚的后台(Canonical 公司的商业支持)和强大的社区成为了 GNU/Linux 界极受欢迎的操作系统。无论是日常使用、桌面开发还是服务器应用,都有 Ubuntu 的影子。大公司如 Google 和 Facebook 都以 Ubuntu 作为他们教程中推荐的 GNU/Linux 操作系统。感兴趣的可以点击以下链接查看来自大型互联网公司对 Ubuntu 的推荐:Chromium 开发者编译说明;Android 开发者编译说明;Facebook HHVM 专门的包。
网站环境
LAMP。啥是 LAMP?它是 Linux + Apache + MySQL + PHP/Perl 的缩写,是一种简洁、强劲、受到广泛支持的网站环境。国内似乎有不少人推荐把 A(Apache) 换成 N(nginx),但是我不推荐这样,因为 nginx 相对 Apache 来说,对 PHP 的支持更差一些,而且缺少 .htaccess
之类目录级配置文件的支持, rewrite 功能也不是很好用。最主要的,LAMP 还是 Ubuntu Server 官方推荐的网站环境,所以,我选择 LAMP!
但是,如果你真的对 nginx 有一些偏爱的话,还是可以加一份 nginx 上去的,这时候可以把 nginx 作为反向代理使用,能一定程度上增强网站的抗压能力,特别是一些静态文件如图片等。
三、连接你的 Ubuntu VPS
Ubuntu Server 采用的是每六个月出一个新版本的政策,但是每两年会有一个「长期支持版」,简称「LTS」,LTS 版的 Ubuntu Server 支持期长达五年,足够用到服务器淘汰、报废……本教程采用的是 Ubuntu Server 12.04 LTS 版,能用到 2017 年 4 月份……你也可以采用非 LTS 的版本如 12.10。
在 VPS 控制面板安装好操作系统之后,即可连接操作了。GNU/Linux 服务器的大部分操作都是通过命令来完成的,而 OpenSSH 是一种远程登录 GNU/Linux 的优秀协议。Windows 用户需要下载 Tunnelier 等软件填入主机、用户名、密码进行连接,OS X 和 GNU/Linux 用户可直接在终端中使用 ssh 命令进行连接。比如 VPS 服务商提供给你的 IP 是 10.0.0.1
,用户名是 root
,那么连接命令即是:
ssh root@10.0.0.1
然后按提示输入密码即可。GNU/Linux 的密码输入一般是不回显的,即你看不到你输入了什么,但是你的确输入进去了,输入完成后回车即可开始登录,第一次登录的时候会提示保存公钥,确认即可。
wzyboy@vermilion:~$ ssh root@10.0.0.1 Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-24-virtual x86_64) * Documentation: https://help.ubuntu.com/ root@xehost:~#
至此你就连上了你的 VPS,以后的命令都将在这个窗口中敲字完成了。如前面所说,GNU/Linux 服务器的维护基本上都是通过命令来完成的,所以本教程中不可避免地涉及到一些命令。先来个简单的吧,更新 Ubuntu 的软件包:
root@xehost:~# apt-get update && apt-get upgrade […] Do you want to continue [Y/n]?
该操作会执行一会儿,最后问你是否继续,回答 y 或者直接按回车即可,屏幕上再次跑过大量字符,等它停下来的时候,就说明升级完成了,期间如果包管理器问你问题的话,一般保持默认选择即可。注意:这个命令是不升级内核的,如果你想升级内核的话,请把 upgrade
改成dist-upgrade
,可能需要修改对应的 GRUB 设置以在下次启动时启动到新内核。
刚才的命令中,apt-get
是 Debian / Ubuntu 等发行版的升级管理器,它的使用方法非常简明易懂,比如,我们要安装 Vim 这个非常好用的编辑器的话,执行以下命令即可:
root@xehost:~# apt-get install vim Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libpython2.7 vim-runtime Suggested packages: ctags vim-doc vim-scripts The following NEW packages will be installed: libpython2.7 vim vim-runtime 0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded. Need to get 8,513 kB of archives. After this operation, 28.0 MB of additional disk space will be used. Do you want to continue [Y/n]?
回答 y 或者直接回车,即可安装 Vim 编辑器。Vim 默认的颜色主题如果觉得不好看的话,可以使用 echo 'colorscheme evening' > .vimrc
命令将其改成 evening
方案,这在黑色背景下看得比较清楚。
如果要删除某个软件包,也是比较容易的,用 remove
或者 purge
即可,后者会连配置文件一起清除,比如要清除掉 cryptsetup
这个软件包,就是 apt-get purge cryptsetup
。
Debian / Ubuntu 的包管理器是 dpkg
,有一些 dpkg
开头的命令。比如要更改时区,就是 dpkg-reconfigure tzdata
,会有很亲民的选择界面出现,选择 Asia/Shanghai
即可改成 UTC+8 时区。
Ubuntu VPS 的基本操作讲解完毕,下面开始装网站环境。
四、安装 LAMP + nginx
安装 LAMP
我说啥来着的?Ubuntu Server 是个非常好用的发行版,用在服务器上是很方便很爽的。在某些落后还自称「行业标准」的发行版上,安装 LAMP 要许多条复杂的命令,不少部件还因为太老要自己花费大量 CPU 和硬盘去编译,但是在 Ubuntu 下,只要简单的一条命令:
tasksel install lamp-server
接下来就是全自动化的操作了,期间会提示你设定一个 MySQL 的 root 密码,其他都不需要人工干预,整个过程两分钟内即可完成。该命令中tasksel
是 Ubuntu 的一个套件安装工具,可以很方便地安装一些预定义的套件。如果有的 VPS 提示没有 tasksel
命令的话,apt-get install tasksel
装一个即可。如果还想装一个 phpMyAdmin 怎么办? apt-get install phpmyadmin
即可!期间会让你选择你的网站环境,按空格选中 apache2 然后 Ok 就行了,还会让你输入两个密码,一个是 MySQL 的 root 密码,这就是刚才你在安装 LAMP 的时候设定的,希望你没有忘记哈。另一个是设置 phpMyAdmin 在 MySQL 里的程序密码,这个可以直接回车,让它随机生成一个复杂的密码,反正这个也不要人类记忆的……
配置 Apache
如果需要把 nginx 作为 Apache 的反向代理的话,Apache 是需要配置一下的,如果你只想直接用 Apache 的话,请跳过此段及下段。
需要说明的是,Debian / Ubuntu 的 Apache 是经过高度修改过的,与上游有较大区别,特别是在配置文件结构上,增加了许多方便的命令、脚本。这些便民的东西在别的发行版上是没有的。
由于要把 nginx 作为 Apache 的反向代理,所以要让 nginx 监听 80 端口而让 Apache 监听一个别的,比如 8080 端口。需要对/etc/apache2/ports.conf
做一下修改。用 Vim 打开这个文件,定位到 Listen 80
这一行,改成 Listen 127.0.0.1:8080
,另外上面的NameVirtualHost
的端口也要改成 8080
。
啥,Vim 怎么用?在 Vim 里有两种基本模式,一种是「普通」,一种是「编辑」,要进入「编辑」的话需要按 i,要回到「普通」的话按 Esc 即可,Vim 新手的话可以先用方向键定位到相应的位置,然后再按 i 进入「编辑」,进行相应的修改后按 Esc 回到「普通」,再用 :wq
回车命令保存退出。
改完后重启 Apache 服务: service apache2 restart
。Ubuntu 里重启某服务基本都是这样的格式。
扩展阅读:安装和配置 nginx
怎么在 Ubuntu Server 里装 nginx?如果你认真地看了上面的内容,已经能猜到了吧:
apt-get install nginx
一条命令,搞定。配置起来的话,在 /etc/nginx/sites-enabled/
里建立与 Apache 的 /etc/apache2/sites-enabled/
中对应的配置文件然后重启 nginx 即可。配置文件示例:
server { listen 80; server_name lamp.xehost.com; access_log /var/log/nginx/access.log; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; proxy_pass http://127.0.0.1:8080; } }
如果需要真实 IP 模块的话,可以安装 libapache2-mod-rpaf
软件包并将 /etc/apache2/mods-enabled/rpaf.conf
改成如下内容:
RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 ::1 RPAFheader X-Forwarded-For
五、搭建你的第一个网站:WordPress
之前做的那些,都是准备工作,现在,网站环境搭建好了,就可以正式搭网站了,本文中以 WordPress 为例,教你搭建自己的博客。
建立站点配置文件
前文有说过,Debian / Ubuntu 的 Apache 有着自己一套配置文件目录结构和管理方式,大概是这样的:
# /etc/apache2/ # |-- apache2.conf # |-- ports.conf # |-- conf.d # | |-- * # |-- mods-available # |-- mods-enabled # | |-- *.load # | |-- *.conf # |-- sites-available # |-- sites-enabled # | |-- *
其中 apache2.conf
是主配置文件,是最先被读取的,这个配置文件会递归引导 Apache 读取 ports.conf
, conf.d
, mods-enabled
,sites-enabled
中的配置。其中 ports.conf
自然是定义端口相关的设置,conf.d
中定义一些附加的设置,比如 phpMyAdmin 的设置就是通过这个目录被符号链接过来,然后被读取的,如果想禁用 phpMyAdmin,直接删除 conf.d
中相应的符号链接然后重启 Apache 即可。
Apache 是一个模块化的 HTTP 服务器软件,可用的模块配置放在 mods-available
目录中,把需要用的模块做个符号链接到 mods-enabled
中即可;可用的站点配置(俗称「虚拟主机」)放在 sites-available
目录中,把需要启用的做个符号链接到 sites-enabled
中即可。这种把配置文件拆分的方式可以方便地启用、禁用模块和站点,并且通过符号链接来操作的话也不用麻烦地移来移去了,一目了然。有两对 Debian / Ubuntu 的 Apache 专有的辅助小脚本可以完成符号链接的操作:
- 启用/禁用一个叫
ssl
的模块:a2enmod ssl
和a2dismod ssl
- 启用/禁用一个叫
default
的站点配置文件:a2ensite default
和a2dissite default
其实 a2enmod
就是 Apache 2 ENable Mod 的缩写,所以剩下四个的意义也就明白了吧?
现在先可以把默认的 default 站台给禁用掉: a2dissite default
,这样做其实是删除了 sites-enabled
中的一个符号链接。
然后建立一个自己的,基本可以照抄 default
的,咱们先复制一份再改:
cd /etc/apache2/sites-available # 进入相关目录 cp default lamp.xehost.com.conf # 复制一份 vim lamp.xehost.com.conf # 修改它
配置文件看着很长,但是关键也就以下几项:
大概照着改一下,然后保存,用 a2ensite
命令启用它。接下来咱们去下载 WordPress:
cd /var/www #进入相关目录 wget wordpress.org/latest.tar.gz # 下载 WordPress 压缩包 tar xf latest.tar.gz # 解压之 mv wordpress lamp.xehost.com # 将解压出来的目录改名 rm latest.tar.gz # 将压缩包删除
现在可以观察一下,现在的 /var/www/lamp.xehost.com
目录权限设置是很正确的,所有权是 www-data:www-data (33:33)
,目录的权限是 755,文件的权限是 644,因为 tar.gz 包是可以保留文件权限的。WordPress 给咱们树立了一个网站权限的好例子,正规的网站目录里也应该是这样的权限,与 HTTP 服务器运行的用户是一致的,这样既保证了 HTTP 服务器能读写该读写的文件和目录,又保证了万一服务器的 httpd 被黑,攻击者也不能损伤到其他文件。
如果你之前选择了加上 nginx 的话,现在也去建立一个对应的反向代理配置文件吧,然后重启 nginx 和 Apache,再访问下域名试试?
出现了!WordPress 的初装界面!能出现这一步,说明一切已经工作正常了。接下来就点击按钮继续吧。
配置 MySQL 数据库及安装 WordPress
接下来 WordPress 会提示说需要一个数据库,那么,新建一个吧。如果你是新手,或者你不会 SQL 命令,那么就用 phpMyAdmin 这个方便的工具来完成吧。如果你之前安装了 phpMyAdmin 的话,默认只要在域名后面加上 /phpmyadmin
就可以打开 phpMyAdmin 的登录界面了,输入用户名 root
和之前设置的 MySQL 数据库的 root 密码,登录之。
这里可以顺便把 test
数据库给删除掉。选中它,DROP 掉即可。切换到用户管理页面,可以把图中打勾的用户全部删除掉:
删除之后只剩下三个 localhost
的用户,这足够了。
现在来为 WordPress 新建一个数据库,在之前的 Create new database 那里,输入数据库名,比如 wordpress
,然后 Collection 选择utf8_general_ci
,选择 Create 即可。
然后去用户页面创建一个用户,比如叫 wordpress
。密码的话点击 Generate 让它随机生成一个吧,反正这是给机器记忆的,而不是给人类记忆的。不过 Generate 之后要先复制到剪贴版哦,过会儿要粘贴一下,然后就没事了……
再回到用户管理,把用户赋权。编辑这个用户的权限,为它赋上相应数据库的所有权限:
然后回到 WordPress 那里,照着刚才的做法填好:
然后就可以填写博客的基本信息了:
咦?装好了?嗯,就是装好了。这就是 WordPress 著名的「五分钟安装」。接下来干啥?登录,写文章吧!
祝各位读者折腾愉快。
评论前必须登录!
注册