CentOS 7 下 Nginx 与 PHP 的安装和配置
在 Linux 操作系统上,Nginx 和 PHP 是两种非常流行的 Web 服务技术,Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,而 PHP 是一种广泛使用的开源服务器端脚本语言,本文将详细介绍如何在 CentOS 7 操作系统上安装和配置 Nginx 与 PHP,以实现动态网站的开发和部署。

一、安装前的准备
1. 更新系统包
在开始之前,确保你的系统是最新的,打开终端并执行以下命令:
- sudo yum update y
2. 安装 EPEL 源
为了能够安装较新的软件版本,需要添加 Extra Packages for Enterprise Linux (EPEL) 源:
- sudo yum install epelrelease y
3. 安装必要的开发工具和库
安装 GCC 和其他必要的开发工具及库:

- sudo yum groupinstall "Development Tools" y
- sudo yum install openssl openssldevel zlib zlibdevel pcre pcredevel gcc gccc++ libxml2devel libsqlite3xdevel y
二、安装 Nginx
1. 下载并解压 Nginx
首先下载 Nginx 源代码包:
- wget http://nginx.org/download/nginx1.18.0.tar.gz
- tar zxvf nginx1.18.0.tar.gz
- cd nginx1.18.0
2. 配置、编译和安装 Nginx
执行配置、编译和安装:
- ./configure prefix=/usr/local/nginx withhttp_ssl_module
- make
- sudo make install
3. 启动 Nginx
进入安装目录并启动 Nginx:

- cd /usr/local/nginx
- sudo ./sbin/nginx
4. 设置开机自启
使用以下命令设置 Nginx 开机自启:
- sudo vi /etc/systemd/system/nginx.service
在文件中添加以下内容:
- [Unit]
- Description=The NGINX HTTP and reverse proxy server
- After=syslog.target network.target remote.target nsslookup.target
- [Service]
- Type=forking
- PIDFile=/usr/local/nginx/logs/nginx.pid
- ExecStartPre=/usr/local/nginx/sbin/nginx t
- ExecStart=/usr/local/nginx/sbin/nginx
- ExecReload=/usr/local/nginx/sbin/nginx s reload
- ExecStop=/bin/kill s QUIT $MAINPID
- PrivateTmp=true
- [Install]
- WantedBy=multiuser.target
然后启用并启动 Nginx 服务:
- sudo systemctl enable nginx
- sudo systemctl start nginx
三、安装 PHP 和 PHPFPM
1. 下载并解压 PHP
下载 PHP 源代码包:
- wget https://www.php.net/distributions/php7.4.8.tar.gz
- tar zxvf php7.4.8.tar.gz
- cd php7.4.8
2. 配置、编译和安装 PHP
执行配置、编译和安装:
- ./configure prefix=/usr/local/php withconfigfilepath=/usr/local/php/etc enablefpm
- make j8
- sudo make install
3. 拷贝配置文件并启动 PHPFPM
拷贝默认配置文件并启动 PHPFPM:
- sudo cp etc/phpfpm.d/www.conf{,.default}
- sudo cp etc/phpfpm.conf.default /usr/local/etc/phpfpm.conf
- sudo groupadd wwwdata
- sudo useradd g wwwdata s /sbin/nologin wwwdata
- sudo vi /usr/local/etc/phpfpm.d/www.conf
修改www.conf
文件,将user
和group
设置为wwwdata
:
- user = wwwdata
- group = wwwdata
- listen = /run/phpfpm/phpfpm.sock
启动 PHPFPM:
- sudo /usr/local/sbin/phpfpm nodaemonize
4. 设置开机自启
使用以下命令设置 PHPFPM 开机自启:
- sudo vi /etc/systemd/system/phpfpm.service
在文件中添加以下内容:
- [Unit]
- Description=The PHP FastCGI Process Manager
- After=syslog.target network.target remote.target nsslookup.target
- [Service]
- Type=simple
- PIDFile=/usr/local/var/run/phpfpm.pid
- ExecStart=/usr/local/sbin/phpfpm nodaemonize
- ExecReload=/bin/kill USR2 $MAINPID
- ExecStop=/bin/kill QUIT $MAINPID
- PrivateTmp=true
- [Install]
- WantedBy=multiuser.target
然后启用并启动 PHPFPM 服务:
- sudo systemctl enable phpfpm
- sudo systemctl start phpfpm
四、配置 Nginx 支持 PHP
1. 修改 nginx 配置文件
编辑 Nginx 配置文件,使其支持 PHP:
- sudo vi /usr/local/nginx/conf/nginx.conf
在server
块中添加以下内容:
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
2. 测试并重启 Nginx
测试 Nginx 配置文件是否正确:
- sudo /usr/local/nginx/sbin/nginx t
如果一切正常,重启 Nginx:
- sudo systemctl restart nginx
五、验证安装结果
1. 创建测试页面
在/usr/share/nginx/html
目录下创建一个测试用的 PHP 文件:
- sudo vi /usr/share/nginx/html/index.php
在文件中添加以下内容:
- <?php
- phpinfo();
- ?>
2. 访问测试页面
打开浏览器,访问http://<你的服务器IP>
,如果看到 PHP 信息页面,说明 Nginx 和 PHP 已成功安装并配置。
六、常见问题排查(FAQ)
Q1: Nginx 无法启动或报错怎么办?
A1: Nginx 无法启动或报错,可以检查以下几点:
确保配置文件路径正确,没有语法错误,可以使用nginx t
命令测试配置文件。
检查防火墙设置,确保开放了所需的端口。
查看日志文件,通常位于/var/log/nginx/error.log
,根据日志提示进行修复。
Q2: PHPFPM 无法启动或报错怎么办?
A2: PHPFPM 无法启动或报错,可以检查以下几点:
确保配置文件路径正确,特别是phpfpm.conf
和www.conf
中的用户和组设置正确。
查看日志文件,通常位于/usr/local/var/log/phpfpm.log
,根据日志提示进行修复。
确保 PHPFPM 的监听端口未被其他服务占用。