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番目のブロックをコメントする必要があります。
私のサーバーは正しく構成されており、重要な問題はありません:
このファイルは、以下の表に要約する準備の問題をテストします。実際のテストは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つの警告しかありません。それは、さらなる開発のための強固で信頼できる根拠を確立します。
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>
またはそれらを両方にしたままにしておくので、他の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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。
