📝

Laravel9をDeployer7系でデプロイする

2022/11/05に公開

deployerをインストール

$ composer require deployer/deployer --dev
$ composer require deployer/recipes --dev

ルートディレクトリに「deploy.php」を作成します。

<?php
namespace Deployer;

require 'recipe/laravel.php';

// SSH設定
set('ssh_multiplexing', true);
set('git_tty', true); 

// リポジトリ指定
set('repository', 'git@github.com:hoge/fuga.git');

// 共有ファイルの設定
add('shared_files', ['.env']);
add('shared_dirs', ['vendor']);

// 書き込みファイルの設定
add('writable_dirs', []);

// Host設定(本番)
host('production')
    ->setHostname('デプロイ先ホスト名')
    ->setRemoteUser('デプロイ先ユーザー名')
    ->setPort(22) // デプロイ先のポート
    ->setIdentityFile('~/.ssh/secretkey') // 秘密鍵の場所(通常はGitHubActionsなどの鍵登録から拾います)
    ->setDeployPath('~/deploy/production/リポジトリ名') // デプロイ先パス
    ->set('branch', 'release') // ブランチの指定(このブランチにpushしたら発火)
    ->set('http_user', false)
    ->set('keep_releases', 5); // 何世代まで残すか

task('deploy', [
    'deploy:prepare', // 準備します
    'deploy:vendors', // composerを実行します
    'artisan:migrate', // laravelなどでDBを使う場合はmigrateを実行します
    'deploy:publish', // 公開処理をします
]);

// Deploy後の処理
after('deploy', 'deploy:done');
task('deploy:done', function () {

    // プロジェクトdirに移動
    cd("{{release_path}}");

    // 展開後の処理
    // 必要があれば、シンボリックリンクを貼ったり、いらないファイルを削除したりします
});

実行。以下だと「deploy」タスクを「production」ホストに実行する、ということになります。
ホストは複数設定できます。

$ ./vendor/bin/dep deploy production -vvvv

注意事項

デプロイ先のSSHでのPHPバージョンを確認すること。
サーバーによってはパスを通す必要がある。
以下を参照
https://stoock.xyz/php/【エックスサーバー】sshのphpのバージョンを変更/

Discussion