在上一篇文章《阿里云安装NGINX+PHP》中,我们简单介绍了如何在阿里云上面安装NginX和php,但是仅仅安装好是没有用的,你必须要学会如何在上面搭建网站。本文就来简单的介绍如何在nginx上搭建起能够运行php网站的环境。
配置NginX:nginx.conf ↑
NginX本身是不能运行php的,和Apache不同的是,NginX上一般通过php-fpm来运行php。现在的php环境一般都集成了php-fpm,简单的说php-fpm是php环境的一个补丁,能够让php运行更快。但如果我们抛开php不谈,如果我们要搭建一个html的静态完整,应该怎么去配置NginX呢?
首先,打开NginX的配置文件:
vi /etc/nginx/nginx.conf
我们可以看到类似httpd.conf的初始化环境配置。你会发现,它的内容比httpd.conf少的多,不要紧张,后面有好戏。对于我个人而言,我唯一做的就是,把gzip打开了:
gzip on; gzip_disable "MSIE [1-6]";
我们可以看到有这么一句:
include /etc/nginx/conf.d/*.conf;
才知道,原来更多的配置在conf.d这个目录下面。查看后才知道,几乎和网站配置相关的都在conf.d/default.conf这个配置文件内。
于是我们保存退出VI,重新打开:
vi /etc/nginx/conf.d/default.conf
这时,我们可以看到文件是server{}的形式,我们就知道中括号内就是一个虚拟主机的配置了。
server { #端口 listen 80; #绑定域名,不同域名用空格分开 server_name www.yourdomain.com youdomain.com; #确定这个网站的根目录 root /usr/share/nginx/html; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; #文件索引,也就是首页 location / { index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 其他地方都不必改了,但是下面这个地方一定要照搬过去,我就曾经因为下面这个地方没配置正确,所以无法执行php location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
修改完成之后,保存退出,重启nginx:
>service nginx restart >service nginx reload
用你的域名访问下,看看能不能看到nginx的欢迎页面了。
配置php-fpm,运行php ↑
上文讲到,php-fpm是运行php的必备条件(如果需要这个模式的话),所以在运行网站之前,我们必须先正确配置php-fpm.
vi /etc/php-fpm.conf
你会发现也被骗了,实际内容页没有。所以还得重新编辑
vi /etc/php-fpm.d/www.conf
这里面的内容很多,就不一一介绍了,我唯一改的地方是
pm.max_requests = 500
去掉注释,修改为500,限制同一时刻可以访问的最大并发数。
保存退出,重启php-fpm。
>service php-fpm restart
现在放一个php文件到你的网站根目录下,试试能正常运行吗?
实现重写 ↑
网上很多文章说nginx支持.htacess是狗屁,.htaccess是WordPress用户习惯了apache的后遗症,你稍微多谷歌几下就知道nginx和Apache的机制不一样,运行在nginx上不建议想办法使用.htaccess。
NginX通过在第一步中的.conf配置文件中加入重写规则生效。在default.conf的server{}中直接加入下面的代码:
if (!-e $request_filename){ rewrite /. /index.php last; }
这样就能支持WordPress的重写了。注意:这段代码直接放在root /usr/share/nginx/html;下一行就可以了。
NginX的配置和Apache中使用.htaccess不同,每一次修改配置都需要重启或重写加载NginX,其实这个和修改httpd.conf的道理是一样的。重启代码在上面有了。
php-fpm优化 ↑
php-fpm会占用大量的内存和资源通过一些优化可以减轻这种压力:
http://www.qixing318.com/article/in-the-case-of-high-load-of-php-fpm-tuning.html