编写这篇文章,一方面原因是为了梳理总结自己近期使用 WordPress 搭建网站的流程,以供日后参考。另一方面,在学习过程中,深刻地感受到了网络知识的碎片化所带来的困扰。碎片化的知识通常表现为过时的、冗余的、描述不清的、解释矛盾的、甚至是错误的信息。对初学者,甚至是有一定工作经验的专业人员无疑造成巨大的障碍。
学习正确的、系统的知识无论对于提升能力还是培养良好的工作习惯均起到至关重要的作用。然而遗憾的是,网络知识纷繁复杂,碎片化的情况也在所难免。虽然如此,仍然希望能够通过自己的努力,让文章力求方法正确、操作清晰、解释充分,并插入自己在学习、工作中的思考。虽然还不能达到专业教程的水平,但也希望能够抛砖引玉,对初学者有所裨益。
受篇幅限制,本篇文章拆分为三个部分,及一篇快速上手指南:
快速上手指南将三篇篇幅压缩为一篇,削减了解释与扩展内容,以供参考。
操作系统的选择:选择 CentOS、Debian 或其它操作系统亦无不可。由于自身对 Ubuntu 系统比较熟悉(尤其是其包管理系统),同时确认亦有知名公司使用 Ubuntu 系统作为服务器操作系统,因此本例采用 Ubuntu 作为云服务器的操作系统进行网站构建。
本例涉及的主要软件版本如下表所示。鉴于 Linux 系统的开放性,使用不同版本的软件可能会出现少量配置上差别。
软件 | 版本 |
---|---|
操作系统 | Ubuntu 16.04 64位 |
Apache | 2.4.18 |
MySQL | 5.7.29 |
PHP | 7.0.33 |
WordPress | 5.3.2 |
至此,实现的操作包括:
可以在本地部署一台计算机(或虚拟机)以构建本地网站。
Putty 官方网站
以下简述 Windows 系统下 Putty 的下载与安装。Putty 是一套工具包,包括 putty.exe
和稍后将用到的 pscp.exe
。前者用于通过 SSH 连接登录云服务器的控制台,后者用于向云服务器上传、下载文件。
简便起见,请下载 Putty [32/64] 位安装包,而非单一可执行文件。
安装过程从略。注意: 在安装向导中勾选相应选项,以将 Putty 安装路径添加至 系统环境变量 中。
启动 putty.exe
选择 SSH 连接选项,填入云服务器 公网 IP,端口号保持默认(即 22 端口),打开即可。首次使用需要信任该主机,随后按要求输入用户名(本例中为 root
)及密码,登录云服务器控制台。
登录后可在控制台输入命令,例如使用命令 uname -v
可以查看 Ubuntu 的版本信息:
#199-Ubuntu SMP Thu Nov 14 01:45:04 UTC 2019
至此,实现的操作包括:
LAMP 是运行 WordPress 的一个基本环境组合,即 Linux / Apache / MySQL / PHP 的组合。需要指出的是,WordPress 的运行环境不限于 LAMP。
MariaDB 是 MySQL 闭源后的继任者,兼容 MySQL 应用层面的接口,WordPress 同样支持 MariaDB。可使用 MariaDB 替代 MySQL 作为 WordPress 的数据库引擎。
为了安装必要的软件包,通常需要更新 Ubuntu 的源列表。由于已经使用 root
用户进行登录,在更新源列表时不再需要提升权限,执行命令:
apt-get update
若使用非 root
用户登录,则需使用 sudo apt-get update
命令更新源列表。
国内云服务器的 Ubuntu 系统通常内置了国内的软件源镜像地址,以加速软件包的下载速度。亦可自行修改软件源地址。
使用命令:
apt-get install apache2
安装 Apache 2。当前版本为 2.4.18。安装中需要输入 Y 以确认安装,下同。
使用命令:
apt-get install mysql-server mysql-client
安装 MySQL 的服务端和客户端程序。当前版本为 5.7.29。MySQL 客户端作为创建数据库、用户、管理用户权限的工具,同时安装到云服务器上。
安装中需要设置 MySQL 管理员密码,即数据库 root
用户的密码(可与云服务器 root
用户的密码不同)。设置密码后按回车键,再次输入密码后按回车键以确认,两次输入的密码要保持一致。
MySQL 安装完成后,可运行
mysql_secure_installation
命令,以加强 MySQL 数据库的安全性。该操作是可选操作,本例未执行。
在安装 PHP 及模块前,首先介绍一些背景知识。Apache 服务器可以采用多种方式运行 PHP,包括:Mod-PHP
、FastCGI
、FCGID
、PHP-FPM
等,下面对几种方式做简要说明。
方式 | 描述 |
---|---|
Mod-PHP |
将 PHP 作为模块加入到 Apache 中,PHP 解释器运行在 Apache 服务进程中 |
FastCGI |
即 Mod-FastCGI 。通过 PHP-CGI 实现对 PHP 的解释。注意:由于长期缺乏更新,该模块已不常使用 |
FCGID |
与 FastCGI 二进制兼容,但性能、安全性更好。仍然通过 PHP-CGI 实现对 PHP 的解释 |
PHP-FPM |
相对独立的 FastCGI 进程管理软件,性能较好且资源消耗较小 |
本例采用 PHP-FPM
实现 PHP 功能,使用命令:
apt-get install php7.0
apt-get install php7.0-mysql
安装 PHP 7 及对应的 PHP 模块(即用于支持 MySQL 的 PHP 模块),当前版本为 7.0.33。注意:PHP-FPM
已经包含在 php7.0
中。
需要指出的是,WordPress 可能需要更多的 PHP 模块,例如图像处理模块
PHP-GD
等。对于额外需要的模块,建议在遇到问题时逐步添加。安装完成后,可以查看/etc/php/7.0/fpm/php.ini
配置文件,以确认或修改 PHP 默认配置。本例保持默认配置,如遇问题再进一步调整配置文件。
使用命令:
a2enmod proxy_fcgi
a2enconf php7.0-fpm
配置 Apache 使用 PHP-FPM
方式。这里额外解释一下 proxy_fcgi
模块。该模块是 Apache 的模块,注意它仅是协议模块,即区别于 FastCGI
和 FCGID
,该模块并不具有启动和管理进程的能力(而 PHP-FPM
正是用来启动和管理进程的)。
最后需要指出的是,Apache 的多处理模块(MPM,Multi-Process Module) 默认使用 prefork
方式。关于 MPM 这里不再展开,然而可以使用命令切换至较新的 event
方式。
注意:使用
event
方式代替prefork
方式完全是可选操作。可以跳过本步,继续进行后续操作。
使用命令:
a2dismod mpm_prefork
a2enmod mpm_event
禁用默认的 mpm_prefork
模块,随后启用 mpm_event
模块。
使用
apache2ctl -t -D DUMP_MODULES
命令查看 Apache 加载的模块。
使用命令:
service apache2 restart
service mysql restart
service php7.0-fpm restart
重新启动 Apache、MySQL 和 PHP 服务程序,以确保各项配置均被正确加载。
Apache 的默认页面存放在
/var/www/html/
路径下。
事不宜迟!现在就使用本地浏览器访问:
http://[公网 IP]/
测试能否正确打开 Apache 的默认页面。
访问失败可能由多种原因造成。对于刚刚创建的云服务器,最可能的原因是云服务器的安全组配置禁用了对 80 端口(HTTP 默认端口)的访问。通常添加一条入站(入方向)规则可以解决该问题,请咨询云服务器运营商。
至此,实现的操作包括:
本节内容不仅限于 WordPress 网站的构建。实际上,对于云服务器构建网站均可参考本节给出的方法。