从零开始搭建Linux-WEB环境:通用的 Nginx + PHP + MySQL 安装指南(适配所有主流 Linux 发行版)
实测可行的 LEMP(Nginx + PHP + MySQL)环境搭建教程。它不依赖某个特定版本,而是教你理解原理 + 自主适配,让你无论面对 Ubuntu 24.04、Debian 12、CentOS Stream、Rocky Linux 还是 AlmaLinux,都能从容应对。
第一步:确认你的系统身份
在动手前,请先运行以下命令:
cat /etc/os-release | grep PRETTY_NAME
你会看到类似:
Ubuntu 22.04.3 LTSCentOS Stream 9Debian GNU/Linux 12 (bookworm)Rocky Linux 8.9 (Green Obsidian)

记住这个信息!接下来我们会根据它选择正确的包管理器和仓库。
小知识:
Debian 系(Ubuntu、Debian)用 apt;
RHEL 系(CentOS、Rocky、Alma、Fedora)用 dnf(新)或 yum(旧)。
切换到 root 用户 或 以管理员权限执行命令
方法一:使用 sudo -i (推荐)
切换到 root 用户的交互式 shell(加载 root 环境):
sudo -i
- 会提示你输入当前用户的密码(不是 root 密码)。
- 成功后,命令提示符通常变为
root@hostname:~#。 - 退出时输入
exit或按Ctrl+D。
前提:你的用户必须属于 sudo 组(Debian/Ubuntu 默认安装时创建的首个用户通常已加入)。
方法二:使用 su -
su -
- 会提示输入 root 用户的密码。
- 如果系统未设置 root 密码(如 Ubuntu 默认禁用 root 登录),此方法会失败。
在 Ubuntu 中,默认 root 账户被锁定,建议使用 sudo -i 而非 su。
第二步:更新系统 & 安装基础工具
无论哪个系统,先做这件事:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
# RHEL/CentOS/Rocky/Alma
sudo dnf update -y # CentOS 8+ / Rocky / Alma
# 或
sudo yum update -y # CentOS 7(已 EOL,不推荐)
同时安装常用工具(方便后续排查):
# Debian/Ubuntu
sudo apt install curl wget gnupg lsb-release -y
# RHEL 系
sudo dnf install curl wget gnupg redhat-lsb-core -y
第三步:安装 Nginx —— Web站的入口
安装命令
# Debian/Ubuntu
sudo apt install nginx -y
# RHEL 系
sudo dnf install nginx -y
启动并设为开机自启
sudo systemctl enable --now nginx
查看Nginx服务状态:
systemctl status nginx
如下图所示,说明nginx服务已成功运行:

验证:浏览器访问 http://你的服务器IP ,应看到 "Welcome to nginx!" 页面。如下图所示:

如果打不开?请检查防火墙80端口是否已开放:
# Ubuntu:
sudo ufw allow 'Nginx Full'
# CentOS:
sudo firewall-cmd --permanent --add-service={http,https} && sudo firewall-cmd --reload
第四步:选择你的数据库 —— MySQL 还是 MariaDB?
两者皆可,MariaDB 是 MySQL 的开源分支,兼容性极好,且社区活跃。推荐新手用 MariaDB,更轻量、无 Oracle 限制。
安装 MariaDB(通用推荐):
# Debian/Ubuntu
sudo apt install mariadb-server mariadb-client -y
# RHEL 系
sudo dnf install mariadb-server mariadb -y
启动服务并设为开机自启:
sudo systemctl enable --now mariadb
查看MariaDB服务状态:
sudo systemctl status mariadb
如下图所示,说明nginx服务已成功运行:
运行安全初始化(交互式,按提示操作):
sudo mysql_secure_installation
建议设置 root 密码,并回答 "Y" 到所有安全问题。
若坚持用 MySQL(官方版)
仅当你明确需要 MySQL 8.0 特性时才选。需添加官方仓库:
# Ubuntu 示例
wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb
sudo apt update
sudo apt install mysql-server -y
注意:MySQL 安装后首次启动会生成临时密码,需从日志中获取:
sudo grep 'temporary password' /var/log/mysqld.log
第五步:安装 PHP —— 动态内容的引擎
Nginx 本身不能执行 PHP,必须通过 PHP-FPM(FastCGI 进程管理器)来处理。
关键原则:不要用系统默认的老旧 PHP!
很多旧教程直接 apt install php,结果装了 PHP 7.4(已停止支持)。我们要装 PHP 8.1 或更高。
方法:使用官方或可信第三方仓库
Ubuntu (使用 Ondřej Surý 仓库)
#Ubuntu
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-json -y
可替换 8.3 为 8.2 或 8.1,根据需求选择。
Debian
这会安装 Debian 默认仓库中提供的 PHP 版本(例如 Debian 13 默认提供 PHP 8.4)。
#Debian
sudo apt update
sudo apt upgrade -y
sudo apt install php -y
sudo apt install php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-bcmath php-json -y
RHEL 系(使用 Remi 仓库)
# 安装 EPEL 和 Remi
sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-$(lsb_release -rs | cut -d. -f1).rpm -y
# 启用 PHP 8.3 模块
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.3 -y
# 安装
sudo dnf install php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-json -y
启动 PHP-FPM
# Ubuntu(服务名含版本号)
sudo systemctl enable --now php8.3-fpm
# Debian(服务名含版本号)
sudo systemctl enable --now php8.4-fpm
# RHEL(服务名为 php-fpm)
sudo systemctl enable --now php-fpm
查看PHP-FPM服务状态:
使用 systemctl 命令检查 PHP-FPM 服务状态:
如果系统中安装了 PHP-FPM(FastCGI Process Manager),可以通过以下命令检查其状态:
systemctl status php-fpm
或者对于特定版本:
systemctl status php8.4-fpm
如下图所示,说明PHP-FPM服务已成功运行:
重要:记录 PHP-FPM 的监听地址!
运行以下命令查看实际 socket 路径:
# Ubuntu
sudo grep "listen =" /etc/php/8.3/fpm/pool.d/www.conf
# Debian
sudo grep "listen =" /etc/php/8.4/fpm/pool.d/www.conf
# RHEL
sudo grep "listen =" /etc/php-fpm.d/www.conf
listen = /run/php/php8.3-fpm.sock(Unix socket,推荐)listen = 127.0.0.1:9000(TCP,性能略低)

第六步:让 Nginx 和 PHP “握手”
这是最容易出错的一步!不要盲目复制网上的配置,要根据你的 PHP-FPM 监听方式调整。
编辑 Nginx 默认站点
# Ubuntu(推荐使用 sites-available)
sudo nano /etc/nginx/sites-available/default
# RHEL(通常在 conf.d 下)
sudo nano /etc/nginx/conf.d/default.conf
插入以下通用配置(已适配 socket/TCP)
server {
listen 80;
server_name _; # 匹配任意域名
root /var/www/html;
index index.php index.html info.php;
# 静态文件直接返回
location / {
try_files $uri $uri/ =404;
}
# PHP 处理规则
location ~ \.php$ {
# 根据你的系统选择下面其中一行!
# Ubuntu 示例(Unix socket):
#fastcgi_pass unix:/run/php/php8.3-fpm.sock;
# Debian 示例(Unix socket):
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
# RHEL 示例(Unix socket):
# fastcgi_pass unix:/run/php-fpm/www.sock;
# 如果是 TCP 模式(127.0.0.1:9000),则用:
# fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
# 禁止访问 .htaccess 等敏感文件
location ~ /\.(ht|git|svn) {
deny all;
}
}
关键提示:注释掉不用的 fastcgi_pass 行,只保留与你系统匹配的那一行!
测试并重载 Nginx
sudo nginx -t # 检查语法
sudo systemctl reload nginx

设置网站目录权限:
# Ubuntu/Debian
sudo chown -R www-data:www-data /var/www/html
# RHEL
sudo chown -R nginx:nginx /var/www/html
第七步:终极验证 —— 创建 phpinfo 页面
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
http://你的服务器IP/info.php
本文已在 Ubuntu 22.04、Debian 12、Rocky Linux 9、CentOS Stream 8 上实测通过。