ホームページ > バックエンド開発 > PHPチュートリアル > Symfony 2開発と展開のためのチェックリスト

Symfony 2開発と展開のためのチェックリスト

Jennifer Aniston
リリース: 2025-02-21 10:34:11
オリジナル
601 人が閲覧しました

Symfony 2開発と展開のためのチェックリスト

キーテイクアウト

  • 開発プロセスを開始する前に、生産サーバーの互換性をテストして、アプリケーションに依存しているライブラリの欠落や不変のグローバル設定などの潜在的な問題を回避することが重要です。
  • サーバーの準備、バージョンコントロール、リモート開発モード、キャッシュ更新、エラーページのカスタマイズは、Symfony 2アプリケーションの展開中に考慮すべき重要な側面の一部です。 バージョンコントロールにGitを使用すると、開発中にリモートサイトのローカル変更を同期するのに役立ちます。また、エラーを回避するためにアプリケーションが更新されるたびにキャッシュをクリアすることも重要です。
  • Symfony 2アプリケーションのエラーページをカスタマイズすると、よりカスタマイズされたユーザーエクスペリエンスが提供されます。ただし、これらのページはTwigテンプレートの拡張機能をサポートしていないため、ゼロから設計する必要があります。
  • 私の建物では、SypePointで公開されたSymfony 2シリーズを使用して、個人的なWebアプリからつま先までつま先まで、Symfony 2を使用してWebアプリケーションを開発するために、ブートストラップ、開発、最終決定の基本(いくつかの高度なテクニック)について説明しました。ただし、シリーズの長さの制限により、「最終」ステップであるSymfony 2アプリケーションを生産環境に展開することはあまりカバーしていません。
  • 開発を行うと、おそらく「ルート」の役割にあります。しかし、生産環境では、私たちはこの特権を奪われるかもしれません。また、設定は異なる場合があります。さらに悪いことに、自分のマシンで行うようにこれらの設定を変更できない場合があります。 したがって、独自のサーバーで実際の開発が行われる前に、生産サーバーの「互換性」をチェックすることが非常に重要です。これにより、次のような恐ろしい状況が回避されます。Symfonyが依存しているライブラリが欠落していること、アプリが依存しているいくつかのグローバルな設定は不変などです。
  • プロダクションサーバーの「互換性」をテストすることは、最初に私たちが行うことであるはずです。展開中に対処すべき他のいくつかの側面もあります - さまざまなエラーメッセージなどのテンプレート

次のセクションでは、生産サーバーを完全に制御できないと仮定します。そうした場合、互換性の問題のほとんどはおそらく適用されないでしょう。

生産サーバー上の空のSymfonyフレームワーク

Symfony 2の最初の記事の指示に従って、制作サーバーに空のSymfonyフレームワークを設定してください。

これは、サーバーがサーバーにインストールされているだけでなく、PHP拡張機能としても、サーバーが有効になっているかどうかをテストするのにも役立ち、外部リソースを取得できるようにします。私の特定のケースでは、これは非常に重要です。Composer.orgは私の国でブロックされており、symfonyフレームワークを取得してインストールするためにプロキシを使用する必要があります。

この空のフレームワークは、後でバージョン制御にチェックすることができます。

設定ファイル

Symfony 2には、Webディレクトリにあるconfig.phpファイルが付属しています。これは、「準備」の問題のほとんどをテストするスクリプトです。そのページにアクセスするには、少し微調整する必要があります:

<span><span><?php
</span></span><span>
</span><span><span>if (!isset($_SERVER['HTTP_HOST'])) {
</span></span><span>    <span>exit('This script cannot be run from the CLI. Run it from a browser.');
</span></span><span><span>}
</span></span><span>
</span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
</span></span><span>    <span>'127.0.0.1',
</span></span><span>    <span>'::1',
</span></span><span><span>))) {
</span></span><span>    <span>header('HTTP/1.0 403 Forbidden');
</span></span><span>    <span>exit('This script is only accessible from localhost.');
</span></span><span><span>}
</span></span><span><span>...</span></span>
ログイン後にコピー
ログイン後にコピー

