次のセクションでは、生産サーバーを完全に制御できないと仮定します。そうした場合、互換性の問題のほとんどはおそらく適用されないでしょう。
生産サーバー上の空の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番目のブロックをコメントする必要があります。
私のサーバーは正しく構成されており、重要な問題はありません:
このファイルは、以下の表に要約する準備の問題をテストします。実際のテストはApp/SymfonyRequirements.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つの警告しかありません。それは、さらなる開発のための強固で信頼できる根拠を確立します。
開発中、ファイルを生産サーバーにコピーする代わりに、バージョンコントロールを使用してリモートサイトにローカル変更を同期することができます。その場合、適切な.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>
またはそれらを両方にしたままにしておくので、他の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>
キャッシュのクリア
キャッシュをクリアするには、通常、制作サーバーに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 2開発と展開に関するよくある質問Symfony 2には、Web開発のための強力なツールになる多くの機能があります。これらの機能には、複数のプロジェクトで使用できる再利用可能なコンポーネント、クリーンで保守可能なコードを促進するMVC設計パターンのサポート、およびデータベース抽象化のためのDoctrine ORMの使用が含まれます。 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アプリケーションのパフォーマンスを最適化する方法はいくつかあります。これらのいくつかには、生産に「製品」環境を使用し、オペコードキャッシュ用のAPC PHP拡張機能を可能にし、作曲家との自動剤を最適化し、「httpcache」クラスを使用してHTTPキャッシングヘッダーを応答に追加します。
以上がSymfony 2開発と展開のためのチェックリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。