在 Ubuntu Server 24.04 (Noble Numbat) 上搭建 LNMP 环境(Linux + Nginx + MariaDB + PHP)是一个非常标准的运维任务。Ubuntu 24.04 默认的软件源中已经包含了较新的稳定版本,我们可以直接使用 apt 进行安装和配置。
以下是详细的分步操作指南:
1. 更新系统软件包
首先,确保系统的软件包列表是最新的,并安装必要的工具(如 curl, wget, software-properties-common)。
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget gnupg software-properties-common -y
2. 安装 Nginx
Nginx 是 Web 服务器组件。
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
检查状态:
sudo systemctl status nginx
如果看到 "active (running)",说明 Nginx 安装成功。
防火墙配置(可选):
如果你开启了 UFW 防火墙,需要放行 HTTP 流量:
sudo ufw allow 'Nginx Full'
# 或者只允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
3. 安装 MariaDB
MariaDB 是 MySQL 的开源分支,作为数据库后端。
sudo apt install mariadb-server mariadb-client -y
安全初始化脚本:
运行 mysql_secure_installation 来设置 root 密码、移除匿名用户等。
sudo mysql_secure_installation
建议操作:
- 输入
Y启用 VALIDATE PASSWORD PLUGIN(可选,生产环境建议开启)。 - 设置一个强密码作为 root 用户密码。
- 回答
Y移除 anonymous-user。 - 回答
Y移除 remote-root-login。 - 回答
Y删除 test database。 - 回答
Y重新加载权限表。
验证数据库服务:
sudo systemctl status mariadb
4. 安装 PHP 及扩展
Ubuntu 24.04 默认可能包含 PHP 8.2。为了配合 Nginx 使用,我们需要安装 php-fpm 以及常用的扩展(如 mbstring, xml, curl, zip 等)。
安装 PHP 核心及 FPM:
sudo apt install php-fpm php-mysql php-gd php-json php-curl php-mbstring php-xml php-zip php-bcmath -y
注意:Ubuntu 24.04 默认通常已安装 PHP 8.2。如果你需要特定版本(如 8.3),可能需要添加 Ondrej PPA 源,但通常官方源版本已足够稳定。
验证 PHP 版本:
php -v
5. 配置 Nginx 以支持 PHP
这是最关键的一步,需要将 Nginx 配置为将 .php 文件请求转发给 PHP-FPM 处理。
备份默认配置:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
编辑配置文件:
sudo nano /etc/nginx/sites-available/default
找到 location ~ .php$ { ... } 部分,并确保它看起来像下面这样(Ubuntu 24.04 默认配置通常已正确,但需确认 socket 路径):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# PHP-FPM 配置
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 注意:版本号需与安装的 PHP 版本一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
如何确认 Socket 路径?
查看/etc/php/8.2/fpm/pool.d/www.conf文件中的listen =行,或者运行ls /run/php/查看实际存在的 socket 文件名。如果是 PHP 8.2,通常是php8.2-fpm.sock。
测试配置并重启 Nginx:
sudo nginx -t
# 如果测试通过,执行以下命令
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
6. 创建测试页面
创建一个简单的 PHP 文件来验证整个链路是否通畅。
sudo nano /var/www/html/info.php
粘贴以下内容:
<?php
phpinfo();
?>
保存并退出(Ctrl+O, Enter, Ctrl+X)。
访问测试:
在浏览器中访问服务器的 IP 地址:
http://<你的服务器IP>/info.php
- 如果看到 PHP 信息页面,说明 LNMP 环境搭建成功。
- 如果显示代码或 404 错误,请检查 Nginx 日志 (
/var/log/nginx/error.log) 和 PHP-FPM 日志 (/var/log/php8.2-fpm.log)。
7. 清理工作(可选)
测试完成后,建议删除测试文件以防止泄露敏感信息:
sudo rm /var/www/html/info.php
常见问题排查
-
502 Bad Gateway:
- 通常是因为 Nginx 找不到 PHP-FPM 的 socket。请检查
nginx.conf或站点配置中的fastcgi_pass路径是否正确(例如unix:/run/php/php8.2-fpm.sockvsunix:/run/php/php8.1-fpm.sock)。 - 检查 PHP-FPM 服务是否运行:
systemctl status php8.2-fpm。
- 通常是因为 Nginx 找不到 PHP-FPM 的 socket。请检查
-
权限问题:
- 确保
/var/www/html目录的所有者是www-data:sudo chown -R www-data:www-data /var/www/html
- 确保
-
防火墙拦截:
- 确保端口 80 和 443 已开放:
sudo ufw status。
- 确保端口 80 和 443 已开放:
至此,你的 Ubuntu Server 24.04 LNMP 环境已完全就绪,可以开始部署 WordPress、Laravel 或其他 Web 应用了。
轻量云Cloud