【在主画面加入捷径】
       
【选择语系】
繁中 简中

技术部落格写作:建立 WordPress 运行环境

【赞助商连结】

    我们先前提过,WordPress 是 LAMP 架构风行时应运而生的产物,而 LAMP 包括以下四项软件:

    • Linux:使用 GNU/Linux 除了着眼于其免授权费的特性,GNU/Linux 本身也是相当稳定的系统
    • Apache:市占率最高的网页服务器,但设定方式较复杂;近年来 Nginx 兴起,可用来取代 Apache
    • MySQL:快速而免费的数据库软件
    • PHP:WordPress 本身是以 PHP 写成

    目前 WordPress 的需求为

    • PHP:至少 5.2.4,建议 7.2 以上
    • MySQL:至少 5.0,建议 5.6 以上
    • 尽可能使用 HTTPS 连线

    现在很少主机的 PHP 和 MySQL 版本会这么旧,也就是说,大部分主机的 PHP 和 MySQL 版本都能满足 WordPress 的需求;另外,WordPress 没有限定网页服务器,大多数使用者会用 Apache 或 Nginx 两者之一。

    原先的 HTTP 传输是以明文传递,对网站使用者来说完全没有任何隐私;使用 HTTPS 可将讯息加密,主要是着眼于安全性需求。此外,使用 HTTPS 对网站的搜寻引擎优化也会加分。

    根据安装 WordPress 方式的不同,分为两个情境:

    • 共享主机或 PaaS
    • VPS 或 IaaS

    在第一种情境下,LAMP 环境已经建置完成,部落客只要将 WordPress 程序代码传到该主机即可。在第二种情形下,则需自行安装相关软件。本文会假设读者使用某个 VPS,并且会安装 LEMP (Linux-Nginx-MySQL-PHP),但其他情境也可据此来变通。

    选择 GNU/Linux 版本

    VPS 或 IaaS 建主机时要选主机的系统,通常会是某种 GNU/Linux 发行版。根据软件套件格式,常见的 GNU/Linux 发行版可分为以下数种:

    • DEB 系:Ubuntu、Debian
    • RPM 系:又可分为两种
      • Red Hat 系列:CentOS、RHEL
      • SUSE 系列:openSUSE、SUSE Linux 企业版

    实际上比较常见的 VPS 系统是 Ubuntu、Debian、CentOS;笔者自己使用的经验,DEB 系的默认软件库的软件会比 RPM 系来得多,但读者可自行选喜好的版本。RHEL 需要另缴授权费,除了需要 Red Hat 的企业支援,直接选 CentOS 即可。而 SUSE 系则是近年来使用者基数较少,有些主机商不会提供。

    笔者在本文中会用 Ubuntu 16.04 来展示软件安装过程,读者可用本地端的虚拟机或开一个最便宜的远端主机来练习。

    安装 Nginx

    网页服务器是实际和外界互动的软件,一般多用 Apache 或 Nginx 两者之一。这里我们安装 Nginx:

    $ sudo apt-get install nginx
    

    安装 MySQL

    WordPress 网站是动态网站,需要数据库来存数据;WordPress 需搭配 MySQL (或 MariaDB)。在这里我们安装 MySQL:

    $ sudo apt-get install mysql-server
    

    通常会建议在安装 MySQL 后立即执行 mysql_secure_installation 以增加数据库的安全性:

    $ sudo mysql_secure_installation
    

    系统会询问是否要验证 MySQL 的密码,如果选是的话会加入相关的 plugin:

    VALIDATE PASSWORD PLUGIN can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD plugin?
    
    Press y|Y for Yes, any other key for No:
    

    验证方式由弱至强有三个等级,读者可依自己需求来选择:

    There are three levels of password validation policy:
    
    LOW    Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary
    file
    
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
    

    是否要去除匿名使用者,通常都选是 y

    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    

    是否要禁止 root 远端登录系统,通常都选是 y

    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
    

    是否要移除测试用数据库,通常都选是 y

    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
    

    之后就可以继续使用 MySQL 数据库。

    安装 PHP

    由于 Nginx 本身无法处理 PHP,还要另外安装 PHP FastCGI Process Manager (FPM),将 PHP 程序代码交由 CGI 程序来处理;另外,我们也安装 PHP 所用的 MySQL 模块:

    $ sudo apt-get install php-fpm php-mysql
    

    安装好后,我们稍微调整一下 php.ini 设定档:

    $ sudo nano /etc/php/7.0/fpm/php.ini
    

    找出这个项目,将其设为 0,对系统来说较安全:

    cgi.fix_pathinfo=0
    

    接着,重新启动 PHP FPM 模块:

    $ sudo systemctl restart php7.0-fpm
    

    调整 Nginx 设定,将 PHP 脚本导向 PHP FPM 模块:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
    
        server_name _;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }
    

    接着,重新启动 Nginx 服务器:

    $ sudo systemctl restart nginx
    

    测试 PHP

    我们撰写一个简单的 PHP 脚本来测试系统是否正常运作:

    $ sudo nano /var/www/html/info.php
    

    在此脚本中,我们调用 phpinfo()函数来显示系统上的 PHP 相关设定:

    <?php
    phpinfo();
    

    如果系统正常运作,打开网址可以看到以下内容:

    PHP info 示例

    我们当然不希望骇客也看到这么清楚的系统讯息,测试完后记得将脚本删除:

    $ sudo rm /var/www/html/info.php
    

    当系统设置成功后,就可以安装 WordPress,这部分将于后文说明。

    【赞助商连结】