📝
Laravel9をDeployer7系でデプロイする
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バージョンを確認すること。
サーバーによってはパスを通す必要がある。
以下を参照
Discussion