在 Ubuntu Server 24.04 (Noble Numbat) 上搭建 LNMP 环境是一个标准的运维任务。由于 Ubuntu 24.04 默认使用较新的软件源,我们将安装最新稳定版的 Nginx、MariaDB 和 PHP 8.3(Ubuntu 24.04 默认包含)。
以下是完整的自动化安装与配置步骤:
1. 系统更新与基础依赖
首先更新软件包列表并安装必要的工具。
sudo apt update && sudo apt upgrade -y
sudo apt install curl gnupg ca-certificates -y
2. 安装 MariaDB (数据库)
Ubuntu 24.04 推荐使用 MariaDB 替代 MySQL。我们添加官方仓库以确保获取最新版本。
添加 MariaDB 仓库:
# 导入 GPG 密钥
curl -sS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
注意:如果脚本自动检测到了 Ubuntu 版本,它会直接写入正确的源。如果没有,请手动检查 /etc/apt/sources.list.d/mariadb.list。
安装 MariaDB:
sudo apt update
sudo apt install mariadb-server -y
安全初始化:
运行 mysql_secure_installation 设置 root 密码并移除测试库。
sudo mysql_secure_installation
按提示操作:
- Enter current password for root: (直接回车,初始无密码)
- Set root password? [Y/n]: y
- New password: (输入强密码)
- Re-enter new password: (再次输入)
- Remove anonymous users? [Y/n]: y
- Disallow root login remotely? [Y/n]: y
- Remove test database and access to it? [Y/n]: y
- Reload privilege tables now? [Y/n]: y
3. 安装 Nginx (Web 服务器)
Ubuntu 24.04 的默认源中已包含最新的 Nginx 版本。
安装 Nginx:
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl enable --now nginx
检查防火墙:
确保允许 HTTP (80) 和 HTTPS (443) 流量。
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
4. 安装 PHP 及相关模块
我们需要安装 PHP 8.3 及其常用的扩展(如 FPM, GD, XML, cURL 等),以便处理动态网页。
安装 PHP 核心及常用扩展:
sudo apt install php-fpm php-mysql php-gd php-curl php-mbstring php-xml php-zip php-bcmath php-intl -y
验证安装:
创建一个测试文件来确认 PHP 能否正确解析。
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
访问 http://你的服务器IP/info.php 可以看到 PHP 信息页面。生产环境中请务必删除此文件。
5. 配置 Nginx 以支持 PHP
默认情况下,Nginx 只处理静态文件。我们需要修改配置文件,使其将 .php 请求转发给 PHP-FPM。
编辑默认站点配置:
sudo nano /etc/nginx/sites-available/default
找到 server 块,修改 location ~ .php$ 部分,并确保 index 指令包含 index.php。配置如下:
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; # 24.04 默认是 8.3 版本
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意:如果你的 PHP 版本不是 8.3,请将 php8.3-fpm.sock 替换为对应的版本号(如 php8.2-fpm.sock)。
重启 Nginx 使配置生效:
sudo nginx -t # 先测试配置语法
sudo systemctl restart nginx
6. 创建测试网站
为了验证整个 LNMP 链路是否通畅,我们可以创建一个简单的测试脚本。
cat <<EOF | sudo tee /var/www/html/index.php
<?php
header('Content-Type: text/html; charset=utf-8');
echo "<h1>LNMP 环境测试成功!</h1>";
echo "<p>PHP 版本:" . phpversion() . "</p>";
echo "<p>Nginx 正在运行。</p>";
echo "<p>MariaDB 连接测试...</p>";
try {
$pdo = new PDO("mysql:host=localhost;dbname=test_db", "root", "YOUR_ROOT_PASSWORD");
echo "<p style='color:green'>✅ MariaDB 连接成功!</p>";
} catch (PDOException $e) {
// 如果还没创建 test_db,这里会报错,但这不影响 PHP 本身工作
echo "<p style='color:orange'>⚠️ 数据库未创建或密码错误(这是正常的,只要 PHP 能加载就算成功)。</p>";
}
?>
EOF
(请将上面的 YOUR_ROOT_PASSWORD 替换为你刚才设置的 MariaDB root 密码)
7. 最终验证
- 浏览器访问:打开浏览器访问
http://你的服务器IP。- 你应该看到"LNMP 环境测试成功!”以及 PHP 版本信息。
- 检查服务状态:
sudo systemctl status nginx sudo systemctl status mariadb sudo systemctl status php8.3-fpm所有服务应显示
active (running)。
常见问题排查
- 502 Bad Gateway:通常是因为 Nginx 找不到 PHP-FPM 的 socket 文件。检查
/etc/nginx/sites-available/default中的fastcgi_pass路径是否正确,并确认 PHP-FPM 服务是否正在运行 (systemctl status php8.3-fpm)。 - 权限问题:如果网站目录无法写入,可能需要调整所有者:
sudo chown -R www-data:www-data /var/www/html。
现在,你的 Ubuntu Server 24.04 已经拥有了一个完整的、现代化的 LNMP 环境。
CLOUD技术博