DotCloudというサービスを知ったので、試してみる。
対応しているサービスが素晴らしい。PHP,Perl,RubyというLL言語だけではなく、Javaとかもやってるし、HadoopやMemcached,mongoDBとかもやってる。
説明はDotCloudは開発者のための優良なプラットフォームに書いてあるので、そちらを参照したほうがよいです。
ちなみにMacBook Proで試しました。
ちなみに価格は2サービスまでは、無料とのこと。さらに素敵。
https://www.dotcloud.com/accounts/register/ から登録を行う。
http://docs.dotcloud.com/#installation.html へ遷移する。
基本的に上のURLどおりに淡々と進めていく。今回は app1 という名前でディレクトリを作成。
dotcloudをinstall
$ sudo easy_install pip && sudo pip install dotcloud
dotcloudをを実行するとAPIKeyを求められるので、貼りつけ。
$ dotcloud Enter your api key (You can find it at http://www.dotcloud.com/account/settings):XXXXXX
dotcloud.ymlを作成。中身は以下のとおり。これだけで、PHP、MySQL、MongoDB使えるようになる。すてき。
www: type: php db: type: mysql mongodb: type: mongodb
サンプルプログラム作成する
<?php # Import environment settings from DotCloud $envjson = json_decode(file_get_contents("/home/dotcloud/environment.json"),true); # Create MySQL Connection $mysqli = new mysqli($envjson['DOTCLOUD_DB_MYSQL_HOST'], 'app1user', # username 'app1user', # password 'app1', # db name $envjson['DOTCLOUD_DB_MYSQL_PORT']); print_r($mysqli->query('SELECT now();')); ?>
二つのファイルができたら、サーバへpushする。へ〜ssh+rsyncでやってるんだ。ちなみに、APIKeyやRSAのファイルはユーザRootディレクトリの.dotcloudディレクトリに格納されている。
$ dotcloud create app1 $ dotcloud push app1 sent 505 bytes received 70 bytes 104.55 bytes/sec total size is 556 speedup is 0.97 Deployment for "app1" triggered. Will be available in a few seconds. 2011-07-01 19:37:17 [api] Waiting for the build. (It may take a few minutes) 2011-07-01 19:37:18 [www.0] Deploying... 2011-07-01 19:37:26 [db.0] Deploying... 2011-07-01 19:37:31 [www.0] Service booted 2011-07-01 19:37:45 [db.0] Service booted 2011-07-01 19:37:45 [www.0] The build started 2011-07-01 19:37:45 [db.0] The build started 1 www: 2011-07-01 19:37:45 [db.0] This service type does not support build method, ignoring... 2011-07-01 19:37:45 [db.0] The build finished successfully 2011-07-01 19:37:46 [www.0] Fetched code revision rsync-1309549037.07 2011-07-01 19:37:47 [www.0] Reloading nginx configuration: nginx. 2011-07-01 19:37:50 [www.0] php5-fpm: stopped 2011-07-01 19:37:50 [www.0] php5-fpm: started 2011-07-01 19:37:50 [www.0] The build finished successfully 2011-07-01 19:37:50 [api] Deploy finished
これでもろもろが作られる。すごいなぁ…
MySQLが作られているか確認。
$ dotcloud info app1.db cluster: wolverine config: mysql_password:XXXXXXXXXXXXXXX created_at: 1309549046.4956069 ports: - name: ssh url: ssh://mysql@XXXXXXXXXXXXXXXXXX:3805 - name: mysql url: mysql://root:XXXXXXXXXXXX@XXXXXXXXX:3819 state: running type: mysql
あとは、ログインする。ログインしたあとは、普通のMySQLと同じ使い方。
$ dotcloud run app1.db -- mysql -u root -pXXXXXX
これで完了。アプリを作ったり、消したりして、うまくデプロイができなくて1時間もかかっちゃいました。(これは.dotcloudを消してAPIKeyを設定しなおして対応)普通にやれば10分でできるんじゃないか?
ちなみに、tracerouteコマンドで調べるとAmazonEC2で動かしてるらしい。
また、IPを見てみると、USにサーバがあるっぽいので、ネットワーク周りとかはまだ微妙かもしれないけど、「まずはつくってみる」というところでは十二分じゃないかなと気がします。
…やべぇ。夢中になってたら朝になっちゃった