この記事は、最新の展開バージョンのために更新されました(2017年3月26日現在)。
テスト、コードスタイリング、システムチェックなどの開発ワークフローの自動化は、一般的な慣行です。 新しいアプリケーションバージョンを生産に移動する展開自動化も同様に重要です。 方法は、手動FTPのアップロードから、PhingやLaravelのEmpoyerなどの洗練されたツールまでの範囲です。この記事では、強力なPHP展開ツールであるDeployerを紹介します
展開者の重要な機能:
dep
ゼロダウンタイムの展開は、リリースを管理し、サーバールートを最新リリースを表すcurrent
アトミックデプロイメント展開が中断された場合でも、アプリケーションの一貫性を確保します。 組み込みrollback
インストール:
展開者はPhARファイルとして配布されます。それをダウンロードして、オプションでグローバルアクセスのためにシステムのbinディレクトリに移動します(詳細についてはドキュメントを参照):
サーバー設定:
デモリポジトリをクローニングした後、
mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep
特定の環境へのタスクをターゲットにするためにサーバータイプ(ステージング、生産)を指定します:
ステージを使用する場合、deploy.php
// deploy.php server('digitalocean', '104.131.27.106') ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']);
)を組み合わせることができます
// deploy.php use function Deployer\set; use function Deployer\server; set('default_stage', 'staging'); server('digitalocean', '104.131.27.106') ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']) ->stage('staging') ->env('deploy_path', '/var/www');
default_stage
use
SSHキー認証は、生産に推奨されます。 (必要に応じて、SSHキーセットアップガイドを参照してください。)use function Deployer{set, server};
デフォルトはになります。 必要に応じてパスをカスタマイズします:
展開者は、ネイティブシステムコマンドにデフォルトであるさまざまなSSH接続メソッドをサポートしています。
// deploy.php use function Deployer\{set, server}; set('default_stage', 'staging'); server('digitalocean', '104.131.27.106') ->identityFile() ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']) ->stage('staging');
ssh2拡張:identityFile()
~/.ssh/id_rsa
PHP SSH2拡張機能には、代替案があります。 インストールして有効にしてから、herzult/php-ssh
パッケージを必要とし、ssh_type
:
mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep
(注:herzult/php-ssh
は展開者ファーに含まれていません。カスタムファーを構築する必要があるかもしれません。)
yaml設定:
サーバーはYAMLファイル(servers.yml
)で定義し、serverList()
:
// deploy.php server('digitalocean', '104.131.27.106') ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']);
// deploy.php use function Deployer\set; use function Deployer\server; set('default_stage', 'staging'); server('digitalocean', '104.131.27.106') ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']) ->stage('staging') ->env('deploy_path', '/var/www');
タスク定義:
タスクは、dep
コマンド(例えば、dep deploy:staging
)を介して実行されます。
// deploy.php use function Deployer\{set, server}; set('default_stage', 'staging'); server('digitalocean', '104.131.27.106') ->identityFile() ->user($_ENV['staging_server_user']) ->password($_ENV['staging_server_password']) ->stage('staging');
サンプルタスクはファイルをアップロードしたり、サーバーコマンドを実行したりする可能性があります。
// deploy.php ->identityFile('path/to/id_rsa', 'path/to/id_rsa.pub', 'pass phrase')
メソッドは、タスクにヘルプテキストを追加します:desc()
// deploy.php set('ssh_type', 'ext-ssh2'); // ...
タスク組織:
およびbefore
フックを使用して、より小さな、再利用可能なタスクに大きなタスクを分解します:after
# servers.yml digitalocean: host: 104.131.27.106 user: root identity_file: ~ stage: staging deploy_path: /var/www/
Zero-downtime deployments: ダウンタイムを避けるために、
ディレクトリの最新リリースを指すsymlinkを使用してください:current
releases
serverList('servers.yml');
Deployerは、一般的なタスクとフレームワーク固有のレシピ(Laravel、Symfonyなど)を提供します。 一般的なタスクを使用した例:
展開レシピとFAQに関する残りのセクションは、元のテキストで適切にカバーされているため、簡潔に省略されています。 主要な概念とコードの例は、元の意味と構造を維持しながら、明確さと簡潔さのために言い換えられ、再編成されています。 画像は元の形式と位置のままです
以上が展開者によるPHPアプリケーションの簡単な展開の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。