PHP開発では、プロジェクトの展開は非常に重要な部分です。従来の手動展開は、多くの場合、エラーが発生しやすく、非効率的です。これらの問題を解決するために、展開者は、展開の効率と品質を大幅に改善できるPHPに基づくオープンソースの自動化ツールとして、存在しました。この記事では、自動化された展開にDeployerを使用する方法を詳細に紹介し、コードの例を介して特定の実装方法を実証します。
Deployerは、PHPプロジェクトの展開プロセスを簡素化および加速するように設計されたPHPベースの自動展開ツールです。 Deployerを使用すると、Concise Codeを使用して展開タスクを定義して、リモートサーバー上の自動展開を有効にします。
まず、Composerを介してDeployerをインストールする必要があります。プロジェクトルートディレクトリでコマンドラインを開き、次のコマンドを実行します。
composer require deployer/deployer --dev
インストールが完了したら、プロジェクトのルートディレクトリにdeploy.phpという名前の構成ファイルを作成し、展開を構成する必要があります。これが基本的な構成の例です。
<?php
require 'recipe/common.php';
set('application', 'my-app');
host('production')
->hostname('example.com')
->user('user')
->set('deploy_path', '~/www/{{application}}');
set('repository', 'git@github.com:username/repo.git');
set('branch', 'master');
この構成では、プロジェクト名、展開サーバーの関連情報、コードリポジトリアドレス、展開のターゲットブランチを定義します。これらの設定は、プロジェクトの実際のニーズに応じて調整できます。
構成が完了すると、deploy.phpファイルの特定の展開タスクを定義できます。これが例です:
task('deploy:update_code', function () {
$sourcePath = get('config.source_path');
$releasePath = get('deploy_path') . '/releases/' . date('YmdHis');
run("git clone {{repository}} $releasePath");
});
task('deploy:build', function () {
$releasePath = get('release_path');
run("cd $releasePath && composer install --no-dev");
});
task('deploy:cleanup', function () {
$releasesPath = get('deploy_path') . '/releases';
run("ls -dt $releasesPath/* | tail -n +{{keep_releases}} | xargs rm -rf");
});
task('deploy', ['deploy:update_code', 'deploy:build', 'deploy:cleanup']);
上記の例では、3つの主要なタスクを定義します。展開:update_codeは最新のコードをプルするために使用され、展開:ビルドはプロジェクト依存関係のインストールを担当し、展開:クリーンアップは古いバージョンのクリーンアップに使用されます。最後に、それらを順番に実行するDeployと呼ばれるデフォルトのタスクを定義します。
タスク定義を完了した後、コマンドラインを介して展開できます。コマンドラインにプロジェクトディレクトリを入力し、次のコマンドを実行します。
dep deploy
Deployerは自動的にリモートサーバーに接続し、構成ファイルのタスクの順序で展開プロセスを実行します。さらに、Deployerは、構成ファイルを初期化するためのDEP init 、カスタムタスクの実行などのDEP Runなどのコマンドも提供します。
Deployerは、PHPプロジェクトの展開プロセスを効果的に簡素化できる強力で使いやすいツールです。自動展開を通じて、開発者は展開の効率と品質を大幅に向上させることができます。この記事では、特定の構成とタスクの例を介して、Deployerを使用してPHPプロジェクトに自動的に展開する方法を示しています。この記事が、開発者が展開者をよりよく理解し、適用し、仕事の効率を向上させるのに役立つことを願っています。