温馨提示×

php框架在ubuntu上怎么部署

小樊
46
2025-11-26 19:45:37
栏目: 编程语言

在 Ubuntu 上部署 PHP 框架的标准流程

以下步骤适用于 Laravel、ThinkPHP、Symfony 等主流框架,涵盖环境准备、Web 服务器配置、权限与数据库初始化,以及常见故障排查。

一、准备环境

  • 更新系统并安装基础组件(以 Nginx + PHP-FPM + MySQL 为例):
    • 安装:sudo apt update && sudo apt install nginx php-fpm php-mysql unzip composer -y
    • 验证:php -vcomposer -vsudo systemctl status nginx
  • 选择与你项目匹配的 PHP 版本(如 7.4/8.0/8.1/8.2/8.3),并安装常用扩展(示例):
    • sudo apt install php-curl php-json php-zip php-gd php-mbstring php-xml php-bcmath php-pear
  • 启动并开机自启 PHP-FPMNginx
    • sudo systemctl enable --now php8.1-fpm nginx(请将 8.1 替换为你的实际版本)
  • 如需数据库,安装并加固 MySQL(创建应用专用库与用户,避免使用 root)。

二、部署通用步骤

  • 上传或拉取代码到站点目录(如 /var/www/yourproject),确保入口为框架的 public/index.php
  • 安装依赖:
    • cd /var/www/yourproject && composer install --optimize-autoloader --no-dev
  • 配置环境:
    • 复制 .env.example.env,设置 APP_ENV=productionAPP_DEBUG=false、数据库连接等敏感信息。
    • 生成应用密钥(Laravel):php artisan key:generate
  • 数据库初始化(示例):
    • 创建库与用户(MySQL):
      • CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      • GRANT ALL ON yourdb.* TO ‘appuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
      • FLUSH PRIVILEGES;
    • 迁移/建表:Laravel 执行 php artisan migrate --force;ThinkPHP 可执行 php think migrate:run(按项目实际命令)
  • 设置文件权限(示例):
    • sudo chown -R www-data:www-data /var/www/yourproject
    • sudo find /var/www/yourproject -type f -exec chmod 644 {} ;
    • sudo find /var/www/yourproject -type d -exec chmod 755 {} ;
    • 可写目录(Laravel 常见):storagebootstrap/cache
      • sudo chgrp -R www-data storage bootstrap/cache
      • sudo chmod -R ug+rwx storage bootstrap/cache
  • Web 服务器配置要点:
    • Nginx 将根目录指向 public,并启用 try_files $uri $uri/ /index.php?$query_string;
    • PHP-FPM 通过 Unix socket(如 /run/php/php8.1-fpm.sock)或 127.0.0.1:9000 与 Nginx 通信。

三、Nginx 与 PHP-FPM 配置示例

  • Nginx 服务器块(将 yourdomain.com/var/www/yourproject/public 替换为你的域名与路径;将 php8.1-fpm.sock 替换为你的 PHP 版本):
    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        root /var/www/yourproject/public;
        index index.php index.html;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.1-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/yourdomain.com /etc/nginx/sites-enabled/
    • sudo nginx -t && sudo systemctl reload nginx
  • PHP-FPM 监听(示例路径,按实际版本调整):
    • 编辑:/etc/php/8.1/fpm/pool.d/www.conf
    • 确认:listen = /run/php/php8.1-fpm.sock
    • 重启:sudo systemctl restart php8.1-fpm

四、框架差异要点

  • Laravel
    • 入口在 public/index.php;生产环境设置 APP_ENV=productionAPP_DEBUG=false
    • 常用命令:php artisan key:generatephp artisan migrate --force、按需执行 php artisan config:cachephp artisan route:cache
    • 目录权限:storagebootstrap/cache 需对 www-data 可写
  • ThinkPHP 6
    • 入口在 public/index.php;配置 .env 的数据库连接(如 DB_TYPE/DB_HOST/DB_NAME/DB_USER/DB_PWD
    • 可使用 Composer 创建项目:composer create-project topthink=6.0. your_project*
    • 数据库迁移:php think migrate:run
    • Apache 需开启 mod_rewrite 并在虚拟主机配置 AllowOverride All 指向 public
  • Symfony
    • 入口通常为 public/index.php;开发可用内置服务器,生产使用 Nginx/PHP-FPM
    • 检查环境:php bin/console check:requirements
    • 常见扩展:intlpdo_mysql;设置 date.timezone
    • 生产路由通常指向 app.php(避免暴露 app_dev.php)。

五、生产优化与安全建议

  • 使用 HTTPS/TLS(如 Let’s Encrypt),强制 HTTP→HTTPS 跳转
  • 关闭调试:APP_DEBUG=false;设置强 APP_KEY;隐藏 server 版本信息
  • 缓存优化:Laravel 执行 config:cacheroute:cache;启用 OPcache
  • 最小权限原则:仅对 storagebootstrap/cache 等目录赋予写权限;代码目录只读
  • 专用数据库用户与最小权限;定期备份数据库与代码
  • 日志与监控:开启 Laravel LogPHP-FPM slowlog,结合 fail2ban 与防火墙策略。

0