dotcloud.comでのnode.jsアプリのホスティング

dotCloudは、Webアプリケーションをホストするためのクラウドプラットフォームです。 無料のアカウントは学習に適しています。



その利点:





しかし、欠点もあります:





警告:以下は、 公式ドキュメントの短い要約です。 もちろん、フルバージョンを読むことをお勧めします。



規約



DotCloudを使用する場合、 アプリケーションという用語は、使用するサービスのコレクションを意味します。 サービスは、単一のnode.jsプロセス(php、python、rubyなど)または単一のデータベースインスタンスです。 たとえば、phpおよびmysqlサービスから、ワードプレスブログアプリケーションを作成できます。



サイトに登録すると、[設定]セクションに、いわゆるAPIキー (ランダムに生成された文字と数字のシーケンス)が表示されます。 将来的には、このプラットフォームで作業する必要があります。



DotCloudでのすべてのアクションは、特別なdotcloud



ユーティリティを使用して実行されます(ドキュメントでは、 dotcloud



コマンドラインインターフェイスと呼ばれます)。



CLIインストール



CLIは Python 書かれており、EasyInstallパッケージマネージャーを使用するため、最初インストールする必要があります。



 sudo apt-get install python-setuptools python-dev build-essential
      
      





そして

 sudo easy_install pip && sudo pip install dotcloud
      
      







その結果、 dotcloudユーティリティがシステムに表示されます。 最初の起動時に、 APIキーを入力する必要があります。



アプリケーションのインストール



最も簡単なサンプルアプリケーションは、 ここにあります 。 しかし、それは何もしないため、特に興味深いものではありません。



ソースの準備



既に何らかの種類のnode.jsアプリケーションが動作しているとしましょう。 この記事を使用できます。 1つの変更を行う必要があります。dotCloudアプリケーションはポート8080でリッスンする必要があります 。 展開後、通常どおりポート80で使用可能になりますが、ソースでは正確に8080になります。



アプリケーションの説明



デプロイするには、ファイルシステム上の3つのファイル、 dotcloud.yml



supervisord.conf



、およびpackage.json



を作成して、適切な場所に配置する必要があります。 結果は次の構造になります。



 ninja_on_dotcloud/ |_ dotcloud.yml |_ ninja-store/        |_ supervisord.conf |_ package.json |_ app.js    |_ ...      
      
      





dotcloud.yml



ファイルは、アプリケーションが使用するサービスのセットを記述しています。 サービスが1つあるため、 dotcloud.yml



は次のようになります。



 www: type: nodejs approot: ninja-store
      
      





ここで、 www



はサービスの名前(理論的には何でもかまいません)、 ninja-store



はソースフォルダーです。

supervisord.conf



も簡単です。

 [program:node] command = node app.js directory = /home/dotcloud/current
      
      





この場合、 app.js



がアプリケーションのメインファイルです。



package.jsonは標準のnpmファイルです。 dotCloudに配置する場合、 依存関係セクションのみが重要であり、アプリケーションで使用されるパッケージがリストされます。



展開



これらすべてをサーバーに送信するには、2つのコマンドを実行する必要があります。



最初にアプリケーションを作成します

 dotcloud create -f sandbox nstore
      
      





-f



は、 アプリケーションのフレーバー (大まかに言えば、料金プランとホスティングオプション)を設定します。 nstore



はアプリケーションの名前であり、さらなる管理に必要です。



最後に、サイトのコードをサーバーに送信します

 dotcloud push nstore ./ninja_on_dotcloud
      
      





その結果、すべてがうまくいけば、コンソールにアプリケーションが利用可能になるアドレスを書き込みます。 私の場合、これはhttp://nstore-beardog.dotcloud.com/です。 このURLを形成するルールは変更される可能性があります。1年前にランダムな文字列が生成されたばかりで、アプリケーションとアカウントの名前が結合されています。 無料アカウントで独自のドメインを使用することはできません。



悪い場合は、ログを確認する必要があります。



ログを見る



アプリケーションが正常に起動した場合、 コマンドでログを確認できます



 dotcloud logs _._
      
      





(たとえば、package.jsonで依存関係を指定するのを忘れた場合など)アプリケーションを起動できないことがあります。 次に、非常に切り捨てられたsshアクセスのようなものを使用する必要があります 。 たとえば、バージョン0.4.10では、express.jsを機能させるために必要なzlibモジュールが不足していることがわかりました。



 user@u5$ dotcloud ssh ninjastore.www # $SHELL dotcloud@ninjastore-default-www-0:~$ ls /var/log/supervisor/ node-stderr---supervisor-7vur0l.log node-stdout---supervisor-xqRYq7.log supervisord.log dotcloud@ninjastore-default-www-0:~$ tail --lines=20 /var/log/supervisor/node-stderr---supervisor-7vur0l.log node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'zlib' at Function._resolveFilename (module.js:317:11) at Function._load (module.js:262:25) at require (module.js:346:19) at Object.<anonymous> (/home/dotcloud/node_modules/express/node_modules/connect/lib/middleware/compress.js:14:12) at Module._compile (module.js:402:26) at Object..js (module.js:408:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) at require (module.js:346:19) at Object.compress (/home/dotcloud/node_modules/express/node_modules/connect/lib/connect.js:89:14)
      
      







ログファイルの名前は、プラットフォームの新しいバージョンのリリースで変更される可能性があるため、明確な指示を与えることはできません。 ほとんどの場合、 /var/log/



どこかに必要な情報を含むファイルがあります。



ノードの他のバージョンのインストール



このリポジトリで実証されたハックのおかげで、dotCloudにnode.jsの任意のバージョンをインストールできます



必要:



  1. リポジトリをコピー
  2. dotcloud.ymlファイルで、 node_version



    フィールドに必要なバージョンを指定します
  3. 当然、 hellonode



    をソースに置き換えます
  4. 通常どおりdotcloud push



    を実行します。




重要:複製後に.gitフォルダーを削除します。 dotcloudがそれに気付くと、ローカルバージョンを使用する代わりにgithubからソースを取得しようとします。



その結果、インストールプロセス中に、 dotcloud



は指定されたバージョンのノードのソースコードをダウンロードしてdotcloud



ます。 次のpush



呼び出しはコンパイルされません。



おそらくログに問題があるので、 このバージョンを試すことができます



別の考えられる問題は、アプリケーションがリッスンするポートです。 何らかの理由で、その例では、次のように設定されています



 }).listen(process.env['PORT_WWW'] || 8080);
      
      







ご清聴ありがとうございました。 dotcloud、mongodb、nodeに関する別の記事がありました。 そして1年前、同じ名前の記事がすでにハブに登場しました(残念ながら、私は自分の記事を書いた後で見つけました)



All Articles