Symfony プログラムをデプロイする方法


Symfony のデプロイは、アプリケーションの設定とニーズに応じて、複雑で多様なタスクになる可能性があります。この記事はステップバイステップのガイドではなく、導入時の一般的な要件と推奨事項のリストです。

Symfony デプロイメントの基本

Symfony をデプロイするときに発生する一般的な手順は次のとおりです:

  1. アップロード コードを入力します。運用サーバーへ;
  2. サードパーティの依存関係をインストールします (通常は Composer を通じて実行され、プログラムをアップロードする前に実行できます);
  3. データベース移行 (移行) または同様のタスクを実行して更新します。データ構造が「変更されました」;
  4. キャッシュをクリアします (オプションでウォームアップします)。

展開プロセスには、次のような他のタスクも含まれます。

  • コードの特定のバージョンをバージョン ライブラリ内のリリースとしてタグ付けする;
  • ステージング領域を作成して、「オフライン」オフライン更新セットアップを構築します。
  • 利用可能なテストを実行して、コードやサーバーの安定性を確認します。
  • Fromweb/ ディレクトリを削除します。運用環境をクリーンに保つために不要なファイルをすべて削除します。
  • 外部キャッシュ システム (MemcachedRedis など) をクリアします。

Symfony プログラムをデプロイする方法

Symfony プログラムをデプロイするにはいくつかの方法があります。いくつかの基本的な展開戦略から始めて、そこから進めていきます。

基本的なファイル転送

プログラムを展開する最も基本的な方法は、FTP/SCP (または同様の方法) を介してファイルを手動でコピーすることです。欠点は、たとえば、アップグレード プロセス中にシステムを制御できないことです。この方法では、ファイル転送後にいくつかの手動手順を実行する必要もあります (一般的な展開後のタスクを参照)。

バージョン管理を使用する

バージョン管理 (Git や SVN など) を使用する場合は、リポジトリへのライブ インストールのコピーを直接作成できます。アップグレードの準備ができたら、バージョン管理システムから最新のアップデートを取得するのと同じくらい簡単です。

これにより、ファイルの更新が 簡単になります ただし、追加の手順を手動で実行することを検討する必要があります (一般的な展開後のタスク を参照)。

プラットフォームサービスを使用する

あまり使用されない 関連ニーズのあるユーザーは、Symfony 公式 Web サイトの原文を参照してください。さらに、Microsoft Azure などの最新のクラウド プラットフォームは、ワンステップで Symfony3 をサポートできます。

特別な展開手順はサービス プロバイダーによって大きく異なるため、次の独立した記事から目的のサービスを見つけてください:

ビルド スクリプトとその他のツールの使用

展開の苦痛を軽減するのに役立つツールがいくつかあります。それらのいくつかは、Symfony のニーズに合わせてほぼカスタマイズされています:

一般的なデプロイ後のタスク

実際のソース コードをデプロイした後、実行する必要がある一般的な作業がいくつかあります。

A) 要件のチェック

次のコマンドを実行して、サーバーが要件を満たしているかどうかを確認します。

##
1
$  php bin/symfony_requirements

B) app/config/parameters.yml ファイルを構成します。

このファイル はデプロイする必要はありませんが、デプロイされます。 Symfony によってデプロイされ、管理するための自動ツールが提供されます。

C) ベンダーのインストール/更新

ベンダー (サードパーティ パッケージ) は、ソース コードをアップロードする前に更新できます (

vendor/# の更新など)。 ## ディレクトリに移動し、ソース コードをアップロードするか、サーバー上で更新を完了します。いずれにせよ、通常どおりベンダーを更新するだけです:

#
1
$  composer install --no-dev --optimize-autoloader
「クラス マップ」クラス マップを構築することで、
--optimize-autoloader
フラグが大幅に改善されます。 Composer の自動読み込みパフォーマンス。
--no-dev

フラグは、開発環境パッケージが運用環境にインストールされないようにします。

このステップで「クラスが見つかりません」エラーが発生した場合は、前述のコマンドを実行する前に
export SYMFONY_ENV=prod## を実行する必要がある場合があります。
#post-install-cmd
スクリプトが

prod 環境で実行されるようにします。 D) Symfony キャッシュのクリア

Symfony キャッシュを必ずクリア (およびウォームアップ) してください。

1
#
$  php bin/console cache:clear --env=prod --no-debug
Assetic を使用する場合は、アセットをストリップする必要があります:
##E) Assetic リソースのストリップ

##
1

#

$  php bin/console assetic:dump --env=prod --no-debug

##

F) その他のコンテンツ!

  • データベース移行の実行
  • APC キャッシュのクリア
  • assets:install の実行 (すでに にあります)コンポーザーのインストール プロセスは管理されました)
  • CRON タスクの追加/編集
  • アセット リソースを CDN に公開
  • ...
#プログラムのライフ サイクル: 継続的インテグレーション、品質保証など

この記事では展開プロセスの技術的な詳細について説明しますが、開発から運用までのコードの完全なライフ サイクルには、次のことが必要になる場合があります。その他のステップ (展開のステージング、QA [品質保証/品質保証]、テストの実行などを考えてください)

ステージング、テスト、QA、継続的統合、データベースの移行、および障害発生時の下位互換性はすべて強力です。推奨。さまざまな単純なツールや複雑なツールがあり、そのうちの 1 つは、環境のニーズを満たす展開プロセスを簡単に (またはより高度に) 行うことができます。

デプロイメント プロセスには、依存関係の更新 (通常は Composer を介して)、データベースの移行、キャッシュのクリア、および CDN へのリソースの公開などのその他の潜在的な事項も含まれることを忘れないでください (

一般的な投稿を参照してください)。導入タスク )。