溫馨提示×

Debian系統Laravel部署如何自動化

小樊
50
2025-09-19 15:37:53
欄目: 智能運維

使用Laravel Deployer實現Debian系統Laravel自動化部署
Laravel Deployer是基于Deployer 7構建的Laravel專用部署工具,通過配置文件定義部署流程,支持一鍵部署、多環境管理、回滾等功能,是Debian系統下Laravel自動化部署的高效解決方案。

1. 安裝Laravel Deployer

在項目根目錄下通過Composer安裝Deployer依賴:

composer require deployer/deployer:^7.0

安裝完成后,項目根目錄會生成vendor/deployer/deployer目錄,包含部署工具的核心文件。

2. 配置部署文件

在項目根目錄創建deploy.php配置文件(或deploy.yaml),定義服務器信息、部署路徑、任務流程等。以下是一個典型的Debian服務器配置示例:

<?php
// deploy.php
require 'recipe/laravel.php'; // 加載Laravel專用配方

set('repository', 'git@github.com:your-username/your-laravel-repo.git'); // Git倉庫地址
set('branch', 'main'); // 部署分支
set('keep_releases', 3); // 保留的歷史版本數量
set('shared_files', ['.env']); // 共享文件(如.env配置文件)
set('shared_dirs', ['storage/app', 'storage/framework', 'storage/logs']); // 共享目錄(需保持寫入權限)
set('writable_dirs', ['storage', 'bootstrap/cache']); // 需要賦予權限的目錄

// Debian服務器配置
host('your-debian-server.com') // 服務器域名或IP
    ->user('deploy-user') // 服務器用戶名(需有sudo權限)
    ->port(22) // SSH端口(默認22)
    ->identityFile('~/.ssh/id_rsa') // SSH私鑰路徑(用于免密登錄)
    ->set('deploy_path', '/var/www/your-laravel-app'); // 項目部署路徑

關鍵配置說明

  • shared_files:確保.env等配置文件在部署時不被覆蓋,保持環境一致性;
  • shared_dirs:存儲用戶上傳的文件、框架緩存等,避免每次部署丟失數據;
  • writable_dirs:部署后需要修改權限的目錄(如storage),確保Web服務器可寫入。

3. 定義部署任務(可選)

Laravel Deployer內置了Laravel專用任務(如artisan:migrate、cache:clear),也支持自定義任務。例如,在deploy.php中添加自定義任務:

task('npm:install', function () {
    run('cd {{release_path}} && npm install'); // 安裝前端依賴
})->desc('Install npm dependencies');

task('npm:prod', function () {
    run('cd {{release_path}} && npm run production'); // 編譯前端資源
})->desc('Compile assets for production');

這些任務會在部署流程中按需調用。

4. 執行部署流程

在項目根目錄運行以下命令,完成自動化部署:

# 初始化部署(首次部署需執行,創建release目錄結構)
dep init

# 執行完整部署流程(拉取代碼→安裝依賴→運行遷移→清除緩存等)
dep deploy

部署流程詳解

  1. 克隆代碼:從Git倉庫拉取指定分支的最新代碼到服務器的releases目錄;
  2. 安裝依賴:運行composer install --optimize-autoloader --no-dev安裝PHP依賴;
  3. 更新共享文件:將本地的.env文件同步到服務器的共享目錄;
  4. 設置權限:為storage、bootstrap/cache等目錄賦予Web服務器寫入權限;
  5. 運行遷移:執行php artisan migrate更新數據庫結構;
  6. 清除緩存:運行php artisan config:clear、php artisan cache:clear清除配置和緩存;
  7. 切換版本:將current目錄指向最新的release目錄,完成版本切換。

5. 回滾部署(可選)

若新版本部署失敗或出現問題,可快速回滾到上一個穩定版本:

dep rollback

該命令會將current目錄切換到上一個release目錄,確保服務不中斷。

6. 結合CI/CD(可選)

可將Laravel Deployer與GitHub Actions、GitLab CI等CI/CD工具結合,實現代碼推送后自動觸發部署。例如,GitHub Actions的.github/workflows/deploy.yml配置示例:

name: Deploy Laravel to Debian
on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite
      
      - name: Install dependencies
        run: composer install --optimize-autoloader --no-dev
      
      - name: Deploy to Debian
        uses: appleboy/scp-action@v0.1.4
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: '.'
          target: '/var/www/your-laravel-app'
          script: |
            cd /var/www/your-laravel-app
            dep deploy

注意:需在GitHub倉庫的Settings -> Secrets中配置SERVER_HOST、SERVER_USER、SSH_PRIVATE_KEY等密鑰,確保CI/CD工具能安全訪問服務器。

通過以上步驟,可實現Debian系統下Laravel項目的自動化部署,減少人工操作錯誤,提高部署效率。Laravel Deployer的靈活性和可擴展性,也能滿足不同規模項目的需求。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女