Ubuntu 14.04搭建nginx和PHP7

安装软件

nginx(Ubuntu仓库版)

直接利用Ubuntu官方仓库即可安装nginx,不过在Ubuntu 14.04中通过该方法安装的nginx之版本为1.4.6(Ubuntu 15.10中为1.9.3),和nginx官方仓库提供的版本相比旧了不少,但该方法安装的优点是十分简便:

apt-get install nginx

nginx (官方仓库版)

nginx的官方仓库提供最新的稳定版nginx,目前版本为1.10.2,通过该方法安装的话首先要添加nginx官方仓库的key:

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key

此时可删去该key文件。然后编辑系统更新源/etc/apt/sources.list,在末尾加上以下两行:

deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx

保存文件后,先卸载旧版本nginx再执行安装命令:

apt-get update
apt-get remove nginx
apt-get autoremove
apt-get install nginx

测试下nginx是否正确安装:

nginx -v

PHP

为了安装PHP7,需要先添加Ondřej Surý为Ubuntu维护的PPA源:

add-apt-repository ppa:ondrej/php

如果提示找不到命令add-apt-repository,则需要执行以下命令安装其相关组件:

apt-get install software-properties-common

如果添加PPA源时出现编码错误,则需要通过以下命令来指定编码:

LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

然后更新软件包:

apt-get update

安装PHP7:

apt-get install php7.0-fpm

现在PHP7和PHP7-fpm已经安装了,如果你需要使用MySQL等组件,需要安装以下扩展:

apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

我们可以查看PHP版本来测试PHP7是否已经正确安装:

php -v

至此,PHP7已安装完毕。

配置软件

nginx

现在需要在nginx默认配置文件或者其它网站配置文件中配置FastCGI来连接PHP-FPM。
Ubuntu仓库版nginx的默认配置文件为/etc/nginx/sites-enabled/default
官方仓库版nginx的默认配置文件为/etc/nginx/conf.d/default.conf

执行以下命令来编辑网站配置文件(需要先安装vim):

vim /etc/nginx/sites-enabled/default 
或
vim /etc/nginx/conf.d/default.conf

修改或者新增以下内容:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

对于某些旧版本nginx,以上配置文件中的~ \.php$可能需要替换为~ [^/]\.php(/|$)

php7.0-fpm

对于目前Ubuntu仓库提供的nginx版本,php-fpm方面不需要做任何修改,可以直接跳过该部分去重启nginx即可。

对于官方仓库版nginx,因为php7.0-fpm默认只允许用户www-data访问自己,而新版nginx的进程所属用户已改为nginx,所以nginx没有权限访问php7.0-fpm导致502 Bad Gateway错误。我们要在/etc/php/7.0/fpm/pool.d/www.conf中把“允许访问的用户”改正即可。
编辑配置文件:

vim /etc/php/7.0/fpm/pool.d/www.conf

找到以下两行:

listen.owner = www-data
listen.group = www-data

将其按如下两行修改,保存即可。

listen.owner = nginx
listen.group = nginx

然后重启nginx和php-fpm:

service nginx restart
service php7.0-fpm restart

测试软件

在nginx默认的网页文件目录新建一个info.php,调用phpinfo()函数来查看PHP信息:

vim /usr/share/nginx/html/info.php 

放入代码:

<?php
phpinfo();
?>

如果能出现类似页面则nginx+PHP7已成功运作:
sample


Reference: