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端口上。