使用nginx运行wordpress

apache和nginx都能搭建网页服务。apache更老牌,功能模块更多,运行更稳定;而nginx运行性能更高,内存消耗更少。 使用apache时,每一个连接请求都对应服务器上一个进程,而在nginx中,多个连接(多达上万个)仅对应服务器上一个进程。相比于apache支持不超过3000个连接请求,nginx能支持高并发连接,每秒最多的并发连接请求理论可以道道5万个。本问讲解在不影响apache情况下额外使用nginx运行wordpress网站。

1. 安装wordpress软件

目前wordpress官网不再对中国内陆提供软件的下载了。需要使用代理下载wordpress软件。此外,最新版本的wordpress需要较高版本的PHP软件,而CentOS6或CentOS7自带的PHP软件版本较低,推荐使用较低版本的wordpress软件,例如:5.1.3版本。

cd /home/chenlianfu
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar zxf latest-zh_CN.tar.gz

注意不管是使用apache还是nginx运行wordpress,最终其实都是使用apache用户来对软件目录进行读取或写入。需要使用root用户修改权
相关权限:

usermod -aG chenlianfu apache
chmod 750 /home/chenlianfu
chown -R apache:chenlianfu /home/chenlianfu/wordpress/

2. 安装nginx和php-fpm软件

使用root权限安装nginx和php-frm软件,后者用于让nginx识别php文件。此外,在安装CentOS系统时使用最大化安装,默认安装上了相应的一些mysql和php软件等。

yum install nginx php-fpm

3. 启动php-fpm软件

/etc/init.d/php-fpm restart
chkconfig php-fpm on

需了解的时是,在php-fpm的配置文件/etc/php-fpm.d/www.conf中,默认指定的使用者依然是apache。

4. 修改nginx配置文件

在nginx的主配置文件/etc/nginx/nginx.conf中修改端口号为8088。在CentOS6中可能是修改配置文件/etc/nginx/conf.d/default.conf。

    listen 8088;
#listen 80 default_server;
#listen [::]:80 default_server;

再增加nginx对wordpress的配置文件/etc/nginx/conf.d/wordpress_chenlianfu.conf,其内容为:

server {
    listen 8088;
    server_name www.chenlianfu.com;
    root /home/chenlianfu/wordpress;
    access_log  /var/log/nginx/host.access.log  main;
    location / { 
        try_files $uri $uri/ /index.php?$args;  
        index  index.php;
    }   
    
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    } 
}

最后,启动php-fpm和nginx服务并设置开机自动启动:

/etc/init.d/nginx restart
chkconfig nginx on

此时,可以在网页上使用8088端口访问nginx运行的wordpress网站了。这需要在浏览器中输入www.chenlianfu.com:8088来访问网站(这使还需要购买该域名并指向服务器的IP地址),比较不方便。

5. 修改apache配置文件实现apache和nginx共用80端口

默认情况下nginx和apache都使用了80端口,形成了冲突。我一般优先使用apache构建网站,有利于对服务器中的文件夹在网页中以目录形式访问。nginx对目录访问的效果较差,访问时其网址最后面一定要加一个目录符号正斜线 / ,否则不能访问其目录。因此,我优先让apache占用80端口,而让nginx占用8088端口。从而两种建站方式同时支持。

为了让nginx的网站直接使用80端口访问,这时,只需要在apache配置文件中设置将对www.chenlianfu.com:80的访问自动转到www.chenlianfu.com:8088即可。在/etc/httpd/conf/httpd.conf最尾部添加信息:

<VirtualHost *:80>
ProxyPreserveHost On
ServerName www.chenlianfu.com
ProxyPass / http://127.0.0.1:8088/
ProxyPassReverse / htt://127.0.0.1:8088/
</VirtualHost>

以上配置信息表示,每当访问www.chenlianfu.com的80端口时,自动转到本地机器的8088端口,即使用nginx提供的网页服务了。从而实现apache和nginx共用80端口的效果了。然后重启apache服务:

/etc/init.d/httpd restart

若敢兴趣的话,其实也可以优先让nginx占用80端口,让apache软件占用8088端口,然后在nginx的配置文件中设置端口转发,实现两个软件对80端口的共用。修改配置文件/etc/nginx/nginx.conf实现端口转发:

location ~ /.*/ {
proxy_pass http://127.0.0.1:8088;
}

将以上信息添加到server { }块中。location能以这则表达式的方法对网址进行解析。上述 ~ / / 表示正则匹配,和perl类似;.* 表示匹配任意内容。因此,上述内容表示将任意网址都转到8088端口上。