在当今互联网时代,搭建一个高效稳定的网站是众多企业和开发者的需求。Nginx 作为一款高性能的 HTTP 和反向代理服务器,搭配广泛用于 Web 开发的脚本语言 PHP,能够构建出性能卓越的网站运行环境。接下来,我们将详细介绍如何在 Linux 系统上配置 Nginx + PHP 环境来搭建网站。
一、安装 Nginx 和 PHP
更新系统:在开始安装之前,确保你的 Linux 系统是最新的,这有助于避免安装过程中出现依赖问题。对于基于 Debian 或 Ubuntu 的系统,打开终端并执行以下命令:
sudo apt update
sudo apt upgrade
如果你使用的是 CentOS 系统,则执行:
sudo yum update
安装 Nginx:Debian 和 Ubuntu 系统下,使用以下命令安装 Nginx:
sudo apt install nginx -y
在 CentOS 系统中,由于默认的 yum 源中 Nginx 版本可能较旧,我们可以先安装 EPEL 仓库(Extra Packages for Enterprise Linux),它提供了许多额外的软件包。执行以下命令安装 EPEL 仓库:
sudo yum install epel - release -y
然后通过 yum 安装 Nginx:
sudo yum install nginx -y
安装完成后,启动 Nginx 服务并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
此时,在浏览器中输入服务器的 IP 地址,如果看到 Nginx 的欢迎页面,说明 Nginx 安装成功。
安装 PHP 及相关组件:我们需要安装 PHP 解释器以及 PHP - FPM(FastCGI 进程管理器),它负责管理 PHP 进程并与 Nginx 进行通信。在 Debian 和 Ubuntu 系统上,执行以下命令安装 PHP 8.1 及相关扩展(你可根据项目需求选择合适的 PHP 版本):
sudo apt install php8.1 - fpm php8.1 - mysql php8.1 - cli php8.1 - curl php8.1 - gd php8.1 - mbstring php8.1 - xml php8.1 - zip - y
在 CentOS 系统中,若要安装 PHP 8.1,需先安装 Remi 仓库,它提供了更新的 PHP 版本。执行以下命令安装 Remi 仓库:
sudo yum install https://rpms.remirepo.net/enterprise/remi - release - 8.rpm -y # 对于CentOS 8
然后启用 PHP 8.1 模块并安装 PHP 及相关组件:
sudo yum module enable php:remi - 8.1 -y
sudo yum install php - fpm php - mysqlnd php - cli php - gd php - mbstring php - xml php - zip -y
安装完成后,启动 PHP - FPM 服务并设置开机自启:
sudo systemctl start php8.1 - fpm # 根据你安装的PHP版本调整,例如php7.4 - fpm
sudo systemctl enable php8.1 - fpm
二、配置 Nginx 以支持 PHP
创建站点配置文件:Nginx 的配置文件通常位于/etc/nginx/nginx.conf,但我们一般会为每个网站创建一个独立的配置文件,存放在/etc/nginx/sites - available/目录下。以创建一个名为your_domain.conf的配置文件为例,执行以下命令:
sudo nano /etc/nginx/sites - available/your_domain.conf
在该文件中,输入以下基本配置内容
server {
listen 80; # 监听80端口
server_name your_domain.com www.your_domain.com; # 你的域名,可以替换为IP地址
root /var/www/html; # 网站根目录,PHP文件将放置于此
index index.php index.html index.htm; # 默认索引文件
# 处理所有请求
location / {
try_files $uri $uri/ =404; # 尝试查找文件或目录,若不存在则返回404
}
# 处理所有.php文件的请求
location ~ \.php$ {
# 包含Nginx处理FastCGI的通用配置片段
# Ubuntu/Debian通常是这个路径:
include snippets/fastcgi - php.conf;
# CentOS/RHEL可能需要手动配置fastcgi_pass和fastcgi_param
# fastcgi_pass 127.0.0.1:9000; # 如果PHP - FPM监听TCP端口
fastcgi_pass unix:/var/run/php/php8.1 - fpm.sock; # 推荐使用Unix socket,性能更好,根据PHP版本调整sock文件路径
# 设置SCRIPT_FILENAME,这是FastCGI协议要求的,告诉PHP - FPM要执行哪个脚本
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 包含FastCGI参数,这些是Nginx和PHP - FPM通信所需的一些环境变量
include fastcgi_params;
}
# 阻止访问.htaccess文件,虽然Nginx不使用它,但这是个好习惯
location ~ /\.ht {
deny all;
}
# 可选:日志配置
access_log /var/log/nginx/your_domain_access.log;
error_log /var/log/nginx/your_domain_error.log;
}
创建软链接并测试配置:配置完成后,保存并关闭文件。然后,将站点配置文件链接到/etc/nginx/sites - enabled/目录,使 Nginx 加载该配置:
sudo ln -s /etc/nginx/sites - available/your_domain.conf /etc/nginx/sites - enabled/
接着,测试 Nginx 配置是否有语法错误:
sudo nginx -t
如果没有错误提示,重启 Nginx 服务使配置生效:
sudo systemctl restart nginx
三、测试 PHP 是否正常工作
创建测试 PHP 文件:在网站根目录/var/www/html下创建一个测试文件,例如info.php。执行以下命令:
sudo nano /var/www/html/info.php
在文件中输入以下内容:
phpinfo();
?>
存并关闭文件。
访问测试文件:在浏览器中输入http://your_domain.com/info.php(将your_domain.com替换为你的域名或服务器 IP 地址)。如果能看到 PHP 的详细信息页面,说明 Nginx 与 PHP - FPM 已成功配置,网站可以正常运行 PHP 脚本。
通过以上步骤,你已经成功在服务器上配置了 Nginx + PHP 环境来搭建网站。后续,你可以将自己的网站代码上传到网站根目录,根据项目需求进一步开发和优化网站。同时,为了保障网站的安全性,建议及时更新 Nginx、PHP 及相关组件,并合理设置服务器的防火墙和安全策略。