ホームページ > バックエンド開発 > PHPチュートリアル > 展開者によるPHPアプリケーションの簡単な展開

展開者によるPHPアプリケーションの簡単な展開

Joseph Gordon-Levitt
リリース: 2025-02-15 08:54:12
オリジナル
886 人が閲覧しました

この記事は、最新の展開バージョンのために更新されました(2017年3月26日現在)。


テスト、コードスタイリング、システムチェックなどの開発ワークフローの自動化は、一般的な慣行です。 新しいアプリケーションバージョンを生産に移動する展開自動化も同様に重要です。 方法は、手動FTPのアップロードから、PhingやLaravelのEmpoyerなどの洗練されたツールまでの範囲です。この記事では、強力なPHP展開ツールであるDeployerを紹介します

Easy Deployment of PHP Applications with Deployer

展開者の重要な機能:

    Deployerは、PHPアプリケーションの展開を自動化するPHPベースのツールです。 SSH認証をサポートし、展開サーバーの指定を許可し、
  • コマンドを使用して定義されたタスクを実行します。 depゼロダウンタイムの展開は、リリースを管理し、サーバールートを最新リリースを表す
  • ディレクトリにリンクすることにより達成されます。これにより、展開中のサーバーメンテナンスモードの必要性がなくなります。
  • 事前に構築されたタスクは、一般的なPHPアプリケーションのニーズに応え、一般的なフレームワーク用に事前に構成されたレシピが存在します(Laravel、Symfony、Yii、Zend)。 currentアトミックデプロイメント展開が中断された場合でも、アプリケーションの一貫性を確保します。 組み込み
  • タスクにより、以前のリリースに戻ることができます
  • の例アプリケーション:rollback
デモンストレーションは、DigitalOcean Dropletに展開された以前の記事のアプリケーションを使用しています。 ソースコードはGitHubで入手できます(元のテキストでは提供されていないため、Brevityのためにリンクが省略されています)。

インストール:

展開者はPhARファイルとして配布されます。それをダウンロードして、オプションでグローバルアクセスのためにシステムのbinディレクトリに移動します(詳細についてはドキュメントを参照):

サーバー設定:

デモリポジトリをクローニングした後、
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
ログイン後にコピー
ログイン後にコピー
を作成して展開ステップを定義します。 サーバーを定義することから始めます。 基本的なユーザー名/パスワード認証:

特定の環境へのタスクをターゲットにするためにサーバータイプ(ステージング、生産)を指定します:

ステージを使用する場合、deploy.php

が重要です。それ以外の場合、エラーが発生します。 注:php 7では、
// 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');
ログイン後にコピー
ログイン後にコピー
ssh認証:

default_stage useSSHキー認証は、生産に推奨されます。 (必要に応じて、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート