从零开始搭建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 LTS
  • CentOS Stream 9
  • Debian 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
如果看到以下的彩色的 PHP 信息页面,恭喜你!LEMP 环境已成功搭建。
本文已在 Ubuntu 22.04、Debian 12、Rocky Linux 9、CentOS Stream 8 上实测通过。
阅读剩余
THE END