Ubuntu server 24.04安装LNMP环境(Linux+Nginx+MariaDB+PHP)?

在 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. 最终验证

  1. 测试 Nginx 基础功能
    在浏览器访问 http://<你的服务器IP>/,应该能看到 Nginx 欢迎页(如果 index.html 存在)或空白页(如果只创建了 info.php)。

  2. 测试 PHP 解析
    在浏览器访问 http://<你的服务器IP>/info.php

    • 成功:你会看到一个详细的 PHP 配置信息页面。
    • 失败:如果你看到的是源代码文本而不是页面,说明 Nginx 没有正确转发给 PHP-FPM(请检查第 5 步的配置和 socket 路径)。
  3. 测试数据库连接
    在服务器上执行以下命令,尝试用 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云枢 » Ubuntu server 24.04安装LNMP环境(Linux+Nginx+MariaDB+PHP)?