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