Awsbox-AmazonクラウドにNode.jsアプリケーションをデプロイするためのPaaSインフラストラクチャ

翻訳者から:これは、 ペルソナプロジェクトに関係するMozilla IdentityチームによるNode.jsシリーズの最後の12番目の記事です。










Node.jsでアプリケーションを作成した後、サーバーにデプロイする方法は? 既製のPaaSソリューションを使用する代わりに、私たちのチームはAmazon EC2の上に独自のインフラストラクチャを作成しました。 次に、その方法について詳しく説明します。



Node.jsのPaaSインフラストラクチャの最小限のレイヤーであるawsboxを導入し、現在は数十の重要ではないMozillaサービスを提供しています。 Awsboxは、カスタムインフラストラクチャの柔軟性を失うことなく、PaaSに固有のシンプルで簡単な展開を提供するように設計されています。



awsboxを使用する



awsboxの使用を開始するには、アプリケーションにいくつかの小さな変更を加え、環境変数にAmazon認証情報を追加する必要があります。 その後、コマンドラインツールを使用して展開を開始できます。



アプリケーションは次の変更を行う必要があります。





Amazon認証情報は、 AWS_ID



およびAWS_SECRET



環境変数で指定する必要があります。 それらはAmazon管理コンソールで見つけることができます。



構成が完了したら、npmを使用してawsboxモジュールをインストールし、サーバーを作成できます。



 $ node_modules/.bin/awsbox create -n MyFirstAWSBOX reading .awsbox.json attempting to set up VM "MyFirstAWSBOX" ... VM launched, waiting for startup (should take about 20s) ... Instance ready, setting human readable name in aws ... name set, waiting for ssh access and configuring ... public url will be: http://<IP ADDRESS> ... nope. not yet. retrying. ... victory! server is accessible and configured ... applying system updates ... and your git remote is all set up ... configuring SSL behavior (enable) Yay! You have your very own deployment. Here are the basics: 1. deploy your code: git push MyFirstAWSBOX HEAD:master 2. visit your server on the web: http://<IP ADDRESS> 3. ssh in with sudo: ssh ec2-user@<IP ADDRESS> 4. ssh as the deployment user: ssh app@<IP ADDRESS>
      
      





最後のステップは、アプリケーションを実際にデプロイすることです。 これはgit push



を使用して行われます:



 $ git push MyFirstAWSBOX HEAD:master
      
      





これで、アプリケーションがEC2仮想マシンで実行されます。 全体の手順は約20分かかり、アプリケーションへの最小限の変更が必要です。 開発プロセスのすべての変更は、 git push



介して通常の方法でサーバーにアップロードできます。



ここで、awsboxの基本機能に精通したら、一歩戻ってこのモジュールがどのように機能するかを見てみましょう。



AWSBoxは最小限の契約です



稼働中のサーバー環境には、起動するアプリケーションに特定の要件があります。言い換えると、それはそれとの契約を締結します。 awsboxの場合、契約の主なポイントは次のとおりです。



どのプロセスが起動されますか? これは.awsbox.json



で指定する必要があります。 最も単純な形式では、次のようになります。



 { "processes": [ "path/to/myprocess.js" ] }
      
      





どのソフトウェアをインストールする必要がありますか? リストはpackage.json



にリストされている必要があります。



サーバーはどのポートをリッスンする必要がありますか? ポート番号はPORT



環境変数に含まれている必要があります。



awsboxを作成するとき、既存のアプリケーションを簡単に移植できるように、アプリケーションへの影響を最小限にしたかったのです。



Awsboxは仮想マシンイメージです



インストール中に、awsboxはイメージから仮想マシンのインスタンスを作成し、依存関係をインストールして、アプリケーションを起動します。 イメージは、Amazonが提供するLinuxイメージであるAmazon Linux AMIに基づいて構築されています。 このイメージでは、rpmパッケージリポジトリとyumパッケージマネージャーを使用できます。 特定のイメージIDは、awsboxコードにリストされています。



作成されたマシンインスタンスには、いくつかの定義済みアカウントがあります。 ec2-user



アカウントは、sudoを実行できるサーバー管理者です。 proxy



アカウントは、リバースHTTPプロキシへのアクセスに使用されます。このproxy



は、アプリケーションを変更せずにSSLを有効にし、HTTPSをサポートするように構成できます。 最後に、 app



アカウントは、アプリケーション、サーバーログ、リポジトリ、およびgitフックにアクセスできます。 彼は、依存関係のインストールとアプリケーションの実行を担当しています。



AWSBoxはコマンドラインツールです



awsboxをインストールすると、ローカルマシンに一連のJavaScriptライブラリとコマンドラインツールが取得されます。 スクリプトとコンソールコマンドを使用すると、Amazon Webコンソールよりもはるかに高速にアプリケーションをデプロイでき、WebおよびSSH経由でアクセス可能なEC2インスタンスを作成するほとんどの作業を引き受けることができます。



さらに、awsboxには、アプリケーションサーバーを管理するための多くのコマンドが用意されてnode_modules/.bin/awsbox -h



実行すると、その完全なリストを表示できます。



このセットの中で最も興味深いチームはcreate



です。 彼女は仮想マシンを作成します。



Awsboxは多くの機能とフックです



最も基本的なサーバーを除くすべてのサーバーには、Node.jsおよびNodeパッケージだけが必要ではありません。 Awsboxでは、yumを使用してインストールするシステムパッケージを指定できます。 さらに微調整するには、2つの方法があります。



SSHアクセス 。 awsboxの目標は、展開を可能な限り高速化することです。また、READMEでこれらの手順について言及することを忘れずに、いくつかの設定を手動で設定するのが最も簡単かつ迅速な場合があります。 しかし、何かを自動化できます。



自動構成用のスクリプト 。 Awsboxには、インストールの特定の段階でカスタムスクリプトを追加できるフックが用意されています。 彼らの助けを借りて、 MySQL設定したり、 Redisをインストールしたり、アプリケーションで必要なものをインストールしたりできます。



awsboxは私に合っていますか?



重要ではないサービスに対して単一のアプリケーション展開メカニズムを使用することで、チームの生産性が大幅に向上しました。 環境とアプリケーション間のシンプルで理解可能な契約により、コラボレーションが大幅に簡素化されます。 確立された一連の規則により、トラブルシューティングが簡素化されます。 最後に、準備中の依存関係のリストがすでにあると、実験アプリケーションを本番環境に移行するのが簡単になります。



独自のNode.js実験サービスをデプロイするソリューションを探している場合は、awsboxをご覧ください。









All Articles