在 Rocky Linux 上部署 LNMP 环境:从零到一的完整实践
LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是最经典的 Web 服务架构之一,广泛用于个人博客、企业网站和各类 PHP 应用的部署。Rocky Linux 作为 CentOS 的替代品,继承了 RHEL 生态的稳定性,非常适合用作生产环境的服务器系统。本文将带你一步步在 Rocky Linux 9 上搭建一套完整的 LNMP 环境。
环境准备
在开始之前,确保你有一台运行 Rocky Linux 9 的服务器,并拥有 root 权限或 sudo 权限。首先更新系统软件包,确保所有组件都是最新的:
sudo dnf update -y
如果你的服务器开启了防火墙和 SELinux,建议先做以下处理:
# 关闭防火墙(生产环境建议配置规则而非直接关闭)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 关闭 SELinux
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
安装 Nginx
Rocky Linux 默认仓库中的 Nginx 版本可能偏旧,推荐使用 Nginx 官方仓库来获取最新版本。首先创建 Nginx 的 YUM 源配置文件:
sudo vim /etc/yum.repos.d/nginx.repo
写入以下内容:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
然后安装 Nginx:
sudo dnf install -y nginx
启动 Nginx 并设置开机自启:
sudo systemctl enable --now nginx
验证安装是否成功:
nginx -v
在浏览器中访问服务器 IP,看到 “Welcome to nginx!” 页面即表示 Nginx 安装成功。
安装数据库
Rocky Linux 9 的 AppStream 仓库中默认提供了 MySQL 8.0 和 MariaDB,你可以根据需求选择其一。
方案一:安装 MySQL 8.0(推荐)
sudo dnf install -y mysql-server
启动并设置开机自启:
sudo systemctl enable --now mysqld
运行安全配置脚本,设置 root 密码、移除匿名用户、禁止 root 远程登录等:
sudo mysql_secure_installation
方案二:安装 MariaDB
如果你更倾向于使用 MariaDB,可以执行:
sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
验证数据库安装:
mysql --version
安装 PHP
Rocky Linux 默认仓库中的 PHP 版本较旧,推荐使用 Remi 仓库来安装较新的 PHP 版本(如 PHP 8.1 或 8.2)。
首先安装 EPEL 和 Remi 仓库:
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
重置 PHP 模块并启用 Remi 的 PHP 8.1 模块:
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y
安装 PHP 及常用扩展:
sudo dnf install -y php-fpm php-mysqlnd php-gd php-cli php-curl \
php-mbstring php-bcmath php-zip php-opcache php-xml php-json php-intl
启动 PHP-FPM 并设置开机自启:
sudo systemctl enable --now php-fpm
关键配置:修改 PHP-FPM 运行用户
默认情况下,PHP-FPM 以 apache 用户运行,但我们需要它配合 Nginx 工作,因此需要修改配置文件:
sudo vim /etc/php-fpm.d/www.conf
找到以下两行:
user = apache
group = apache
修改为:
user = nginx
group = nginx
同时确保 listen 指令使用的是 Unix Socket:
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
保存后重启 PHP-FPM:
sudo systemctl restart php-fpm
配置 Nginx 支持 PHP
接下来需要配置 Nginx,使其能够将 PHP 请求转发给 PHP-FPM 处理。创建或编辑 Nginx 的默认站点配置文件:
sudo vim /etc/nginx/conf.d/default.conf
写入以下配置:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
检查 Nginx 配置语法是否正确:
sudo nginx -t
确认无误后重启 Nginx:
sudo systemctl restart nginx
验证部署
创建一个 PHP 测试文件来验证整个 LNMP 环境是否正常工作:
sudo vim /usr/share/nginx/html/info.php
写入以下内容:
<?php
phpinfo();
在浏览器中访问 http://你的服务器IP/info.php,如果能看到 PHP 信息页面,说明 LNMP 环境已经部署成功!
安全提示: 测试完成后,记得删除
info.php文件,避免泄露服务器敏感信息。
sudo rm /usr/share/nginx/html/info.php
常见问题排查
- 502 Bad Gateway:通常是 PHP-FPM 未启动或 Socket 路径配置错误,检查
php-fpm服务状态和www.conf中的listen路径。 - PHP 文件被直接下载:Nginx 未正确配置 PHP 解析规则,检查
location ~ \.php$块是否正确。 - 权限问题:确保网站目录的所有者为
nginx用户:sudo chown -R nginx:nginx /usr/share/nginx/html sudo chmod -R 755 /usr/share/nginx/html
总结
通过以上步骤,你已经成功在 Rocky Linux 9 上部署了一套完整的 LNMP 环境。这套架构稳定、高效,足以支撑大多数 PHP 应用的运行需求。后续你还可以在此基础上配置 HTTPS(如使用 Let’s Encrypt)、安装 Redis 缓存、优化 Nginx 和 PHP 参数等,进一步提升服务器性能。
- 点赞
- 收藏
- 关注作者
评论(0)