在 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
验证安装:
检查 Nginx 状态:
systemctl status nginx
如果看到 active (running),则说明安装成功。此时,你可以通过浏览器访问服务器的公网 IP 地址,应该能看到 "Welcome to nginx!" 的默认页面。
3. 安装 MariaDB 数据库
MariaDB 是 MySQL 的开源分支,Ubuntu 官方仓库中包含它。我们将安装核心组件、客户端以及安全初始化脚本。
sudo apt install mariadb-server mariadb-client -y
安全配置(推荐):
运行 mysql_secure_installation 脚本可以设置 root 密码、移除匿名用户、禁止远程 root 登录等,以增强安全性。
sudo mysql_secure_installation
- 输入当前 root 密码(如果是首次安装通常直接回车即可,或者提示设置新密码)。
- 按照提示回答
Y或N(建议全部选Y以获得最佳安全配置)。
测试数据库连接:
sudo mysql -u root -p
进入 SQL 命令行后,输入 exit; 退出。
4. 安装 PHP 及 Nginx 集成模块
我们需要安装 PHP-FPM(FastCGI Process Manager),这是 Nginx 与 PHP 通信的关键组件。同时安装常用的扩展(如 mbstring, xml, curl 等),以满足大多数 CMS(如 WordPress)的需求。
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
注意:在 Ubuntu 24.04 中,PHP 8.x 是默认版本。如果你需要特定的旧版本(如 PHP 7.4),则需要添加 Ondrej Sura 的 PPA,但通常生产环境建议使用官方源的最新稳定版。
5. 配置 Nginx 以支持 PHP
默认情况下,Nginx 不会处理 .php 文件。我们需要修改站点配置文件,告诉 Nginx 将 PHP 请求转发给 PHP-FPM。
5.1 创建或编辑站点配置
假设你的网站根目录为 /var/www/html,我们先创建一个测试文件来验证 PHP 是否工作。
sudo nano /var/www/html/info.php
输入以下内容:
<?php
phpinfo();
?>
保存并退出 (Ctrl+O, Enter, Ctrl+X)。
5.2 配置 Nginx 虚拟主机
我们需要修改 /etc/nginx/sites-available/default 文件,或者创建一个新的站点配置。这里以修改默认配置为例:
sudo nano /etc/nginx/sites-available/default
找到 location ~ .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;
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 默认通常是 php8.3
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意:php8.3-fpm.sock 的路径取决于你安装的 PHP 版本。如果不确定,可以查看 /etc/php/ 目录下的文件夹名称。
5.3 重启 Nginx 和 PHP-FPM
应用配置更改:
sudo systemctl restart nginx
sudo systemctl restart php8.3-fpm
# 如果版本不同,请将 php8.3-fpm 替换为对应的服务名
6. 验证安装
打开浏览器,访问 http://你的服务器IP/info.php。
- 成功:你将看到一个详细的 PHP 信息页面,包含版本、已加载模块等信息。
- 失败:如果显示“404 Not Found”或"403 Forbidden”,请检查文件权限;如果显示 Nginx 默认欢迎页而不是 PHP 代码,说明 Nginx 没有正确转发给 PHP-FPM。
7. 防火墙配置 (UFW)
Ubuntu 默认可能未开启防火墙,或者开启了但限制了端口。确保允许 HTTP (80) 和 HTTPS (443) 流量。
sudo ufw allow 'Nginx Full'
sudo ufw enable
如果之前已经启用过 UFW,只需执行 sudo ufw allow 'Nginx Full' 即可。
常见问题排查
-
权限错误 (Permission Denied):
如果 Nginx 无法读取/var/www/html下的文件,请修复所有者:sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html -
找不到 PHP-FPM Socket:
如果在 Nginx 配置中fastcgi_pass路径报错,请确认 PHP 版本:ls /run/php/根据输出结果调整 Nginx 配置中的 socket 路径(例如
php8.3-fpm.sock或php8.4-fpm.sock)。 -
SELinux/AppArmor:
Ubuntu 使用 AppArmor 而非 SELinux。如果遇到奇怪的拒绝访问,可以临时关闭 AppArmor 进行测试(不推荐生产环境长期使用):sudo systemctl stop apparmor
至此,你的 Ubuntu Server 24.04 LNMP 环境已成功搭建完毕。你可以开始部署 WordPress、Laravel 或其他基于 PHP 的应用了。
CLOUD云计算