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

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></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></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 までご連絡ください。
Laravelでフラッシュセッションデータを使用しますLaravelでフラッシュセッションデータを使用しますMar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法PHPのカール:REST APIでPHPカール拡張機能を使用する方法Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキングLaravelテストでの簡略化されたHTTP応答のモッキングMar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPロギング:PHPログ分析のベストプラクティスPHPロギング:PHPログ分析のベストプラクティスMar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Codecanyonで12の最高のPHPチャットスクリプトCodecanyonで12の最高のPHPチャットスクリプトMar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。PHPにおける後期静的結合の概念を説明します。Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい