この記事は、最近公開された本「Jump Start PHP Environment」から抜粋されています。ペーパーバージョンと電子書籍は、世界中の主要な書店で入手できます。ここで注文することもできます。あなたがこの抜粋を楽しんで、それが役に立つと思ったことを願っています。
アプリケーション環境に焦点を当てます。また、XAMPPのようなアンプバンドルと、それらが悪い選択とデバッグです。
アプリケーション環境とは、生産環境、開発環境、およびリリース環境などのライフサイクルのさまざまな段階でアプリケーションが存在する環境を指します。
環境という用語は、アプリケーションに関するハードウェアとソフトウェア、つまりそれを強化するために使用されます。
最も単純な環境である生産環境から始めます。
アプリケーションを展開するとき、つまり、サーバーにアップロードし、ターゲットオーディエンスが公開できるようにします。
アプリケーションのライフサイクルでは、生産環境はリアルタイムサーバーです。その設定により、他の人が接続してWebサイトを表示できるサーバーコンピューターです。このライブサーバーは、可能な限り効率的にアプリケーションを提供するように構成されます。開発プロセス中に使用するすべての追加ファイルは、コンピレーションまたはビルドと呼ばれるプロセスを通じてアプリケーションから削除されます。これについては、後でさらに説明します。生産環境では、あなたのウェブサイトはリアルタイム(または展開)と見なされ、たとえば独自のドメイン名を介してアクセスできます>。 これは、レストランで料理をして、注文した顧客に料理を届けるシェフに相当します。
開発環境
開発環境では、IDE(第2章を参照)からユニットテストライブラリ、標準の修正、コンパイラとビルダー、ファイルモニターなど、さまざまなツールを使用できます。手元に。 アプリケーションをスマートフォンと比較すると、開発環境が開発環境です。この環境には、スクリーン、ハウジング、バッテリー、さまざまなLEDなどの必要なすべてのコンポーネントが含まれており、各コンポーネントは、スマートフォンユニットの構築に使用される前に個別にテストされています。これは単体テストと呼ばれます。すべてのユニットが機能することを確認します。 アプリケーション開発における単体テストの例については、この章の最後に「もっと欲しい人」というタイトルのセクションを参照してください。
スマートフォンアセンブリのメタファーをさらに説明するために、テスト中のバッテリーには別の充電器アクセサリーが必要になる場合があります。また、画面をテストするために合成指を持つロボットアームが必要になる場合があります。
これらのアドオンはすべて、開発中にのみ存在します。これらのアドオンは、開発環境から生産環境に変換されると削除されます(deploy
とも呼ばれます)。アプリケーションでは、前述のコンピレーション/ビルドステップを意味します。さまざまなCSSとJavaScriptファイルがマージされ、Webサイトのサイズを縮小し、人々が訪問したときに速く表示されます。また、他のさまざまな最適化が発生します(この章で後半に導入) - すべてが準備が整ったときに最終製品の魅力と可能性を最大化するためです。ホストと仮想ホスト
The URL cannot be accessed when you are developing on your own computer https://www.php.cn/link/2c70bf4df3f4bfe2322ecf7a8803418c.
ご覧のとおり、これはライブWebサイトの通常のリクエストプロセスとほぼ同じです。しかし、インターネットの名前サーバーでそれを探す代わりに、ブラウザがMySite.comドメイン名を自分のコンピューターのサーバープログラムに尋ねるのはなぜですか?ホストファイル。
ホストファイルは、各オペレーティングシステムに存在する特別なファイルです。 「もっと欲しい人のために」というタイトルのセクション1で簡単に述べました。ドメイン名とその対応するIPアドレスのリストが含まれているため、コンピューター上のブラウザが読み取り、DNSと通信して行きたい場所を確認することなく直接IPアドレスに移動できます。 Windowsには、ファイルはc:windowssystem32driveversethechosts、linuxおよびmacマシンにあり、 /etc /hostsにあります。このファイルにIP名ペアを入れた場合、コンピューターはそれに従います。今すぐ試すことができます。恐れないでください - 何もうまくいかない。準備ができて?
Windowsで、検索フィールドを入力し、「メモ帳」と入力し、表示されたら右クリックして「管理者として実行」を選択します。その後、確認するように求められます。開くウィンドウで、「ファイル」>を選択し、次のようになります。メモ帳ウィンドウの右下隅で、「すべてのファイル」を選択してホストファイルを表示することをお勧めします。ダブルクリックして開きます。 Linux/Macマシンでは、検索して端末を開きます。 Linux
で、端末でsudo geditを入力して、管理者としてデフォルトのテキストエディターを開きます。管理者のパスワードを入力するように求められます。 OS xで、sudo/applications/textedit.app/contents/macos/texteditを入力します。同じタスクを実行します。これら2つのエディターのいずれかで、「ファイル」 - >「開く」に移動し、ディレクトリ /などを入力してホストファイルを見つけます。ダブルクリックして開きます。 ファイルを開いた後、最初の数行に注意してください。それらはすべてハッシュシンボル(#)で始まります。これは、それらがコメントであり、ファイルに影響を与えないことを意味します。これらはユーザーにファイルを説明するために使用され、PHPにも存在します。 さて、これらすべてのコメント行の下で、次の行を追加します。
ファイルを保存し、ブラウザでhttp://bing.comを開きます。 Microsoft Search Engine BingへのすべてのリクエストをGoogleにリダイレクトしたばかりです!もちろん、これらの変更を維持することはできません。いつものようにhttp://bing.comに再度アクセスできるはずです。
この方法を使用して、後ですべてのブラウザリクエストをhttp://mysite.com(アプリケーションのサンプルドメイン名)にリダイレクトします。これにより、リアルタイム環境に展開することなく、Webサイトの開発バージョンを簡単にテストできます。
プレリリース環境は、生産環境のコピー(ミラーとも呼ばれる)を含む別のサーバー(または複数のサーバー)です。中小企業やプロジェクトでは、通常、リリース前の環境がスキップされます。インストールされているソフトウェアバージョンのマッチング、構成値は同じであるため、できるだけ生産環境に似ているように設計されています。 Pre-Releaseは最終的なテストを実行するために使用されます。たとえば、Facebookはホームページを再設計する可能性があります。チームの専用の非プログラマー)は、まるで定期的に使用されているかのようにすべてをテストできます。すべてがうまくいけば、プレリリースから生産への最終的な展開が発生します。
プレリリースはこの本の範囲を超えていますが、それを知っておくのは常に良いことです。仮想マシンと小さな1回限りのプロジェクトの時代には、リリース前は冗長性があり、大規模で長期のWebアプリケーションでのみ機能します。
このコンテキストでは、メンテナンスモードも導入する必要があります。アプリケーション周辺の環境は変更されないため、モードではなく、ではありません。アプリケーションの状態のみが変更されます。通常、これは、「今すぐ戻って、調整!」のようなものをサイトに訪れようとしている人々に伝える生産サーバーの単なるスイッチです。
PHP開発を開始するとき、XAMPP、WAMP、MAMP、EASYPHPなどのパッケージをダウンロードしてインストールすることは非常に魅力的です。これらの名前のアンプは、「Apache、MySQL、およびPHP」を表しています。 XAMPPは、PERL言語の最後に別のPを追加します。最初の文字は、Windows、Linux、Mac OS X、またはXAMPP、Cross-Platform(任意のオペレーティングシステムで実行できることを意味する)のオペレーティングシステムを指します。
これらのバンドルには、コンピューターでPHPアプリケーションをすばやく簡単に実行するために必要なすべてのソフトウェアが含まれています。ワンクリックだけで、最初のPHPスクリプトを作成するために必要なすべてをインストールできます。それで、欠点は何ですか?
これらの問題を1つずつ解決しましょう。
コンピューターに *ampスタックなどのソフトウェアをインストールするたびに、コンピューターの一部が破損します。後でソフトウェアを削除したとしても、通常、不快なトレースが残ります。通常、通常、WindowsのレジストリキーまたはLinux上のファイルの残留物の形式です。実際、これはLinuxで特に顕著です。 WindowsおよびOS Xアプリケーションは1つのアプリケーションフォルダーにインストールされていますが、Linuxにはすべての関連ファイルが含まれています。ソフトウェアのインストールは、ショットガンで構築された城を撮影するようなものです。ワンクリックで、それらはどこにでもあります。 時間が経つにつれて、別のライブラリ、別のパッケージ、別のツールをインストールします。アプリケーションをさらに開発するにつれて、補足ソフトウェアを追加し続け、おそらくまったく異なるプロジェクトを追加します。これは、並行して新しいプロジェクトの作業を開始しているためです。たぶん、 app1は画像を編集するためにPHP拡張機能を必要としますが、app2は、コードを競合他社から隠すようにコードを閉じたソースアーカイブにパッケージ化できるようにするためにPHP拡張機能が必要です。時間が経つにつれて、マシンに数百メガバイトの開発ソフトウェアがありますが、まだ必要かどうかはわかりません。 マシンが遅くなり、アプリケーションが使用可能になり、開発マシン(使用しているコンピューター)は、アプリケーションの展開を計画している生産サーバーとは大きく異なります。この違いを優雅に処理できる。ライブWebサイトで間違いを頻繁に戦うことになり、訪問者を悩ませることになります。
これらの *アンプバンドルに依存することを拒否することにより、サーバーやその他のソフトウェアを手動でインストールすることを余儀なくされます。これにより、学習曲線の克服が強制されます。多くの点で役立ちます。また、この本の後半で説明するように、基本を習得することは実際には難しくありません。 テスト およびapp2がphp 5.3、mysql 4.0を実行し、apache(サーバーソフトウェア)を搭載したサーバーに展開することを目的としているとします。次に、新しい要件があります。 app1がphp 5.6とmysql 5.1で実行され、nginx(apacheと競合する別のサーバープログラム、「エンジンx」と発音)によって駆動できることを確認してください。ああ、私は今何をすべきですか? PHPを新しいバージョンに更新して、app1がまだ有効であるかどうかを確認できますが、PHP 5.3で使用できないコードを予期せず使用せずにapp2を開発し続けることができます。
最後に、PHPの新しいバージョンをインストールしようとしたが問題がある場合はどうなりますか?この状況は、OS XとLinuxで特に一般的です。マシンにインストールされているPHPバージョンが機能していないため、単一のサイトを実行することは不可能であることがわかります。なんてめちゃくちゃだ!以前の実行状態に簡単に復元できるのではなく、私たちは1日を費やして独自のシステムをデバッグして実行しようとすることを余儀なくされました。
一貫性を達成することは、時間の節約が大幅に節約されているため、ワークフローにとって非常に重要です。アプリケーションが生産環境で実行されるために追加の作業を行う必要がないことを避けてください。つまり、絶えず追いかけるのではなく、アプリケーションのコンテキストに本当に有益な重要なビジネス関連のロジックの問題に時間とエネルギーを自由に集中できます。開発に変更を加え、その後、変更を表示するために生産に2つの変更を加えなければならないことは、せいぜい退屈であり、最悪の場合はプロジェクトの健康を損なう可能性があります。チームの誰が間違いを犯すかはわかりませんが、アプリはユーザーにエラー画面を表示します。 一貫性を実現する最良の方法は、開発環境と同じソフトウェアを開発環境で実行することです。たとえば、Ubuntu Linux 14.04オペレーティングシステムを実行しているサーバー上の生産環境にアプリケーションを展開する場合は、このオペレーティングシステムでも開発することをお勧めします。しかし、ゲームなどの高度なマルチメディアコンテンツを使用したいのか、Linuxオペレーティングシステムにまったく存在しない強力な画像およびビデオ処理ソフトウェアが必要なため、Windowsを実行している場合はどうなりますか?他のすべての興味を放棄し、LinuxをWindowsにインストールし、他の何よりも一貫性に取り組む必要がありますか?または、コンピューターを強く、美しく安定させ、選択したオペレーティングシステムに固執しながら、一貫性を放棄し、リスクを冒す必要がありますか? 幸いなことに、両方の世界を同時に最大限に活用するには、仮想マシン(第4章で紹介されています)を得るための3番目の方法があります。 導入する必要があるアプリケーション環境の最後のいくつかの側面は、アプリケーションが高速(パフォーマンス)とエラーのない(デバッグ)であることを保証することです。このセクションは、これらの用語に遭遇したときに何を期待するかを完全に知らせるためです。 パフォーマンスは、さまざまな最適化方法を通じて達成されます。単語の意味に反して、アプリケーション開発において、最適化には通常複数のレベルがあり、すぐに完全な解決策につながる変更はほとんどありません。パフォーマンスには、以下の側面が含まれますが、これらに限定されません。
フロントエンドのリソースを最適化します学習は進歩、または快適ゾーンが過大評価されている
です
これらの事前に構築されたパッケージに依存することにより、学習システム管理(OPS for Short)も奪われます。大企業では、OPSはサーバーの問題を担当するチームまたは個人です。エラーの修正、新しいソフトウェアのインストール、既存のソフトウェアのアップグレードなどです。基本的なシステム管理は、小規模なチームで作業したり、クライアントのために単独で作業する場合、必須のスキルです。
掃除できないクラッター
これは複雑に聞こえますが、実際には非常に単純です - 私たちは実際にそれについて間接的に以前に話しました。生産/開発の一貫性とは、生産と開発環境を可能な限り類似して、できればまったく同じようにすることを意味します。そのため、開発は追加の構成やデバッグやチューニングなしで生産環境で自動的に実行されます。 パフォーマンスとデバッグ
データベースを最適化するデータベースは通常、あらゆるウェブサイトの最も遅い部分であり、データベースが一定期間実行された後、ボトルネックが登場するリクエストが不可能になったため、ボトルネックになります。最も遅い部分が明らかになると、追加の最適化の恩恵を受けることができます。データベース最適化の方法には、インデックスの設定、読み取りと書き込みの分割、データベースエンジンの変更、キャッシュされた抽出データ、およびその他の神秘的なフレーズが含まれます。
バックエンドを最適化
では、パフォーマンスを測定したり、エラーを見つけたりする方法は? PHPアプリケーションの分析に使用できる多くのツールがあります(これは、アプリケーションのあらゆる側面でエラーを見つけることと測定パフォーマンスと呼ばれるものです)。 2つの優れたツールは、ZrayとBlackfireです(この本の範囲を超えているため、この本では紹介しません)。
一般的な初心者の間違いは微小最適化であることに注意する必要があります。たとえば、文字列で単一の引用符を使用すること($ var = 'some string')を使用すると、二重引用符($ var = "some string")よりも高速であるという考えがかつてありました。この最適化が得られるパフォーマンスは無視でき、ほとんど常に些細なことです。疑わしい場合は、ベンチマークと実際のデータ(ZrayまたはBlackfireのデータなど)を使用して、直感を使用しないでください。
これがすべて複雑すぎると思われる場合は、落胆しないでください。これは、これまでのところ、ほぼ唯一の理論、つまり実践の領域に勇敢に入るために必要な理論を扱ってきたからです。次の章では、いくつかの仮想マシンを使用して自分で操作します。
もっと欲しい人のために
たとえば、
アプリケーションの一部は、各名前からローカルシンボルを削除し、アメリカに優しい文字に変換する機能を備えている場合があります。したがって、私の姓「škvorc」は「skvorc」に変換されます。 škvorcをSkvorcに変換することは、小さなコードまたはユニットです。このユニットはテスト可能です。次に、入力と必要な出力を定義するファイルであるユニットテストを作成できます。実行すると、この関数がまだ有効かどうかをテストします。 2か月後にアプリの何かを変更した場合、このテストを簡単に実行し(まだ存在します)、この変換がまだ有効かどうかを確認できます。このワークフローにより、以前に構築され忘れたことを壊すことを心配することなく、後でアプリケーションをアップグレードできるようになります。この章の冒頭のスマートフォンに関するメタファーでは、別のテスト可能なユニットがタッチスクリーンまたはバッテリーになることができます。
PHPアプリケーション環境(FAQ)PHPアプリケーション環境と他のプログラミング環境の違いはどうですか?
PHPアプリケーション環境の重要なコンポーネントは何ですか?
PHPアプリケーション環境をセットアップする方法は?
PHPアプリケーション環境はエラー処理にどのように役立ちますか?
モバイルアプリケーション開発にPHPアプリケーション環境を使用できますか?
PHPアプリケーション環境を使用することの利点は何ですか?
PHPアプリケーション環境を保護する方法は?
PHPアプリケーション環境をカスタマイズできますか?
以上がPHPアプリケーション環境の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。