在 Ubuntu Server 24.04 (Noble Numbat) 上安装 LNMP(Linux + Nginx + MariaDB + PHP)环境是一个非常标准的运维任务。Ubuntu 24.04 默认的软件源中已经包含了较新版本的 Nginx、MariaDB 和 PHP,因此可以直接使用 apt 进行安装,无需添加额外的第三方源即可满足大多数开发需求。
以下是详细的分步操作指南:
1. 更新系统软件包
首先,确保系统的软件包列表是最新的,并升级已安装的软件,以减少潜在的安全漏洞和兼容性问题。
sudo apt update && sudo apt upgrade -y
2. 安装 Nginx Web 服务器
Ubuntu 24.04 的官方源中包含 Nginx 的稳定版本。
sudo apt install nginx -y
安装完成后,检查 Nginx 状态并启动服务:
sudo systemctl status nginx
如果显示 active (running),则说明安装成功。
配置防火墙(可选但推荐)
如果你启用了 UFW 防火墙,需要允许 HTTP 流量:
sudo ufw allow 'Nginx HTTP'
3. 安装 MariaDB 数据库
MariaDB 是 MySQL 的开源分支,性能优秀且完全兼容。Ubuntu 24.04 默认使用 MariaDB 作为替代方案。
sudo apt install mariadb-server -y
安装后,建议运行安全脚本以增强数据库安全性(设置 root 密码、移除匿名用户等):
sudo mysql_secure_installation
按照提示操作:
- 询问是否启用
VALIDATE PASSWORD COMPONENT?输入N(除非你有严格的合规要求)。 - 设置
root用户密码。 - 删除匿名账户?输入
Y。 - 禁止 root 远程登录?输入
Y。 - 删除测试数据库?输入
Y。 - 重新加载权限表?输入
Y。
4. 安装 PHP 及相关模块
我们需要安装 PHP-FPM(FastCGI Process Manager),这是 Nginx 与 PHP 交互的标准方式。同时,为了支持常见的网站功能(如 MySQL 连接、字符串处理、GD 图像处理等),需要安装一系列扩展。
sudo apt install php-fpm php-mysql php-gd php-curl php-mbstring php-xml php-zip php-intl -y
注意:在安装过程中,系统可能会询问你选择哪个 PHP 版本。通常直接回车选择默认版本(通常是最新稳定版)即可。
5. 配置 Nginx 以支持 PHP
默认情况下,Nginx 配置文件可能指向默认的静态文件目录,我们需要修改它来启用 PHP 解析。
A. 创建测试目录
创建一个简单的 PHP 测试文件来验证配置:
sudo mkdir -p /var/www/html/test
sudo nano /var/www/html/test/info.php
在文件中粘贴以下内容:
<?php
phpinfo();
?>
保存并退出 (Ctrl+O, Enter, Ctrl+X)。
B. 修改 Nginx 站点配置
编辑默认站点的配置文件(通常位于 /etc/nginx/sites-available/default):
sudo nano /etc/nginx/sites-available/default
找到 location ~ .php$ { ... } 部分。如果不存在,请添加;如果存在,请确保配置如下所示(关键是将 fastcgi_pass 指向 unix:/run/php/php8.x-fpm.sock,具体版本号需根据实际安装的 PHP 版本调整):
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 处理逻辑
location ~ .php$ {
include snippets/fastcgi-php.conf;
# 关键点:确保 socket 路径与安装的 PHP 版本一致
# Ubuntu 24.04 默认通常是 php8.3
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注:如果不确定 PHP 版本,可以运行 ls /run/php/ 查看具体的 socket 文件名(例如 php8.3-fpm.sock)。
C. 测试并重载 Nginx
在重启服务前,先检查配置文件语法是否正确:
sudo nginx -t
如果输出 syntax is ok 和 test is successful,则继续重载:
sudo systemctl reload nginx
6. 验证安装结果
现在打开浏览器,访问你的服务器 IP 地址或域名:
- 访问
http://<你的服务器IP>/test/info.php
如果看到一张包含详细 PHP 信息的表格,说明 LNMP 环境已成功搭建。
为了进一步测试数据库连接,你可以修改 info.php 添加一段代码:
<?php
phpinfo();
// 测试数据库连接
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '你的Root密码');
echo "<h3 style='color:green'>Database Connection Successful!</h3>";
} catch (PDOException $e) {
echo "<h3 style='color:red'>Connection Failed: " . $e->getMessage() . "</h3>";
}
?>
(注意:生产环境中请勿将测试文件保留在公开目录下)
常见问题排查
-
PHP-FPM 未启动:
如果 Nginx 报错502 Bad Gateway,通常是 PHP-FPM 没启动。sudo systemctl status php8.3-fpm sudo systemctl restart php8.3-fpm -
权限问题:
如果无法上传文件或写入日志,可能需要调整目录权限:sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html -
防火墙拦截:
确保云服务器厂商(如阿里云、AWS、腾讯云)的安全组中也放行了 80 (HTTP) 和 443 (HTTPS) 端口。
至此,你的 Ubuntu 24.04 LNMP 环境已准备就绪,可以开始部署网站了。
云知识CLOUD