nginx + php-fpm部署php应用
前段时间发现站点的访问变得很不稳定,最开始以为只是网速的问题就没有太在意,直到有一次莫名其妙宕机,ssh上去重启服务,顺便top了一下结果吓了一跳–空闲的物理内存只有几百k了。再往下看发现了一大串apache进程,而且每个进程的内存占用都不小。听说nginx的效率要比apache高,于是决定换上nginx试试。
注意:本文只介绍从LAMP迁移至LNMP的步骤,其中需要改动的只有nginx 和php5,关于MySQL的配置请自行Google,本文不再赘述。
如果没有特别说明,php7的配置只需要将php5换成php7即可。
首先更新apt并安装nginx、php5-fpm
sudo apt-get update sudo apt-get install nginx php5-fpm
配置php5
sudo nano /etc/php5/fpm/php.ini
找到这一行:
cgi.fix_pathinfo=1
改为
cgi.fix_pathinfo=0
编辑/etc/php5/fpm/pool.d/www.conf
sudo nano /etc/php5/fpm/pool.d/www.conf
找到 listen = 127.0.0.1:9000
,
改为(如果本来就是这样就不用改了)
listen = /var/run/php5-fpm.sock
保存并退出
配置nginx
编辑虚拟主机配置文件
sudo nano /etc/nginx/sites-available/my_config
作如下改动
找到root /usr/share/nginx/www;
,将路径改为网站根目录(如/var/www/)
root /var/www;
找到 index index.html index.htm;,加入index.php
index index.php index.html index.htm;
找到 server_name example.com; 将example.com替换为你的域名
server_name nyan.im
找到try_files $uri $uri/ /index.html;
,用如下语句替换。
这一句用于将404的url交由index.php来处理。多数php框架的路由,以及WordPress的伪静态都需要用到。
try_files $uri $uri/ /index.php?q=$uri&$args;
找到location ~ \.php$
这一块,将相关的语句取消注释
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; #如果是php7,改为fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
执行nginx -t
测试配置文件
测试无误后启动nginx
sudo service nginx start
3 Comments
息E-敛
曾经想学用Nginx部署Django来着,结果看了半天愣是没弄明白……
Moon
nginx主要是处理并发要比apache好,你宕机应该是apache设置问题…
Frank
我觉得也是配置问题,因为我压根就没特意去配置…反正现在nginx用的好好的就无所谓啦..