在 AlmaLinux 上部署 LNMP 环境完整指南
LNMP 是一套经典的 Web 服务架构,由 Linux + Nginx + MySQL/MariaDB + PHP 四个组件组成。AlmaLinux 作为 CentOS 的社区继任者,以其出色的稳定性和兼容性,成为部署 LNMP 环境的理想选择。本文将手把手带你从零开始在 AlmaLinux 上搭建一套完整的 LNMP 环境。
一、环境准备
在开始之前,请确保你已拥有一台安装了 AlmaLinux 的服务器,并具备 root 或 sudo 权限。
1. 更新系统
sudo dnf update -y
2. 安装 EPEL 仓库
EPEL 仓库提供了大量额外的软件包,是后续安装的基础:
sudo dnf install epel-release -y
3. 配置防火墙
开放 HTTP(80)和 HTTPS(443)端口,确保外部可以正常访问 Web 服务:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
4. 关闭 SELinux(可选)
SELinux 可能会阻止 Nginx 与 PHP-FPM 之间的通信,开发测试环境建议关闭:
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
💡 提示:生产环境中建议保留 SELinux 并为其配置正确的安全策略,而非直接关闭。
二、安装 Nginx
Nginx 是高性能的 Web 服务器和反向代理服务器,负责处理用户请求。
sudo dnf install nginx -y
安装完成后,启动 Nginx 并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装是否成功:
systemctl status nginx
此时在浏览器中访问 http://你的服务器IP,如果看到 Nginx 的欢迎页面,说明 Nginx 已正常运行。
三、安装 MariaDB
MariaDB 是 MySQL 的开源分支,完全兼容 MySQL,是 AlmaLinux 默认推荐的数据库。
sudo dnf install mariadb mariadb-server -y
启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
运行安全初始化脚本,设置 root 密码、移除匿名用户、禁止远程 root 登录等:
sudo mysql_secure_installation
该脚本会引导你完成以下操作:
- 设置 root 密码
- 移除匿名用户(建议 Y)
- 禁止 root 远程登录(建议 Y)
- 删除 test 数据库(建议 Y)
- 刷新权限表(建议 Y)
验证数据库是否正常运行:
mysql -u root -p
输入密码后能成功进入数据库命令行,即表示安装成功。
四、安装 PHP 及相关扩展
PHP 是服务端脚本语言,负责处理动态内容。AlmaLinux 支持通过模块流(Module Stream)选择 PHP 版本。
1. 选择 PHP 版本(可选)
如果需要特定版本(如 PHP 8.1),可以先配置模块流:
sudo dnf module reset php -y
sudo dnf module enable php:8.1 -y
2. 安装 PHP 及常用扩展
sudo dnf install php php-fpm php-opcache php-gd php-curl \
php-mysqlnd php-pdo php-xml php-json php-mbstring php-zip -y
启动 PHP-FPM 并设置开机自启:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
验证安装:
php -v
五、配置 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;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
}
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;
}
}
💡 注意:
fastcgi_pass的路径需要与 PHP-FPM 的监听方式一致。AlmaLinux 默认使用 Unix Socket(/run/php-fpm/www.sock),你也可以改为 TCP 方式127.0.0.1:9000。
检查配置语法并重载 Nginx:
sudo nginx -t
sudo nginx -s reload
六、验证 LNMP 环境
创建一个 PHP 测试文件来验证整个环境是否联通:
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 路径错误 | 检查 systemctl status php-fpm,核对 fastcgi_pass 路径 |
| PHP 文件直接下载 | Nginx 未正确配置 PHP 解析 | 检查 location ~ \.php$ 配置块是否完整 |
| 403 Forbidden | 文件权限问题 | 执行 sudo chown -R nginx:nginx /usr/share/nginx/html |
| 无法访问页面 | 防火墙未开放端口 | 检查 firewall-cmd --list-services |
八、总结
至此,你已经成功在 AlmaLinux 上部署了一套完整的 LNMP 环境,包括:
- ✅ Nginx:高性能 Web 服务器
- ✅ MariaDB:稳定可靠的数据库
- ✅ PHP + PHP-FPM:动态内容处理引擎
- ✅ Nginx + PHP-FPM 联动:完整的请求处理链路
这套环境可以作为 WordPress、Laravel、ThinkPHP 等主流 Web 应用的运行基础。后续你还可以进一步配置 HTTPS(Let’s Encrypt)、优化 PHP-FPM 参数、设置数据库主从复制等,逐步打造生产级别的服务架构。
- 点赞
- 收藏
- 关注作者
评论(0)