このファイルは、ローカルブラウザのみから呼び出されることを目的としています。リモートでアクセスできるように、2番目のブロックをコメントする必要があります。

私のサーバーは正しく構成されており、重要な問題はありません:

Symfony 2開発と展開のためのチェックリスト

このファイルは、以下の表に要約する準備の問題をテストします。実際のテストはApp/SymfonyRequirements.phpで行われるため、そのファイルを見ることもできます。

設定/モジュール 要件 深刻さ アクション PHPバージョン
= 5.3.3
必須ですが、5.3.16であってはなりません 最新バージョンにアップグレードします。少なくともPHP 5.4.8以上を使用することをお勧めします。 ベンダーライブラリ composer.pharによってインストールされています 必須 Composer.pharを使用して更新します キャッシュ、ログディレクトリ 書き込み可能 必須 許可を付与するためにCHMODを発行することにより。通常、特権は755または777でなければなりません。 タイムゾーン 「アジア/上海」やタイムゾーンのようなもの 必須 php.iniを変更します。 json_encode、session_start、ctype_alpha、token_get_all、simplexml_import_dom 有効になっています 必須 それぞれのPHPライブラリを有効にします。ほとんどのPHPサーバーにはこれらが有効になっています。 APC 有効/無効化 APCが使用されている場合に有効になります 別のキャッシュ/アクセラレータを使用している場合は、APCを有効にするか、APCを無効にします。 xdebug さまざまな設定 推奨される必要があります それに応じてXDebugの設定を変更します。 domdocument、MB_STRLEN、ICONY、UTF8_DECODE、INTLなど さまざまなモジュール 推奨 必要に応じて有効にします。 加速器 さまざまな設定 推奨 リクエストごとにインストールして有効にします。 「必須」の深刻さレベルは、要件を満たすためにサーバー設定を変更する必要があることを意味します。それ以外の場合、Symfony 2は実行されないため、アプリケーション開発の正しい選択ではありません。 「推奨される」アイテムは安全に無視できますが、できる限りこれらの推奨事項を満たすことをお勧めします。私の場合(上記)、私の生産サーバーには1つの警告しかありません。それは、さらなる開発のための強固で信頼できる根拠を確立します。

gitを使用してファイルを同期します

開発中、ファイルを生産サーバーにコピーする代わりに、バージョンコントロールを使用してリモートサイトにローカル変更を同期することができます。その場合、適切な.gitignore(または他のバージョン制御システムで同等)が便利になります。私の.gitignoreファイルからの以下の抜粋は参照用です:

<span><span><?php
</span></span><span>
</span><span><span>if (!isset($_SERVER['HTTP_HOST'])) {
</span></span><span>    <span>exit('This script cannot be run from the CLI. Run it from a browser.');
</span></span><span><span>}
</span></span><span>
</span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
</span></span><span>    <span>'127.0.0.1',
</span></span><span>    <span>'::1',
</span></span><span><span>))) {
</span></span><span>    <span>header('HTTP/1.0 403 Forbidden');
</span></span><span>    <span>exit('This script is only accessible from localhost.');
</span></span><span><span>}
</span></span><span><span>...</span></span>
ログイン後にコピー
ログイン後にコピー
これは、網羅的または適切なプルーズリストではありません。たとえば、NetBeansではなくphpstormを使用している場合、NetBeansセクションを削除して、phpstormに適合するフィルターに置き換えることができます。

