温馨提示×

如何在Ubuntu上安装LNMP扩展

小樊
42
2025-11-30 12:12:47
栏目: 智能运维

在 Ubuntu 上安装 LNMP 扩展的完整步骤

一 准备与版本确认

  • 更新系统并确认可用 PHP 版本:
    • 执行:sudo apt update && sudo apt upgrade -y
    • 查看版本:apt policy php(按需选择如 PHP 7.4/8.0/8.1/8.2
  • 本教程以 Nginx + MySQL/MariaDB + PHP-FPM 为例,适用于 Ubuntu 20.04/22.04/24.04。实际命令中的 PHP 版本号需与系统仓库一致,下文以 php7.4-fpm 为例,操作时请替换为你的实际版本。

二 安装与启动各组件

  • 安装 Nginx
    • 执行:sudo apt install -y nginx
    • 启动与自启:sudo systemctl start nginx && sudo systemctl enable nginx
  • 安装数据库(二选一)
    • MySQL:sudo apt install -y mysql-server
      • 安全初始化:sudo mysql_secure_installation
    • MariaDB:sudo apt install -y mariadb-server mariadb-client
      • 安全初始化:sudo mysql_secure_installation
  • 安装 PHP 与常用扩展
    • 基础:sudo apt install -y php-fpm php-mysql
    • 常用扩展(按需增删):sudo apt install -y php-curl php-gd php-mbstring php-xml php-zip php-cli
  • 启动 PHP-FPM 并设置开机自启(版本号按实际替换)
    • 执行:sudo systemctl start php7.4-fpm && sudo systemctl enable php7.4-fpm
  • 防火墙(如启用 UFW)
    • 执行:sudo ufw allow 'Nginx Full' && sudo ufw enable

三 配置 Nginx 处理 PHP

  • 编辑默认站点配置
    • 执行:sudo nano /etc/nginx/sites-available/default
  • 在 server 块中添加或修改 PHP 处理 location(将版本号替换为你的实际版本)
    • 示例:
      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;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 注意版本号
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      
          location ~ /\.ht {
              deny all;
          }
      }
      
  • 检查配置并生效
    • 检查:sudo nginx -t
    • 重载:sudo systemctl reload nginx

四 验证与常见问题

  • 验证安装
    • 创建测试文件:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
    • 浏览器访问:http://服务器IP/info.php,应看到 PHP 信息页
    • 命令行验证:php -vsystemctl status php7.4-fpm
  • 常见问题排查
    • 502 Bad Gateway:多为 PHP-FPM 未运行socket 路径不匹配。确认服务已启动,且 Nginx 中 fastcgi_pass 指向的路径与 /etc/php/7.x/fpm/pool.d/www.conf 中的 listen 一致(常见为 /run/php/php7.4-fpm.sock/var/run/php/php7.4-fpm.sock)。
    • 页面下载而非解析:Nginx 未将 .php 交给 PHP-FPM,检查 location ~ \.php$ 配置是否存在且包含 include snippets/fastcgi-php.conf;
    • 权限问题:确保 /var/www/html 及子目录对 www-data 可读可执行(如:sudo chown -R www-data:www-data /var/www/html)。
    • 防火墙阻断:启用 UFW 后放行 Nginx Full

0