安装依赖

1
sudo apt-get install libxml2-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libxpm-dev libmcrypt-dev libfreetype6-dev libbz2-dev libssl-dev

可能不全,如果下一步还是出错,可以搜索一下错误信息

生成配置

这一步的目的是生成Makefile文件
./configure --enable-fpm

编译

有时间的话make之后可以在test一下

1
2
3
make
make test
sudo make install

看一下输出的倒数最后几行

1
2
3
4
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/usr/local/php/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
Installing PDO headers: /usr/local/php/include/php/ext/pdo/

执行倒数最后两行的命令,你的和我的可以不一样

配置相关文件

1
2
3
cp /usr/local/php/php.ini-production /etc/php/php.ini
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin

vim /usr/local/etc/php-fpm.conf
找到user和group,修改为 user = www-data 和group = www-data,也可以是其他系统存在的用户

启动

/usr/local/bin/php-fpm

配置Nginx

修改默认的 location 块,使其支持 .php 文件:

1
2
3
4
location / {
root html;
index index.php index.html index.htm;
}

下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

1
2
3
4
5
6
7
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

重启 Nginx
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
创建测试文件
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

打开你的IP/index.php看看,已经已经成功了

附上一个可用于生产环节的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
./configure --prefix=/usr/local/php \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-mcrypt \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear

参考
http://blog.itphp.org/archives/39
http://huifeng.me/2016/05/18/LEMP-step-to-step/
http://php.net/manual/zh/install.unix.nginx.php