サイクルのすべての記事:
- 「 Node.jsでのメモリリークのハンティング 」
- 「 ノードを眼球にロードします 」
- 「 アプリケーションのスケーリングを簡素化するために、クライアントにセッションを保存します 」
- 「 フロントエンドのパフォーマンス。パート1-連結、圧縮、キャッシング 」
- 「 負荷がかかってもクラッシュしないサーバーを作成しています 」
- 「 フロントエンドのパフォーマンス。パート2-etagifyを使用した動的コンテンツのキャッシュ 」
- 「 node-convictを使用したWebアプリケーション構成の調整 」
- 「 フロントエンドのパフォーマンス。パート3-フォントの最適化 」
- 「 Node.jsアプリケーションのローカライズパート1 」
- 「 Node.jsアプリケーションのローカライズパート2:ツールキットとプロセス 」
- 「 Node.jsアプリケーションのローカライズパート3:アクションのローカライズ 」
- 「 Awsbox-Amazon CloudにNode.jsアプリケーションをデプロイするためのPaaSインフラストラクチャ 」
Node.jsでアプリケーションを作成した後、サーバーにデプロイする方法は? 既製のPaaSソリューションを使用する代わりに、私たちのチームはAmazon EC2の上に独自のインフラストラクチャを作成しました。 次に、その方法について詳しく説明します。
Node.jsのPaaSインフラストラクチャの最小限のレイヤーであるawsboxを導入し、現在は数十の重要ではないMozillaサービスを提供しています。 Awsboxは、カスタムインフラストラクチャの柔軟性を失うことなく、PaaSに固有のシンプルで簡単な展開を提供するように設計されています。
awsboxを使用する
awsboxの使用を開始するには、アプリケーションにいくつかの小さな変更を加え、環境変数にAmazon認証情報を追加する必要があります。 その後、コマンドラインツールを使用して展開を開始できます。
アプリケーションは次の変更を行う必要があります。
- サーバーを起動するための指示を含む
.awsbox.json
ファイルを作成します。 -
package.json
依存関係リストにawsboxを追加します。 - サーバーが
PORT
環境変数で指定されたポートでリッスンしていることを確認してください。
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をご覧ください。
サイクルのすべての記事:
- 「 Node.jsでのメモリリークのハンティング 」
- 「 ノードを眼球にロードします 」
- 「 アプリケーションのスケーリングを簡素化するために、クライアントにセッションを保存します 」
- 「 フロントエンドのパフォーマンス。パート1-連結、圧縮、キャッシング 」
- 「 負荷がかかってもクラッシュしないサーバーを作成しています 」
- 「 フロントエンドのパフォーマンス。パート2-etagifyを使用した動的コンテンツのキャッシュ 」
- 「 node-convictを使用したWebアプリケーション構成の調整 」
- 「 フロントエンドのパフォーマンス。パート3-フォントの最適化 」
- 「 Node.jsアプリケーションのローカライズパート1 」
- 「 Node.jsアプリケーションのローカライズパート2:ツールキットとプロセス 」
- 「 Node.jsアプリケーションのローカライズパート3:アクションのローカライズ 」
- 「 Awsbox-Amazon CloudにNode.jsアプリケーションをデプロイするためのPaaSインフラストラクチャ 」