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



Posted

in

by

Comments

3 responses to “nginx + php-fpm部署php应用”

  1. 息E-敛 Avatar

    曾经想学用Nginx部署Django来着,结果看了半天愣是没弄明白……

  2. Moon Avatar

    nginx主要是处理并发要比apache好,你宕机应该是apache设置问题…

    1. Frank Avatar

      我觉得也是配置问题,因为我压根就没特意去配置…反正现在nginx用的好好的就无所谓啦..

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.