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.ymlsupervisord.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年前、同じ名前の記事がすでにハブに登場しました(残念ながら、私は自分の記事を書いた後で見つけました)

Source: https://habr.com/ru/post/J147181/


All Articles