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 的监听端口未被其他服务占用。