またはそれらを両方にしたままにしておくので、他のIDEを使用している可能性のある他の開発者に自動的に収容できます。常に最初の3つのセクション(作曲家、Symfony、ログ)を含めることをお勧めします。
<span># Composer
</span><span>vendor
</span><span>vendor/*
</span><span>!public/assets/js/vendor
</span><span>!public/assets/js/vendor/*
</span><span>!public/assets/css/vendor
</span><span>!public/assets/css/vendor/*
</span><span>composer.phar
</span><span>composer.lock
</span><span>
</span><span># Symfony
</span><span>app/cache/*
</span><span>app/logs/*
</span><span>
</span><span># Logs
</span><span>error.log
</span><span>access.log
</span><span>
</span><span># Netbeans
</span><span>nbproject
</span><span>.nbproject
</span><span>.nbproject/*
</span><span>nbproject/*
</span><span>nbproject/private/
</span><span>build/
</span><span>nbbuild/
</span><span>dist/
</span><span>nbdist/
</span><span>nbactions.xml
</span><span>nb-configuration.xml</span>
ログイン後にコピー

キャッシュのクリア

Symfonyアプリがリモートサーバーで初めて実行されると、アプリ/Cache/Prodディレクトリにコンパイルされたバージョンのアプリが作成されます。ファイル、特にコントローラーとルートが更新されると、キャッシュを更新する必要があります。または、出力が正しくなく、多くの場合500のエラーが発生する場合があります。

キャッシュをクリアするには、通常、制作サーバーにSSHを使用し、APPディレクトリの下でRM -RFキャッシュコマンドを実行します。コンソールキャッシュ:クリアまたはコンソールキャッシュ:ウォームアップコマンドは、そうするための最もクリーンな方法ではない場合があります。

リモート開発モード

これを注意して使用し、絶対に必要な場合にのみ!

場合によっては、ローカル機能サイトが生産サーバーに展開されるとクラッシュするだけです。これを引き起こす理由は複雑であり、コーディングプロセス自体とは関係ありません。これらの状況では、リモート開発モードを有効にすることを検討できます。

これを行うには、app_dev.php:

>以下のコードブロックにコメントすることにより、ローカルホストチェックを無効にするために同様のアプローチを採用しています。

次に、http://rsywx_remote/app_dev.phpのようなドメインとページにアクセスできます。何かがうまくいかない場合、この開発モードはより便利なデバッグ情報を表示し、いくつかの深い根付いた問題を見つけるのに役立ちます。このデバッグ期間中にセキュリティを追加するには、自分のIPから上記のファイルへの訪問のみを許可するチェックを追加します。これにより、他のすべての人のために開発モードがオフになります。ほとんどの問題は、データベースのセットアップ(間違ったデータベースおよび/または資格情報)、間違ったAPI URI(ローカルおよびリモートURIが異なる場合がある)、時代遅れのキャッシュ、局所的に使用されているがリモートで有効になっていないものなどに関連しています。

問題が修正されたら、フルアクセス制御を復元するために、これらの行を解除することを忘れないでください。通常のユーザーは、アプリのエントリポイントとしてapp.phpを使用することのみを許可されます。
<span># IntelliJ - PhpStorm and PyCharm
</span><span>.idea
</span><span>.idea/
</span><span>.idea/*
</span><span>*.iml
</span><span>*.ipr
</span><span>*.iws </span>
ログイン後にコピー

エラーページをカスタマイズ

Symfony 2のデフォルトのTwigテンプレートエンジンは、いくつかのエラーページ(404、500など)を提供します。ただし、これらのページの設計は通常、アプリケーションに適合しません。公式サイトには、これを行う方法について詳細な説明があります。独自のレイアウトとテーマに基づいて、独自のエラーページを作成できます。

エラーページをカスタマイズして、それらをApp/Resources/Twigbundle/Views/Exceptionの下に配置できます。ファイルは、404エラーの場合はerror404.html.twig、403エラーなどのerror403.html.twig、または一般的な目的でのhtml.twigという名前と呼ぶことができます。

Symfony 2では、エラーメッセージページはTwigテンプレートの拡張機能をサポートしていないことに注意することが重要です。これは、他のページ向けに設計された既存のレイアウトからエラーページを拡張できないことを意味します。エラーページをゼロから設計する必要があります。これは少し不便ですが、まだ深刻なサイトで行う価値があります。

結論

この記事では、サーバーの準備、バージョン制御、リモート開発モード、キャッシュアップデート、エラーページのカスタマイズなど、Symfonyの展開関連のトピックについて説明しました。

展開は通常、開発の最終ステップです。この記事が、一般的なピットファルを避け、展開プロセスをよりスムーズにするのに役立つことを願っています。

この記事を再提出してください。面白いことや便利だと感じた場合は、フィードバックがある場合は以下にコメントを残してください。

Symfony 2開発と展開に関するよくある質問

Symfony 2には、Web開発のための強力なツールになる多くの機能があります。これらの機能には、複数のプロジェクトで使用できる再利用可能なコンポーネント、クリーンで保守可能なコードを促進するMVC設計パターンのサポート、およびデータベース抽象化のためのDoctrine ORMの使用が含まれます。 Symfony 2には、アプリケーションに包括的なセキュリティシステムを提供する堅牢なセキュリティコンポーネントもあります。

symfony 2アプリケーションを展開するにはどうすればよいですか?

Symfony 2アプリケーションの展開には、いくつかのステップが含まれます。まず、サーバーがSymfonyを実行するための要件を満たしていることを確認する必要があります。これには、PHPがインストールされ、正しく構成されていることが含まれます。サーバーがセットアップされたら、GITなどのツールを使用してアプリケーションをサーバーにクローンできます。その後、Composerを使用してアプリケーションの依存関係をインストールする必要があります。最後に、Symfonyアプリケーションの「Web」ディレクトリを指すようにWebサーバーを構成する必要があります。 2新しいバージョンへのアプリケーションは、Composerを使用して実行できます。まず、プロジェクトの「composer.json」ファイルを更新して、使用するSymfonyの新しいバージョンを指定する必要があります。その後、「Composer Update」コマンドを実行してアプリケーションを更新できます。アップグレード後にアプリケーションを徹底的にテストして、すべてが予想どおりに機能することを確認することが重要です。他のソフトウェアのプラグイン。これらは、Symfony 2コードをパッケージ化および配布する方法です。ライブラリ、テンプレート、コントローラー、構成など、基本的に実行できるPHPコードから何でも含めることができます。 Symfonyコミュニティが提供するバンドルを使用したり、独自のバンドルを作成したりできます。バンドルを使用するには、ダウンロードし、「appkernel.php」ファイルで有効にし、必要に応じて構成します。 > Symfony 2は、エラーと例外を処理するための強力で柔軟な方法を提供します。開発中に詳細なエラーメッセージを提供する「デバッグ」コンポーネントが組み込まれています。制作環境では、Symfony 2はすべての例外をキャッチし、それらを「応答」オブジェクトに変換します。 「App/Resources/Twigbundle/Views/Exception」ディレクトリでテンプレートを作成して、エラーページをカスタマイズできます。フォームの作成と管理が簡単になる「フォーム」コンポーネント。 「フォームタイプ」クラスを作成し、フォームのフィールドを定義することにより、フォームを作成できます。フォームが作成されたら、コントローラーでフォームの送信を処理できます。 Symfony 2は、検証制約を使用してフォームデータを検証する方法も提供します。および許可。フォームログイン、HTTP Basic Authentication、またはOAuthなどのさまざまな認証方法を構成できます。承認のために、Symfony 2は、ユーザーの微調整されたアクセス許可を定義できる柔軟な「アクセス制御リスト(ACL)システムを提供します。

Symfony 2アプリケーションのパフォーマンスを最適化するにはどうすればよいですか?

Symfony 2アプリケーションのパフォーマンスを最適化する方法はいくつかあります。これらのいくつかには、生産に「製品」環境を使用し、オペコードキャッシュ用のAPC PHP拡張機能を可能にし、作曲家との自動剤を最適化し、「httpcache」クラスを使用してHTTPキャッシングヘッダーを応答に追加します。

以上がSymfony 2開発と展開のためのチェックリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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