dotcloudバージョンアップ後にNodejsがデプロイ出来ない対処

dotcloudがバージョンアップしてから、今までのDeploy出来てたものが出来なくなった。。。
port8080のwarningがでてるし、吐き出されたURLにアクセスすると、502。。

同じ現象で解決している人がいたので参考にしながらやったらうまくいったのでメモを。

まずログの確認。

$ dotcloud logs アプリケーション名.www
# tail -F /var/log/supervisor/*.log
==> /var/log/supervisor/node-stderr—supervisor-BkNQQ9.log <== at Function._resolveFilename (module.js:317:11) at Function._load (module.js:262:25) at require (module.js:346:19) at Object. (/home/dotcloud/rsync-xxxxxx/フォルダ名/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/rsync-xxxxxx/フォルダ名/node_modules/express/node_modules/connect/lib/connect.js:89:14)
 
==> /var/log/supervisor/node-stdout—supervisor-l9fdKH.log <==

express/node_modules/connect/lib/middleware/compress.jsとexpress/node_modules/connect/lib/connect.jsで何かやらかしてるらしい。。原因はローカルとdotCloudでconnectのバージョンが違うことらしい。

(さらに…)

Leopardにdotcloud CLIのインストール失敗

dotCloud CLIをLeopardに入れたときにエラーが発生。。。
結論から言うと、macportsを使用してのPythonでdotCloud CLIを動かすのはダメみたい。
それなりに時間を使ったのでメモを。

【環境】
 Mac 10.5
 MacPorts 2.0.4
DotCloud DocumentationのMacOSタブを選択して
dotCloud CLI (Command Line Interface)をターミナルを使用してインストールする。

$ sudo easy_install pip && sudo pip install dotcloud
Searching for pip
Best match: pip 1.1
Processing pip-1.1-py2.5.egg
pip 1.1 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
Installing pip-2.5 script to /usr/local/bin
Using /Library/Python/2.5/site-packages/pip-1.1-py2.5.egg
Processing dependencies for pip
Finished processing dependencies for pip
Downloading/unpacking dotcloud
 Running setup.py egg_info for package dotcloud
  Traceback (most recent call last):
   File ““, line 14, in
   File “/Users/takeda/build/dotcloud/setup.py”, line 47, in

    install_requires = [‘dotcloud.cli == {0}’.format(VERSION)],
  AttributeError: ‘str’ object has no attribute ‘format’
  Complete output from command python setup.py egg_info:
  Traceback (most recent call last):
 
 File ““, line 14, in
 
 File “/Users/takeda/build/dotcloud/setup.py”, line 47, in

 
  install_requires = [‘dotcloud.cli == {0}’.format(VERSION)],
 
AttributeError: ‘str’ object has no attribute ‘format’
 
—————————————-
Command python setup.py egg_info failed with error code 1 in /Users/takeda/build/dotcloud
Storing complete log in /Users/hogehoge/Library/Logs/pip.log

pipはうまく入ったっぽいが、dotcloudのインストールでエラーが発生してるくさい。
strにはformatなんていう関数は無いよって。

(さらに…)

お勉強

クラウドコンピューティングに触れる機会が多くなってきたから
この辺でしっかりお勉強をしておこうかと。

まずは定義からしっかりと。数学の基本すな。
【構成定義】
 IaaS(Infrastructure as a Service)
  サーバ/CPU/ストレージなどのインフラをサービスとして提供する。
 PaaS(Platform as a Service)
  アプリケーションを稼働させるためのプラットフォームをサービスとして提供する。
 SaaS(Software as a Service)
  アプリケーション(ソフトウェア)をサービスとして提供する。

IaaS

ネットワーク/ハードウエア(CPU・メモリー・ハードディスク)/OSを提供するサービス。ユーザーは何もインストールされていないサーバー環境を提供され、その上にユーザーが必要とするミドルウエアや、アプリケーションソフトウエアをインストールする。
■レンタルサーバとの違い
サーバーのCPU・メモリー・ハードディスクを仮想化技術などによって、ユーザーが必要とする分だけ提供する。
■具体例
Amazon EC2(EC2はOSも提供しているので厳密な意味でのIaaSではないけど)
 

PasS

IaaSの構成要素に加え、データベースソフトやWebサーバーソフトといったWebアプリケーションを稼働させるためのソフトウエアや、アプリケーション開発に必要となるソフトウエアを提供。
ユーザーは、必要なアプリケーションのソースコードをPaaS環境にアップロードし、必要なデータベース定義を設定することで、アプリケーションを動作させることが可能。
■IaaSとの違い
OSの各種設定や保守作業をユーザー自身が行う必要がないため、ユーザが直接操作することはない。
■注意点
アプリケーションで利用できる開発言語が限定される点や、PaaSにおいて提供されていないミドルウエアについてはユーザー自身が準備しなければならない。
■具体例
dotcloud
 

SaaS

ユーザーはネットワーク・ハードウエア・OS・ミドルウエアのすべての要素について、自身で準備をする必要なし。ユーザーはWebブラウザを利用して、 SaaS提供事業者のWebアプリケーションにアクセスし、サービスを利用する。

Node + webSocket on dotCloud

dotCloud上でNodejsを使ってみたときのメモ。

まずはアプリケーションの作成(nodechatがアプリ名)

$ dotcloud create nodechat

ビルドファイル(dotcloud.yml)の作成

#dotcloud.yml
www:
  type: nodejs
  approot: chat

packge.jsonはこんな感じ

#packge.json
{
  "name": "nodechat",
  "version": "0.0.0",
  "dependencies": {
    "express": "*",
	"ejs": "*",
    "socket.io": "*"
  },
  "devDependencies": {}
}

続いて、supervisord.confをこんな感じに設定する

#supervisord.conf
[program:node]
command = node server.js
directory = /home/dotcloud/current

最後に、グローバルにインストルしたnpmのモジュールを紐つけます。

$ npm link express ejs socket.io

(さらに…)

php on dotcloud

dotcloudを試してみました。
dotcludはPHPやPerl、Ruby、Java、Python、Node.jsなど複数の言語と、MySQL、PostgreSQL、MongoDB、CouchDB、Redisなど複数のデータベースを開発者が
自由に組み合わせてプラットフォームを構成できて、クラウド上のPaaSとして利用できるみたい。
料金はどのプログラミング言語とデータベースを選択しても同一で、2サービスまでは無料で利用可能とのこと。

これは試すしかないと思ってとりあえず、チュートリアルに従ってやったときの手順をまとめておきます。

まずはdotcloudへの登録
dotcloudへアクセスしてのFreeの「Sing up now」を選択。
いろいろ登録

次にクライアントCLIをインストール
書いてあるけど念のためここにも書いておく
【Linux】

$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力

【Mac】

$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力

これでクライアントCLIツールのインストールが完了

次は実際にphpで書いてみよう。
(さらに…)