在 Ubuntu 16.04 上配置 NGINX 以读取 PHP

什么是 NGINX?

NGINX 是一个开源的 Linux Web 服务器,可以在使用低资源的同时加速内容。 NGINX 提供:

  • 表现。
  • 稳定。
  • 负载均衡。
  • 反向代理。
  • 邮件代理。
  • HTTP 缓存。

NGINX 默认不执行 PHP 脚本,必须进行配置。 本教程可帮助您配置 NGINX 和 PHP,以在您的服务器上启用和测试 PHP 功能。

笔记在 7.2.24 之前的 PHP 版本中发现了一个关于 PHP-FPM 和 NGINX 的缺陷。 这 正则表达式 在里面 fastcgi_split_path_info 指令可以被利用,导致远程代码执行。 一个 修补 已在 PHP 7.2.24 和 7.3.11 中发布以解决此问题。

开始之前

  • 在 Ubuntu 16.04 LTS 服务器上以 root 身份登录,或添加 sudo 在每个还没有它的命令之前。
  • 安装 NGINX 在您的 Ubuntu 16.04 服务器上。
  • 本教程使用 NGINX 1.10.3。 虽然旧版本可能有效,但在尝试配置 PHP 之前更新到可用的最新版本是个好主意。
  • 本教程正在运行 php7.0-fpm。 PHP 5.6 是 生命的尽头 并且不再支持。

第 1 步:更新所有软件包

运行以下命令以更新所有 Linux 软件包。

sudo apt-get update && apt-get upgrade

使用以下命令检查 NGINX 的当前版本。

nginx -v

结果是以下输出。

笔记最佳实践是使用最新版本的 NGINX。 在进行任何更改之前备份您的 NGINX 和 PHP 配置。

使用以下命令测试 NGINX 配置文件的语法错误。

nginx -t

如果成功,您将获得与以下类似的输出。

nginx -t 如果这不成功,命令会为您提供查找错误的起点。

NGINX 安装后会自行启动。 但是,这里有一些用于控制 NGINX 的命令。

sudo systemctl stop nginx.service

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

sudo systemctl restart nginx.service

第 2 步:PHP 安装和版本检查

如果需要安装 PHP,可以运行以下行。

sudo apt-get -y install php7.0 php7.0-fpm

用最新的 PHP 版本替换 7.0。 您可以在此处查看更新。

或者,如果您需要将 PHP 更新到最新版本,请在进行任何更改之前进行备份,然后运行以下命令。

sudo apt-get upgrade

现在是时候检查 PHP 是否正在运行以及什么版本。 使用以下命令执行此操作。

sudo systemctl status php7.0-fpm

您将看到与此类似的输出。

检查您的 PHP 版本是否正在运行并使用正确的版本。

第三步:NGINX PHP 配置

一旦 NGINX 和 PHP 在您的系统设置上运行,配置 PHP 设置。

从家中,使用以下命令将目录更改为 NGINX 文件夹 光盘 命令。

cd ~

cd /etc/nginx

要配置您的 NGINX PHP 设置设置, 光盘 进入 等/php 文件夹。

cd etc/php/

我们正在寻找一个名为 php.ini 的文件。 使用以下命令从文本编辑器访问该文件。

vim 7.0/fpm/php.ini

或者

vim 7.1/fpm/php.ini

笔记文件夹因使用的 PHP 版本而异。 将 7.0 或 7.1 替换为您正在使用的 PHP 版本。

php.ini 是一个允许自定义环境的大文件。 最佳做法是在进行任何更改之前制作此文件的副本。 使用以下命令制作文件的副本。

cp php.ini php.ini_copy

笔记在 Vim 文本编辑器中,使用 一世 命令插入, 退出 命令退出,并且 :wq 命令来保存文件。 如果您需要离开文件而不保存它,请使用 :q. 随意使用您最熟悉的文本编辑器。

以下是 php.ini 文件的一些推荐值。

max_execution_time = 300

最大输入时间 = 60

memory_limit = 256M

upload_max_filesize = 100M

在文件中找到这些变量并更新值。

编辑前:在 php.ini 文件中将 max_execution_time 设置为 300。

编辑后:在 php.ini 文件中将 max_execution_time 设置为 300 允许更多的处理时间。

第 4 步:默认站点配置

现在是时候设置您的默认站点环境了。 打开您的站点配置文件。 默认情况下,它位于以下路径。

/etc/nginx/sites-available/default

您可以使用 光盘 命令到达那里或使用打开它 vim.

删除 PHP7.0 和 PHP 7.1 的以下注释掉的行。

PHP 7.0
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
     location ~ .php$ {
include snippets/fastcgi-php.conf;

#
#     # With php7.0-cgi alone:
#     fastcgi_pass 127.0.0.1:9000;
#     # With php7.0-fpm:
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

PHP 7.1
server {
listen 80;
listen [::]:80;
root /var/www/html;
index  index.php index.html index.htm;
server_name  example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
     location ~ .php$ {
             include snippets/fastcgi-php.conf;
  #
#     # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
#     # With php-cgi (or other tcp sockets):
#     fastcgi_pass 127.0.0.1:9000;
}
}

第 5 步:在 NGINX 上测试 PHP

完成必要的编辑后,使用以下行重新启动 NGINX 和 PHP。

sudo systemctl restart nginx.service

使用此语法通过创建一个 phpinfo.php 文件中 /var/www/html 文件路径。

sudo vim /var/www/html/phpinfo.php

在文件中添加以下内容并保存。

<?php phpinfo( ); ?>

要测试您的设置,请键入您的服务器 IP,然后键入 /phpinfo.php 在您的网络浏览器中。

https://yourserverip/phpinfo.php

如果您看到以下内容,则您已成功设置 NGINX PHP 配置。

设置 PHP 信息页面以确保在 NGINX 服务器上启用 PHP。

包起来

配置 NGINX 以读取 PHP 会产生几个好处。 虽然在设置 NGINX PHP 配置之前需要准备一些额外的部分,但结果是值得的。

Liquid Web 的专用服务器具有 root 访问权限,允许您根据需要安装和配置 NGINX。 联系我们的销售团队了解更多信息。