在 Ubuntu Server 24.04 (Noble Numbat) 上安装 LNMP 环境(Linux + Nginx + MariaDB + PHP)是一个非常标准的运维任务。Ubuntu 24.04 默认的软件源中已经包含了较新版本的 Nginx、MariaDB 和 PHP,因此我们可以直接使用 apt 进行安装,无需添加额外的第三方 PPA(除非你需要特定版本的 PHP)。
以下是完整的安装步骤:
1. 更新系统包索引
首先,确保系统的软件包列表是最新的,以避免安装旧版本或依赖错误。
sudo apt update && sudo apt upgrade -y
2. 安装 Nginx Web 服务器
Nginx 在 Ubuntu 24.04 的默认源中即可找到。
sudo apt install nginx -y
安装完成后,启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装:
在浏览器访问你的服务器 IP 地址(例如 http://<你的服务器IP>),如果看到 "Welcome to nginx!" 页面,说明安装成功。
3. 安装 MariaDB 数据库
MariaDB 是 MySQL 的分支,完全兼容 MySQL 协议。
sudo apt install mariadb-server -y
安装完成后,运行安全配置脚本(强烈建议执行):
sudo mysql_secure_installation
- 操作指引:
- 输入
Y确认切换 root 用户认证插件。 - 设置 root 密码(或者选择使用 socket 认证)。
- 后续提示全部按
Y回车,以移除匿名用户、禁止 root 远程登录、删除测试数据库等。
- 输入
验证安装:
登录数据库检查版本:
sudo mysql -u root -p
# 输入密码后,执行:
SELECT VERSION();
EXIT;
4. 安装 PHP 及常用扩展
Ubuntu 24.04 默认提供的是较新的 PHP 8.2 或更高版本。我们需要安装 PHP-FPM(FastCGI Process Manager),因为 Nginx 需要它来处理动态请求。
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-bcmath php-json php-zip -y
注:php-mysql 用于连接 MariaDB/MySQL,其他扩展根据实际需求安装。
注意:在安装过程中可能会弹出界面询问是否重启服务,选择 <Yes> 或 <No> 均可,稍后我们会手动重启以确保配置生效。
5. 配置 Nginx 与 PHP-FPM 集成
这是最关键的一步。默认情况下,Nginx 不会直接处理 .php 文件,我们需要修改站点配置文件来启用 PHP 支持。
A. 创建测试目录
sudo mkdir -p /var/www/html/test-php
B. 创建测试文件
创建一个 info.php 文件来验证 PHP 是否正常工作:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test-php/info.php
设置权限(可选,生产环境需更严格):
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
C. 修改 Nginx 站点配置
Ubuntu 24.04 的默认站点配置通常在 /etc/nginx/sites-available/default。我们需要将其修改为支持 PHP 的版本。
-
备份原配置:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak -
编辑配置文件:
sudo nano /etc/nginx/sites-available/default -
替换内容:
将文件中的location /部分修改为以下内容(主要关注index指令和location ~ .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-FPM location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 注意:上面的 socket 路径取决于安装的 PHP 版本,如果是 8.1 则改为 php8.1-fpm.sock } location ~ /.ht { deny all; } }提示:如果你不确定具体的 PHP-FPM socket 路径,可以查看
/etc/nginx/fastcgi.conf或运行ls /run/php/确认文件名。 -
保存并退出:按
Ctrl+O保存,Enter确认,然后Ctrl+X退出。
D. 重启服务
使配置生效:
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
# 请根据实际安装的版本调整 php8.2-fpm 的名称,如 php8.1-fpm
6. 最终验证
-
防火墙检查:确保 80 端口已开放。
sudo ufw allow 'Nginx Full' # 或者直接允许 http sudo ufw allow 80/tcp -
浏览器测试:
在浏览器访问:http://<你的服务器IP>/test-php/info.php- 如果能看到一张详细的 PHP 信息表格,说明 LNMP 环境搭建成功。
- 如果显示 "404 Not Found",检查文件路径是否正确。
- 如果显示 "502 Bad Gateway",通常意味着 Nginx 无法连接到 PHP-FPM(检查 socket 路径或 PHP-FPM 服务状态)。
-
清理测试文件(生产环境建议):
为了安全起见,建议在确认无误后删除测试文件:sudo rm -rf /var/www/html/test-php
常见问题排查
- PHP 版本不匹配:如果你的服务器安装了多个 PHP 版本,Nginx 配置的 socket 路径必须与实际运行的版本一致。可以使用
ls /run/php/查看当前可用的 socket 文件。 - 权限问题:如果网站目录下的文件无法被写入(如 WordPress 上传失败),可能需要调整所有者:
sudo chown -R www-data:www-data /var/www/html。 - SELinux/AppArmor:Ubuntu 默认使用 AppArmor,通常不需要额外配置,但如果遇到奇怪的文件读取错误,可以检查日志
/var/log/nginx/error.log和/var/log/syslog。
现在,你已经拥有了一个基于 Ubuntu 24.04 的完整 LNMP 开发/生产环境。
云服务器