ホームページ >バックエンド開発 >PHPチュートリアル >クラウドにPHPアプリを展開するための究極のガイド
この投稿はAuth0ブログで最初に公開され、許可を得てここで完全に再発行されました。 tl; dr:このようになる開発者の間には、
のようになるような人気のあるマントラがあります。このチュートリアルでは、Google Cloud、Microsoft Azure、Heroku、IBM BluemixなどのさまざまなクラウドサーバープラットフォームにPHPアプリを展開する方法を紹介します。 キーテイクアウト
ジェネリックPHPアプリケーションには、一般的な
ランプ(Linux、Apache、MySQL、PHP)スタックが含まれます。
Linux:他のソフトウェアパッケージを実行するオペレーティングシステム。Herokuは、アプリケーションを最新の方法で展開およびホストするのに役立つクラウドプラットフォームです。それはあなたのためにすべての重いものを行います。 HerokuでPHPアプリケーションを展開および維持する方法をすぐに見てみましょう。
php herokuアーキテクチャ
Herokuは、PHPアプリをDynoで実行します。これは、Webサーバー(ApacheまたはNginx)とランタイム(PHPまたはHHVM)の選択を備えた最新のスタックを提供するスマートコンテナです。
以下の手順に従ってください
auth0でアカウントが必要です。
auth0ダッシュボードに移動し、[新しいクライアントの作成]ボタンをクリックします。新しいアプリに名前を付けて、「通常のWebアプリケーション」を選択します。
新しいauth0クライアントアプリの設定で、http:// localhost:8000を許可されたコールバックURLに追加します。
クライアントIDすごい!私たちのアプリはローカルで動作します。展開する時間!最初に行うことは、アプリのルートディレクトリにProcFileを追加することです。
ファイル拡張機能なしでProcFileという新しいファイルを作成し、これを追加します。
web: vendor/bin/heroku-php-apache2Procfileは、プロセスタイプを定義し、Herokuでアプリを起動するために実行するコマンドを明示的に宣言するアプリケーションのルートディレクトリ内のテキストファイルです。
nginxをWebサーバーとして使用することに興味がある場合は、
procfileのコンテンツは次のとおりです。 Procfileを追加したので、先に進み、プロジェクトをGitHubまたはBitBucketにアップロードします。鉱山はstarwazappです。
dashboard.heroku.com/appsに向かい、そうなどの新しいアプリを作成します:web: vendor/bin/heroku-php-nginx
ダッシュボードから新しいアプリを作成します
展開方法を選択します。私たちの場合、githubは次のように使用します
github
に接続します
Githubを選択する理由は、開発とメンテナンスプロセスを非常にスムーズにすることです。開発者は、Gitワークフローを使用して新機能に取り組むことができます。
次に、丸で囲まれた領域のリポジトリの名前を入力し、[検索]をクリックします。 HerokuはGitHubアカウントの下でレポを検索し、のように表示します
を検索しますレポ
connectをクリックして
をクリックします
[接続]ボタンをクリックします
herokuは、
のようにリポジトリを接続します
接続されたプロジェクト
少し下にスクロールします。これは興味深い部分です。 Herokuを使用すると、ボタンを押すだけで自動展開を有効にすることができます。また、生産に展開する前に、継続的な統合プロセスが合格するのを待つオプションも提供します。実際のアプリでは、コードベース用のテストスイートがあります。開発者のコードは、テストスイートに対して実行されます。通過した場合、コードは生産にプッシュされます。
クリックして自動展開を有効にします。 CIサービスはありませんので、そのオプションを有効にする必要はありません。それでは、マスターブランチを展開しましょう
注:他のブランチを使用して、生産に必要なブランチを指定できます。私たちの場合、マスターブランチは生産ブランチです。
[展開ブランチ]をクリックします。 HerokuはComposer.Lockファイルをスキャンし、必要なパッケージをインストールし、展開!
エラー500 おっと! 500エラーが発生しています。ああ、環境変数はまだ設定していません。ローカルでは、.ENVファイルがありました。 Herokuでは、.ENVファイルはありませんが、環境変数を設定する方法があります。ダッシュボードの設定に移動し、そのような構成変数としてそれらを追加します:
ああ、もう一つ!私の場合の新しいコールバックURLはhttp://starwazapp.herokuapp.comです。 auth0ダッシュボードで、新しいコールバックURLを許可されたコールバックURLS
あなたのアプリは今ライブで働いているはずです!
ライブアプリ
小さな変更を加えます
アプリに小さな変更を加えて、それがどれほど楽に展開しているかを本番に展開しましょう。
タグのコンテンツを変更したことから、php 7に移行したくないのですか?あえて私たち!スターウォーズへ - 目覚め!マスターブランチにコミットしてプッシュします。次に、Herokuダッシュボードのアクティビティタブに移動し、ビルドに気付きます。アプリをリロードすると、違いが表示されます。
ビルドが成功しました
新しいバージョン
データベース、キャッシュ、クロンジョブ
データベース、キャッシュ、クロンのジョブの処理方法についてすぐに話しましょう。 Herokuでは、PHPでcleardbとpostgresを使用できます。 cleardbをアプリに追加します
このコマンドは、新しいCLEARDBデータベースを提供し、アプリがアクセスするために使用するURLを返します。あなたがする必要があるのは、環境変数としてアプリにそれを追加し、あなたのアプリの構成でそれを解析することです。
mysqli PDOスタイルに合わせて微調整できます。そのようにアプリにpostgresを追加してください:
web: vendor/bin/heroku-php-apache2
アドオンに向かうと、PHPアプリで使用できる他の種類のデータベースが表示されます。
Herokuは、Memcacheから迅速に、Ironcacheなどにキャッシュするための追加のアドオンを提供します。ここで、HerokuでMemcacheを使用する方法を確認できます。最後に、スケジュールされた時間間隔でアプリでジョブを実行するためにHerokuスケジューラを使用できます。
Google Cloud
Google Cloud Platformは、世界中の多くの企業がアプリの展開とホストに採用している巨大で信頼できるクラウドプラットフォームです。アプリは、Googleのすべての製品を強化するのと同じインフラストラクチャで実行されます。あなたのアプリケーションがあなたの何千人ものユーザーに簡単にサービスを提供するのに十分なほど十分にスケーリングされることを保証するために、あなたは他にどのような自信が必要ですか?
Google Cloudは、PHPアプリをホストするためのさまざまなオプションを提供しています。このプラットフォームは、アプリエンジン(完全に管理された)、コンピューティングエンジン(スケーラブルVM)、コンテナエンジン(Kubernetesクラスター)を提供します。
私たちの場合、アプリエンジンを使用します。インフラストラクチャを抽象化します。有名なスターウォーズアプリをGoogleアプリエンジンに展開しましょう。Google App Engineを使用する場合、標準または柔軟な環境を選択できます。後者は、名前が示すように、Debian Linuxで動作するPHP拡張機能をインストールすることができ、構成可能なnginx Webサーバー、書き込み可能なファイルシステム、最新のPHPバージョンを備えており、composer.jsonを使用して展開スクリプトを実行できます。
柔軟な環境を使用します。先に進んで、新しいプロジェクトを作成します。 [作成]をクリックし、プロジェクトに名前を付け、アプリを提供する領域を選択し、請求を有効にします。
注:許可なしに請求されることはありません。
Google SDKのインストールさあ、Google SDKをダウンロードして、Googleクラウドツールをインストールしてください。
gcloudを実行してください先に進んで、プロジェクトのルートでapp.yamlファイルを作成します。 app.yaml
さあ、GCLoudアプリの展開を実行して、コンソールからアプリケーションを展開します。
したがって、.envファイルはGoogle Cloudにプッシュされました。それを使用する代わりには、環境変数をapp.yamlファイルに追加することです。
URLをつかんでください。私の場合、それはhttps://starwars-166515.appspot.com/であり、許可されたOrigins(CORS)に追加し、Auth0ダッシュボードの許可コールバックURLを追加します。また、.envファイルにauth0_callback_urlにURLを追加します。
gcloudアプリを再び展開して、アプリの新しいバージョンをプロビジョニングします。今すぐアプリをチェックしてください。それはそうするように生きるべきです:
web: vendor/bin/heroku-php-apache2ライブアプリ
web: vendor/bin/heroku-php-nginxデータベース、キャッシュ、クロンジョブGoogle Cloudは、クラウドSQLインスタンスプラットフォームを提供しています。アプリのMySQLインスタンスの構成、接続、作成の方法をご覧ください。
Google App Engineでphpmyadminを使用することもできます
Google Appエンジンには、標準のMemcacheおよびMemcached APIの実装が含まれています。 Google CloudのアプリでMemcacheの使用方法をご覧ください。App Engine Cron Serviceを使用すると、定義された時間または通常の間隔で動作する定期的にスケジュールされたタスクを構成できます。 Cronジョブをスケジュールし、GoogleクラウドでPHPでタスクキューを使用する方法を確認してください。
Laravel、Symfony、およびWordPressアプリをGoogle Cloudプラットフォームに展開するのは比較的簡単です。ibm bluemix
IBM Bluemixを使用すると、強力で高性能のグローバルクラウドインフラストラクチャを簡単に構成、展開、および拡張できます。有名なスターウォーズアプリをIBM Bluemixに展開しましょう。
SOのようにBluemixにサインアップしてください:
Bluemixのサインアップ
注:Bluemixプラットフォームは30日間の無料トライアルを提供するため、クレジットカードの詳細を渡す前に独自のアプリケーションを展開してみる機会があります。 先に進み、組織とスペースを作成します。私は自分のスペース製品と名付けました
さあ、先に進み、Cloud Foundry CLIをインストールしてください。それを行ったら、ターミナルからログインしてください。
bluemix
にログインします次のステップは、アプリのルートディレクトリにmanifest.ymlファイルを作成することです。 Manifest.ymlファイルには、名前、各インスタンスに割り当てるメモリの量、ルートなど、アプリに関する基本情報が含まれています。マニフェストファイルは次のようになります
web: vendor/bin/heroku-php-apache2マニフェストファイルのbuildpackを明示的に指定することもできます。ありがたいことに、Cloud Foundryは、アプリをプッシュするときに必要なBuildPackを自動的に検出します。
BuildPackは、アプリケーションのフレームワークとランタイムサポートを提供します。通常、BuildPackはユーザーが提供するアーティファクトを調べて、ダウンロードする依存関係と、バインドサービスと通信するためにアプリケーションを構成する方法を決定します。 最後に、次のコマンドを実行してアプリを展開します。
は一意の名前でなければなりません。 web: vendor/bin/heroku-php-nginxdeployを開始
deployの終了
heroku addons:create cleardb:ignite今すぐアプリを実行してみてください。私の場合、URLはstarwarsapp.mybluemix.netです。おっと、500エラー。まだ環境変数をロードしていません。 Bluemixでそれをどのように行うのですか?
Cloud Foundry CLIまたはBluemixユーザーインターフェイスを使用して、環境変数を設定できます。 Bluemixユーザーインターフェイスを使用しましょう。したがって、以下の手順に従ってください:
bluemixダッシュボードを開きます。![]()
アプリをクリックします。アプリの詳細が記載された別のページにリダイレクトされます。
![]()
左パネルから[ランタイム]を選択します。
さあ、環境変数をクリックしてください
下にスクロールして[追加]ボタンをクリックして、
のような環境変数を追加します
[保存]ボタンをクリックします。それを行うと、アプリは自動的に再起動します
データベース、キャッシュ、クロンジョブ
Cloud Foundryは、サービスを作成する機能を提供します。 IBM Bluemixは、Cloudant NoSQLデータベース(CouchDBのBluemix名)を提供しています。 CFツールを使用して、次のようなデータベースサービスを作成できます。
彼らはMongodb、postgresql、およびrethinkdbを提供します
クラウドファウンドリーツールをいつでも使用して、ログ、環境変数などの多くのものをチェックアウトできます。web: vendor/bin/heroku-php-apache2
cf logs -Recent YourApp - アプリのログを表示します。
cf env yourapp - アプリに関連付けられた環境変数を示しています。web: vendor/bin/heroku-php-nginx
CFマーケットプレイス - Bluemixが提供しなければならないすべてのサービスを示しています。
IBM Bluemixは、BluemixでRedisデータセットを非常に利用可能でスケーラブルな方法でホスティングと実行するための完全に管理されたクラウドサービスであるRedis Cloudも提供しています。
IBM Bluemixは、ワークロードスケジューラサービスを提供します。このサービスを使用すると、アプリケーションをワークフローをスケジュールする機能と統合できます。 Cronをはるかに超えて、Bluemixの内外で仕事のスケジューリングを悪用します。あなたのニーズに応じて、アプリケーションで特定の時間に定期的に実行するために、特定の時期にイベント(たとえば、ファイルが削除または更新されたとき)で簡単に実行するように簡単に作成します。ftp。
クラウドフォルダーと同期します。 local git。
GithubやBitbucketなどのクラウドベースのソース制御サービス。
この場合、git。
で展開をセットアップします最初に、Microsoft Azureを使用してアカウントを作成します。
左側のパネルで[新規]をクリックします
[Web SQL]をクリックしてから、先に進んで作成します
快適なサブスクリプションの種類のオファーを選択するように求められます。私は無料トライアル
新しいアプリを作成します
新しいアプリ
アプリをクリックして、
リポジトリへのアクセスを許可し、プロジェクトとブランチを選択します。私の場合、私は紺nのブランチを持っています。それが私のコードをAzureプラットフォームに展開するために使用するブランチです。
展開通知を確認してください。
さて、http:// [yoursitename] .azurewebsites.netを参照してください。私の場合、それはhttp://starwarzapp.azurewabsites.net。
ですoops!、HTTP 500エラーがあります。何が起こっていますか?さて、環境変数を再度設定する必要があります
さあ、アプリに少し変更して、GitHubに再びプッシュします。そうするように展開するのを見るはずです:
Microsoft Azureは Azure Redis Cacheを提供します。人気のあるオープンソースRedisキャッシュに基づいています。 SOのように簡単に作成して使用できます:
azureの内側または外側のサービスを呼び出します。
Laravel開発者は、AzureでアプリのMySQLデータベースを簡単に構成できます。
Amazon Web Services有名なスターウォーズアプリの展開に使用するサービスは、Amazon Elastic BeanStalkです。始めましょう。
そうな許可を追加します:
ライブアプリ
展開方法を確認してください:
弾性beanStalkへのlaravelアプリ。
キャッシュの場合、Amazon Web ServicesはElasticacheを提供します。これは、クラウド内のメモリ内データストアまたはキャッシュを簡単に展開、操作、およびスケーリングできるWebサービスです。 Amazon Elasticacheは、2つのオープンソース内のインメモリエンジンをサポートしています
Airbnb、Healthguru、Placeiq、および東京データネットワークなどの企業は、HTMLフラグメント、高価なDBクエリの結果、一時的なセッションデータ、および検索結果にまたがる複数の層でのキャッシュにElastasticacheを使用します。
ここでPHP用の弾薬クラスタークライアントをインストールする方法をチェックしてください。
弾力性のあるBeanStalkにCronジョブを設定できます。 Amazon Web Services(AWS)Elastic BeanStalkでCronジョブを実行する方法を学ぶ。ここに、弾性があり、弾力性のあるbeanstalkを備えたPHPビジターカウンターの構築に関する優れた投稿があります
laravel forge
Taylor Otwellによって作成されたLaravel Forgeは、数分でアプリケーションを展開および起動するのに役立つプラットフォームです。それはあなたのために重くなります。 Forgeは、Linode、Digital Ocean、AWSなどの人気のあるクラウドホスティングプロバイダーにサーバーをプロビジョニングします。最初はLaravelアプリ用に構築されていましたが、今では実質的にPHPアプリケーションをサポートしています。letsencryptと統合して、アプリの無料のSSL証明書を生成します。
ジョブとキューを簡単に管理します。
サーバーの管理ダッシュボードを同僚と共有することにより、チームとのコラボレーション。
James Fairhurstには、Laravel Forgeを使用してAWSサーバーをセットアップするための素晴らしいガイドもあります。
Deployerは、PHPの展開ツールです。次のことを行うことができます:
、symfony、cakephp、yiiframework 、zend、fuelphpで動作します、 drupal、 wordpress、およびmagento。 Deployerを使用したPHPアプリケーションの展開に関するこの優れた記事をご覧ください。 結論
PHPアプリケーションの展開に利用可能なすべてのさまざまなオプションをカバーする方法はありません。 PHPは長年にわたって進化してきたエンタープライズ言語であるため、PHPアプリをローカルマシンから生産に展開するためのより効率的な方法が必要です。うまくいけば、このガイドは、PHPアプリをすべての主要なクラウドプロバイダーに展開するためのすべての基本的なニーズをカバーしています。ただし、PHPアプリケーションを展開することを学習するための広範な知識をお勧めする別のリソースがあります。クラウドにPHPアプリを展開するには、いくつかの利点があります。まず、スケーラビリティを提供します。アプリケーションが成長するにつれて、リソースを簡単に調整して需要を満たすことができます。第二に、費用対効果を提供します。使用するリソースのみを支払うことができます。これは、従来のホスティングと比較して大幅に節約できます。第三に、クラウドホスティングはパフォーマンスと速度を向上させます。世界中のデータセンターを使用すると、アプリケーションをユーザーの近くでホストしてレイテンシを削減できます。最後に、アプリケーションが単一のサーバーに依存していないため、より良い信頼性と稼働時間を提供します。 PHPアプリについては、いくつかの要因に依存します。これらには、アプリケーションの特定のニーズ、予算、および技術的な専門知識が含まれます。一部のクラウドサービスはより高度な機能を提供しますが、効果的に使用するにはより技術的な知識が必要になる場合があります。他のものはよりユーザーフレンドリーな場合がありますが、同じレベルのカスタマイズやコントロールを提供しない場合があります。各オプションを徹底的に調査し、特定のニーズにとってどの機能とサービスが最も重要であるかを検討することが重要です。
Google CloudにPHPアプリを展開するには、いくつかのステップが含まれます。まず、Google Cloudアカウントを作成して新しいプロジェクトを設定する必要があります。次に、Google Cloud SDKをローカルマシンにインストールする必要があります。次に、App.yamlファイルでアプリの設定を構成する必要があります。その後、GCLoudアプリDeployコマンドを使用してアプリを展開できます。最後に、gcloudアプリBrowseコマンドを使用してブラウザでアプリを表示できます。クラウドにはいくつかの測定が含まれます。これらには、安全なコーディングプラクティスの使用、ソフトウェアの定期的に更新およびパッチを適用し、輸送および安静時のデータの暗号化を使用し、強力なアクセス制御を実装し、異常なアクティビティのシステムを定期的に監視および監査します。 CloudwaysのようなPHPホスティングプラットフォームの役割?
既存のPHPアプリをクラウドに移行するにはどうすればよいですか?ステップ。まず、クラウドサービスを選択してアカウントを作成する必要があります。次に、アプリを移行のために準備する必要があります。これには、クラウド環境との互換性を確保するために、コードのリファクタリングやその他の変更を行うことが含まれます。次に、アプリをクラウドに展開し、徹底的にテストして正しく機能し、ユーザーを新しいバージョンに切り替える必要があります。
クラウドでのPHPアプリのパフォーマンスを最適化するにはどうすればよいですか?クラウド内のPHPアプリには、いくつかの戦略が含まれます。これには、ニーズに合った適切なサイズとクラウドリソースの選択、キャッシュやその他のパフォーマンス向上機能の使用、コードとデータベースのクエリの最適化、必要に応じてリソースの監視と調整を定期的に監視および調整することが含まれます。
Google Cloud PHPライブラリは、PHPアプリからGoogle Cloud Servicesと対話する方法を提供します。彼らは、データの保存と取得、クエリの実行、リソースの管理など、さまざまな操作を実行するために使用できる一連のAPIを提供します。これらのライブラリを使用すると、アプリをGoogle Cloudと統合し、その機能とサービスを利用しやすくなります。
以上がクラウドにPHPアプリを展開するための究極のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。