奋斗
努力

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 进行安装,无需添加额外的第三方 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 的版本。

  1. 备份原配置:

    sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
  2. 编辑配置文件:

    sudo nano /etc/nginx/sites-available/default
  3. 替换内容:
    将文件中的 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/ 确认文件名。

  4. 保存并退出:按 Ctrl+O 保存,Enter 确认,然后 Ctrl+X 退出。

D. 重启服务

使配置生效:

sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
# 请根据实际安装的版本调整 php8.2-fpm 的名称,如 php8.1-fpm

6. 最终验证

  1. 防火墙检查:确保 80 端口已开放。

    sudo ufw allow 'Nginx Full'
    # 或者直接允许 http
    sudo ufw allow 80/tcp
  2. 浏览器测试:
    在浏览器访问:http://<你的服务器IP>/test-php/info.php

    • 如果能看到一张详细的 PHP 信息表格,说明 LNMP 环境搭建成功。
    • 如果显示 "404 Not Found",检查文件路径是否正确。
    • 如果显示 "502 Bad Gateway",通常意味着 Nginx 无法连接到 PHP-FPM(检查 socket 路径或 PHP-FPM 服务状态)。
  3. 清理测试文件(生产环境建议):
    为了安全起见,建议在确认无误后删除测试文件:

    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 开发/生产环境。

未经允许不得转载:云服务器 » Ubuntu server 24.04安装LNMP环境(Linux+Nginx+MariaDB+PHP)?