温馨提示×

Linux服务器上Laravel项目部署流程

小樊
40
2026-01-01 01:15:56
栏目: 云计算

Linux服务器上部署 Laravel 项目的标准流程

一 准备与基础环境

  • 系统与服务:准备一台 Linux 服务器,安装 Nginx/ApachePHP-FPM数据库(MySQL/PostgreSQL)Git,并确保可通过 SSH 访问。
  • PHP 与扩展:安装与项目匹配的 PHP 版本 及扩展(至少包含:OpenSSL、PDO、Mbstring、Tokenizer、XML、Ctype、JSON;常见项目还依赖 BCMath、CURL、Fileinfo、DOM)。
  • Composer:在服务器安装 Composer 并加入 PATH,便于后续依赖安装与维护。
  • 目录与权限:规划代码目录(如 /var/www/your-project),并确保运行用户对 storage、bootstrap/cache 具备写入权限。

二 部署与配置步骤

  1. 获取代码
    • 方式一:Git 克隆
      • git clone /var/www/your-project
    • 方式二:SCP/FTP 上传项目包到服务器指定目录。
  2. 安装依赖
    • 在项目根目录执行:composer install --no-interaction --prefer-dist --optimize-autoloader
  3. 配置环境
    • 复制环境模板:cp .env.example .env
    • 编辑 .env:设置 APP_NAME、APP_ENV=production、APP_DEBUG=false、APP_URL,以及数据库连接(如 DB_CONNECTION、DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD)。
  4. 生成应用密钥
    • php artisan key:generate
  5. 数据库迁移与可选数据填充
    • php artisan migrate --force
    • 如需演示/基础数据:php artisan db:seed --force
  6. 优化与缓存(生产环境)
    • php artisan config:cache
    • php artisan route:cache
    • php artisan view:cache
  7. 目录权限
    • chown -R www-data:www-data /var/www/your-project
    • chmod -R 755 /var/www/your-project
    • chmod -R 775 /var/www/your-project/storage /var/www/your-project/bootstrap/cache
  8. Web 服务器配置
    • 将站点根目录指向项目的 public 目录,配置 URL 重写将所有非静态资源请求转发给 index.php
  9. 重启服务
    • 例如:sudo systemctl reload nginx 或 sudo systemctl restart php-fpm

三 Nginx 配置示例

  • 将 root 指向 public,使用 try_files 将所有请求导向 index.php?$query_string;将 .php 请求通过 FastCGI 交给 PHP-FPM 处理;同时设置常见安全头并禁止访问隐藏文件。
  • 示例片段:
    • root /path/to/your-laravel-project/public;
    • index index.php;
    • location / { try_files $uri $uri/ /index.php?$query_string; }
    • location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
    • add_header X-Frame-Options “SAMEORIGIN”; add_header X-XSS-Protection “1; mode=block”; add_header X-Content-Type-Options “nosniff”;
    • location ~ /.(?!well-known).* { deny all; }
  • 修改后执行:sudo systemctl reload nginx。

四 自动化部署与 CI/CD

  • SSH 免密与部署用户
    • 本地生成密钥:ssh-keygen -t rsa -b 4096 -C “you@example.com”
    • 将公钥加入服务器 ~/.ssh/authorized_keys,以部署用户(如 deploy)执行部署脚本,避免直接使用 root。
  • 简易部署脚本 deploy.sh
    • REPO_URL、DEPLOY_DIR、BRANCH 等变量可按需调整;脚本中执行:git pull、composer install、php artisan migrate --force、清缓存、重启服务等。
    • 赋权:chmod +x deploy.sh
  • CI/CD 示例(GitHub Actions)
    • .github/workflows/deploy.yml 中监听 main 分支 push,检出代码、安装 PHP 与依赖、执行迁移与缓存、重启服务,实现一键上线。

五 上线检查与常见问题

  • 访问与日志:确认站点可访问;查看 Nginx 错误日志(如 /var/log/nginx/error.log)与 Laravel 日志storage/logs/laravel.log)定位问题。
  • 权限与目录:确保 storage、bootstrap/cache 可写;避免将 .env 提交至代码库。
  • 队列与计划任务(如有)
    • 队列常驻:使用 Supervisor 管理 php artisan queue:work --queue=default --tries=3 --sleep=3
    • 计划任务:在服务器 crontab 添加 * * * * * cd /var/www/your-project && php artisan schedule:run >> /dev/null 2>&1
  • 多 PHP 版本共存(可选)
    • 若需指定 PHP 版本,可创建命令别名或 wrapper,例如:
      • 新建 /usr/local/bin/composer8:#!/bin/bash
        /data/php82/bin/php /usr/local/bin/composer “$@”
      • chmod +x /usr/local/bin/composer8
      • 使用:composer8 install。

0