在 Ubuntu Server 24.04 (Noble Numbat) 上搭建 LNMP 环境(Linux + Nginx + MariaDB + PHP)是一个非常标准且高效的操作。Ubuntu 24.04 默认的软件源中已经包含了较新版本的 Nginx、MariaDB 和 PHP,因此我们可以直接使用 apt 进行安装,无需添加额外的第三方源(如 Ondřej Surý 的 PHP 源),除非你需要特定旧版本的 PHP。
以下是完整的安装步骤,包括配置、安全加固以及测试验证。
1. 更新系统软件包
首先,确保系统的软件包列表是最新的,并安装必要的构建工具(用于后续编译或优化)。
sudo apt update && sudo apt upgrade -y
sudo apt install curl gnupg lsb-release -y
2. 安装 Nginx Web 服务器
Ubuntu 24.04 的默认仓库中包含 Nginx。
sudo apt install nginx -y
安装完成后,启动并设置开机自启:
sudo systemctl enable --now nginx
验证 Nginx:
查看状态:
systemctl status nginx
在浏览器访问你的服务器 IP 地址(例如 http://<你的服务器IP>),如果看到 "Welcome to nginx!" 页面,说明安装成功。
3. 安装 MariaDB 数据库
MariaDB 是 MySQL 的分支,兼容性极好。Ubuntu 24.04 推荐使用官方推荐的 MariaDB 版本。
sudo apt install mariadb-server -y
安全初始化数据库:
运行 mysql_secure_installation 脚本,这将引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。
sudo mysql_secure_installation
- 输入当前 root 密码(如果是首次安装,直接按回车即可,因为默认没有密码)。
- Validate Password Component: 询问是否启用密码强度检查,建议选
Y并按提示设置强密码。 - Remove anonymous users: 选
Y。 - Disallow root login remotely: 选
Y。 - Remove test database: 选
Y。 - Reload privilege tables: 选
Y。
4. 安装 PHP 及常用扩展
我们需要安装 PHP-FPM(FastCGI Process Manager),这是 Nginx 与 PHP 交互的标准方式。同时安装常用的数据库驱动和字符处理扩展。
sudo apt install php-fpm php-mysql php-gd php-json php-curl php-mbstring php-intl php-xml php-zip -y
注意:在安装过程中可能会弹出交互式配置界面(例如选择要安装的 PHP 版本),通常直接按回车确认默认选项即可。
5. 配置 Nginx 以支持 PHP
默认情况下,Nginx 不会自动识别 .php 文件。我们需要修改站点配置文件。
A. 创建测试文件
为了验证配置,先创建一个简单的 PHP 信息页面:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
B. 修改 Nginx 配置文件
编辑默认站点的配置文件(通常是 /etc/nginx/sites-available/default):
sudo nano /etc/nginx/sites-available/default
找到 location / 块,将其修改为如下内容,确保 Nginx 将 .php 请求转发给 PHP-FPM:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html index.php; # 确保 index.php 排在前面
server_name _;
location / {
try_files $uri $uri/ =404;
}
# --- PHP 配置开始 ---
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 注意:Ubuntu 24.04 默认通常是 PHP 8.3,请根据实际版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# --- PHP 配置结束 ---
}
关键点说明:
fastcgi_pass中的 socket 路径取决于你安装的 PHP 版本。Ubuntu 24.04 默认通常安装的是 PHP 8.3。你可以运行ls /run/php/来确认具体的 socket 文件名(例如php8.3-fpm.sock)。如果你的系统安装了其他版本,请相应修改。
C. 设置权限
确保 Nginx 用户有权限读取文件:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
D. 重启服务
保存退出编辑器后,重载 Nginx 并重启 PHP-FPM:
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm # 请根据实际版本号调整,如 php8.2-fpm
6. 防火墙配置 (UFW)
如果你开启了 Ubuntu 的 UFW 防火墙,需要放行 HTTP (80) 和 HTTPS (443) 端口。
sudo ufw allow 'Nginx Full'
# 或者手动放行
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
7. 最终验证
-
测试 Nginx 基础功能:
在浏览器访问http://<你的服务器IP>/,应该能看到 Nginx 欢迎页(如果index.html存在)或空白页(如果只创建了 info.php)。 -
测试 PHP 解析:
在浏览器访问http://<你的服务器IP>/info.php。- 成功:你会看到一个详细的 PHP 配置信息页面。
- 失败:如果你看到的是源代码文本而不是页面,说明 Nginx 没有正确转发给 PHP-FPM(请检查第 5 步的配置和 socket 路径)。
-
测试数据库连接:
在服务器上执行以下命令,尝试用 PHP 连接数据库:sudo nano /var/www/html/db_test.php输入以下内容:
<?php $conn = new mysqli("localhost", "root", "YOUR_MYSQL_ROOT_PASSWORD", "mysql"); if ($conn->connect_error) { die("连接失败:" . $conn->connect_error); } echo "数据库连接成功!"; $conn->close(); ?>(请将
YOUR_MYSQL_ROOT_PASSWORD替换为你在第 3 步设置的密码)在浏览器访问
http://<你的服务器IP>/db_test.php,如果显示“数据库连接成功”,则整个 LNMP 环境搭建完毕。
常见问题排查
- 502 Bad Gateway:通常是因为 Nginx 找不到 PHP-FPM 的 socket。请再次检查
/etc/nginx/sites-available/default中的fastcgi_pass路径是否与/run/php/下的实际文件一致。 - 权限错误:如果无法写入文件或上传,检查
/var/www/html的属主是否为www-data。 - SELinux/AppArmor:Ubuntu 默认使用 AppArmor,通常不需要额外配置,但如果遇到奇怪的限制,可以检查
dmesg | grep apparmor。
至此,你的 Ubuntu 24.04 LNMP 环境已准备就绪,可以开始部署网站了。
CLOUD云枢