首页主机资讯如何在Ubuntu上使用LNMP运行PHP项目

如何在Ubuntu上使用LNMP运行PHP项目

时间2025-11-26 23:36:04发布访客分类主机资讯浏览1488
导读:在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南 一 环境准备与组件安装 更新索引并安装组件(以 Ubuntu 20.04/22.04/24.04 为例,PHP 版本以仓库可用为准,常见为 PHP 8.1/8.2/8.3)...

在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南

一 环境准备与组件安装

  • 更新索引并安装组件(以 Ubuntu 20.04/22.04/24.04 为例,PHP 版本以仓库可用为准,常见为 PHP 8.1/8.2/8.3):
    • 安装 Nginx、MySQL、PHP-FPM 与常用扩展:
      • sudo apt update
      • sudo apt install -y nginx mysql-server php-fpm php-mysql
    • 启动并设为开机自启:
      • sudo systemctl enable --now nginx mysql php-fpm
    • 运行 MySQL 安全初始化:
      • sudo mysql_secure_installation
  • 如需指定或安装更高版本 PHP(示例为 PHP 8.1):
    • sudo add-apt-repository ppa:ondrej/php
    • sudo apt update
    • sudo apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-{ mbstring,xml,zip,gd,curl,intl,opcache}

二 配置 Nginx 与 PHP-FPM

  • 创建项目站点配置(示例域名或 IP 为 your_domain_or_ip,项目路径为 /var/www/your_project/public):
    • sudo nano /etc/nginx/sites-available/your_project
    • 写入以下内容(注意将 phpX.X-fpm.sock 替换为实际版本,如 php8.1-fpm.sock):
      server {
          
          listen 80;
          
          server_name your_domain_or_ip;
          
      
          root /var/www/your_project/public;
          
          index index.php index.html index.htm;
      
      
          location / {
          
              try_files $uri $uri/ /index.php?$query_string;
      
          }
      
      
          location ~ \.php$ {
          
              include snippets/fastcgi-php.conf;
          
              fastcgi_pass unix:/var/run/php/phpX.X-fpm.sock;
          
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          
              include fastcgi_params;
      
          }
      
      
          location ~ /\.ht {
          
              deny all;
      
          }
      
      }
          
      
    • 启用站点并测试配置:
      • sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
      • sudo nginx -t & & sudo systemctl reload nginx
  • 调整 PHP-FPM 运行用户与权限(确保与 Nginx 一致,通常为 www-data):
    • 编辑:/etc/php/8.1/fpm/pool.d/www.conf
      • listen.owner = www-data
      • listen.group = www-data
      • listen.mode = 0660
    • 重启 PHP-FPM:
      • sudo systemctl restart php8.1-fpm
  • 目录与权限:
    • sudo chown -R www-data:www-data /var/www/your_project
    • sudo find /var/www/your_project -type f -exec chmod 644 { } ;
    • sudo find /var/www/your_project -type d -exec chmod 755 { } ;

三 数据库与项目部署

  • 创建数据库与用户(在 MySQL 中执行):
    • CREATE DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPassword!’;
    • GRANT ALL PRIVILEGES ON your_database.* TO ‘your_user’@‘localhost’;
    • FLUSH PRIVILEGES;
    • EXIT;
  • 导入数据(如有):
    • mysql -u your_user -p your_database < your_database_dump.sql
  • 部署代码与配置应用:
    • 将项目代码上传至 /var/www/your_project(框架如 Laravel 应将入口置于 public/,并设置 .env 数据库连接)
    • 如框架需写入目录,确保相应目录对 www-data 可写(例如 storage、cache)

四 测试与常见问题排查

  • 基础连通性测试:
    • /var/www/html/info.php 写入:
    • 访问 http://your_domain_or_ip/info.php,确认 PHP 解析正常
  • 常见问题速查:
    • 502 Bad Gateway:多为 PHP-FPM 未运行或 fastcgi_pass 路径不匹配;执行 systemctl status php8.1-fpm 查看,核对 socket 路径(/var/run/php/php8.1-fpm.sock 或 /run/php/php8.1-fpm.sock)
    • 403 Forbidden:目录无索引文件或权限不足;检查 root 路径、index 指令与目录权限
    • 404 Not Found(路由不生效):确保 Nginx 配置包含 try_files $uri $uri/ /index.php?$query_string;
    • 日志定位:
      • Nginx:/var/log/nginx/error.log
      • PHP-FPM:/var/log/php8.1-fpm.log(或 /var/log/php-fpm.log,视版本与系统而定)

五 安全与优化建议

  • 启用 HTTPS(Let’s Encrypt):
    • sudo apt install -y certbot python3-certbot-nginx
    • sudo certbot --nginx -d your_domain
  • 防火墙放行:
    • sudo ufw allow ‘Nginx Full’
    • sudo ufw enable
  • PHP 与性能:
    • php.ini 中设置:
      • date.timezone = Asia/Shanghai
      • opcache.enable=1
      • opcache.memory_consumption=128
      • opcache.interned_strings_buffer=8
      • opcache.max_accelerated_files=4000
    • 按需安装扩展:php-mbstring、php-xml、php-zip、php-gd、php-curl、php-intl 等
  • 安全加固:
    • 删除或限制 info.php 在生产环境访问
    • 使用强数据库与系统用户密码,限制数据库远程访问
    • 定期更新系统与软件包:sudo apt update & & sudo apt upgrade

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上使用LNMP运行PHP项目
本文地址: https://pptw.com/jishu/757246.html
PHP-FPM进程管理在Linux中怎么做 如何在Ubuntu上部署LNMP

游客 回复需填写必要信息