2012年01月21日

前回は、ただdotcloud上にファイルを置いただけなので、もう一歩進んで、dotcloudでrubyの実行環境を作る。
自分ひとりが使う動作環境なので、フレームワークは小規模向けのsinatraを使う。
sinatraでhello worldをするまでの手順をまとめておく。
けっこうはまった。ポイントは以下3点。

  • requireするRubyファイルをディレクトリ指定しないと、みつけてくれない。
  • アプリケーションをpushしているときに、CTRL+Cして止めると、その後のrsyncに失敗し、pushができなくなる。対処策がわからないので、アプリケーションを一度destroyして、再createする。
  • Gemfileで指定したライブラリが、ちゃんとインスタンスにインストールされたか確認する。手動でgem installを実行することもできる。

手順は以下。

1. 作業用ディレクトリ(プロジェクト)を作り、アプリケーション定義ファイルを作る。

$ mkdir maarui
$ cd maarui
$ cat dotcloud.yml
# dotcloud.yml
www:
  type: ruby
  approot: s1

2. アプリケーションrootディレクトリを作る。

$ mkdir s1
$ cd s1

3. アプリケーションを作る。最低限作るファイルは、以下の3つ。

$ cat Gemfile
# Gemfile
source :rubygems
gem 'rack'
gem 'sinatra'

$ cat config.ru
# config.ru
require File.expand_path(File.dirname(__FILE__)) + '/'+ 'app.rb'
run Sinatra::Application


$ cat app.rb
# app.rb (sample)
require 'rubygems'
require 'rack'
require 'sinatra'

get '/' do
  'Hello world!'
end

4. rackの実行に必要な2つのディレクトリを作る。

$ mkdir public
$ mkdir tmp

5. 以下のようなファイル配置になる。

~/maarui/
    +----dotcloud.yml
    |
    +----s1/
          +----Gemfile
          |
          +----config.ru
          |
          +----app.rb
          |
          +----public/
          |
          +----tmp/

6. dotcloud内にアプリケーションを作る。

$ dotcloud create maarui
Created application "maarui"

7. アプリケーションを配信(push)する。

$ dotcloud push maarui .
# upload /home/maarui ssh://dotcloud@uploader.dotcloud.com:4\
43/maarui
# rsync
building file list ... done
s1/

sent 378 bytes  received 15 bytes  71.45 bytes/sec
total size is 841  speedup is 2.14
12:58:10 ---> Deploy of "maarui" scheduled for revision rsync-123123123123 at 2012-01\
-20 12:58:10 12:58:10 ---> Building the application... 12:58:10 [www] Build started for revision rsync-123123123123 (clean build) 12:58:29 [www] Fetching source index for http://rubygems.org/ 12:59:02 [www] Installing rack (1.4.0) 12:59:02 [www] Installing rack-protection (1.2.0) 12:59:02 [www] Installing tilt (1.3.3) 12:59:03 [www] Installing sinatra (1.3.2) 12:59:03 [www] Using bundler (1.0.10) 12:59:03 [www] Your bundle is complete! Use `bundle show [gemname]` to see where a bun\ dled gem is installed. 12:59:04 [www] Build completed successfully. Compiled image size is 1MB 12:59:04 ---> Initializing new services... (This may take a few minutes) 12:59:04 [www.0] Initializing... 12:59:10 [www.0] Service initialized 12:59:12 ---> All services have been initialized. Deploying code... 12:59:12 [www.0] Deploying build revision rsync-123123123123... 12:59:15 [www.0] Running postinstall script... 12:59:19 [www.0] Launching... 12:59:21 [www.0] Waiting for the service to become responsive... 12:59:22 [www.0] Re-routing traffic to the new build... 12:59:22 [www.0] Successfully deployed build revision rsync-123123123123
12:59:22 ---> Deploy finished Deployment finished. Your application is available at the following URLs www: http://maarui-ID.dotcloud.com/

8. gemのインストール状況を確認する。

$ dotcloud ssh maarui.www
# $SHELL
dotcloud@maarui-default-www-0:~$ gem list

*** LOCAL GEMS ***

bundler (1.0.10)
daemon_controller (0.2.5)
fastthread (1.0.7)
file-tail (1.0.5)
passenger (3.0.2)
rack (1.4.0, 1.2.1)
rack-protection (1.2.0)
rake (0.8.7)
rubygems-update (1.6.2)
sinatra (1.3.2)
spruz (0.2.2)
tilt (1.3.3)

dotcloud@maarui-default-www-0:~$ exit

9. ブラウザで表示を確認する。

"hello world"が出力されれば成功。



sylphide_ffr31mr at 00:03コメント(0)トラックバック(0)技術 この記事をクリップ!

2012年01月19日

dotCloudは、さまざまな言語の実行環境を提供するPaaSである。

Google AppEngineと比べると、遥かに多様な言語、データベース、フレームワークが提供されている。 その多様性が最大の優位点であるが、さらに以下の特徴がある。

  • IaaSとPaaSの中間的な機能
  • 操作がシンプル

1つ目の特徴は、このサービス自体がAmazonEC2のIaaS上で動作していることからきている。
GAEでもherokuでも、実行マシンはサービスに隠蔽されており、自分で作ったプログラムが動作しているOSのについて意識する必要がなかった。
それが、PaaS本来の目的でもあるからだ。
dotCloudでは、アプリケーションをdeployすると、EC2でインスタンスが作られ、その上でアプリが実行される。そして、そのインスタンスへのsshが許可されている。
そのため、ログの確認や、実行環境が自分の想定通りであるかなどを確認することができる。

もう一つの特徴が、dotCloudサービスの操作の簡単さである。 dotCloudを扱うコマンドは、基本的にただひとつ。dotcloudコマンドである。

インストールから、静的コンテンツのhello worldは、以下のとおり。

dotcloudコマンドのインストール

$ sudo apt-get install python-setuptools
$ sudo easy_install pip && sudo pip install dotcloud
Searching for pip
Reading http://pypi.python.org/simple/pip/
Reading http://pip.openplans.org
Reading http://www.pip-installer.org
Best match: pip 1.0.2
Downloading http://pypi.python.org/packages/source/p/pip/pip-1.0.2.tar.gz#md5=47ec6ff3f6d962696fe08d4c8264ad49
Processing pip-1.0.2.tar.gz
Running pip-1.0.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XTv7r8/pip-1.0.2/egg-dist-tmp-aqFwSr
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.0.2 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip-2.7 script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/pip-1.0.2-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
Downloading/unpacking dotcloud
  Downloading dotcloud-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud
    
Downloading/unpacking dotcloud.cli==0.4.3 (from dotcloud)
  Downloading dotcloud.cli-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud.cli
    
Installing collected packages: dotcloud, dotcloud.cli
  Running setup.py install for dotcloud
  Running setup.py install for dotcloud.cli
    changing mode of build/scripts-2.7/dotcloud from 644 to 755
    changing mode of build/scripts-2.7/__dotcloud_git_ssh from 644 to 755
    
    changing mode of /usr/local/bin/dotcloud to 755
    changing mode of /usr/local/bin/__dotcloud_git_ssh to 755
Successfully installed dotcloud dotcloud.cli
Cleaning up...

アプリケーション定義ファイルdotcloud.ymlを作る

$ cat dotcloud.yml 
www:
  type: static

同じディレクトリにHTMLファイルを作る

$ cat index.html 
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    Hello World!
  </body>
</html> 

dotCloud内にアプリケーションを作る

$ dotcloud create helloworldapp
Warning: /HOME/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/accounts/settings): ABC123.......................789XYZ <--API keyは、wwwでログインし、dashboardのsettingで表示される

Created application "helloworldapp"

HTMLをインスタンスへpushする

$ dotcloud push helloworldapp
# upload /DIRECTORY/dotcloud/maarui ssh://dotcloud@uploader.dotcloud.com:443/helloworldapp
# rsync
building file list ... done
./
dotcloud.yml
hw.html

sent 262 bytes  received 53 bytes  48.46 bytes/sec
total size is 122  speedup is 0.39
09:21:11 ---> Deploy of "helloworldapp" scheduled for revision rsync-1326532870687 at 2012-01-14 09:21:11
09:21:11 ---> Initializing new services... (This may take a few minutes)
09:21:11 [www.0] Initializing...
09:21:15 [www.0] Service initialized
09:21:17 ---> All services have been initialized. Deploying code...
09:21:17 [www.0] The build started
09:21:18 [www.0] Fetched code revision rsync-1326532870687
09:21:22 [www.0] Reloading nginx configuration: nginx.
09:21:22 [www.0] The build finished successfully
09:21:22 ---> Deploy finished

Deployment finished. Your application is available at the following URLs
www: http://helloworldapp-ID.dotcloud.com/

これで、表示されるURLにアクセスすると、ちゃんとHTMLが表示される。

その他の操作

アプリケーションの詳細情報は、以下のように取れる。
例は、wwwサービスだが、DBサービスをcreateすると、そのDBへの接続情報などもここで出るそうだ。

$ dotcloud info helloworldapp.www
aliases:
- helloworldapp-ID.dotcloud.com
build_revision: rsync-123456
config:
    path: /
created_at: 1326532871.811918
datacenter: Amazon-us-east-1b
image_version: exxxxxxxxxx8 (latest)
ports:
-   name: ssh
    url: ssh://dotcloud@helloworldapp-ID.dotcloud.com:6908
-   name: http
    url: http://helloworldapp-ID.dotcloud.com/
state: running
type: static

アプリケーションの動作状況

$ dotcloud status helloworldapp.www
#  sudo /etc/init.d/nginx status 
 * nginx is running

sshすると、こんなふうになる

$ dotcloud ssh helloworldapp.www
# $SHELL
dotcloud@helloworldapp-default-www-0:~$ 
dotcloud@helloworldapp-default-www-0:~$ ls
code  current  environment.json  environment.yml  rsync-1326533061883  static
dotcloud@helloworldapp-default-www-0:~$ cd current
dotcloud@helloworldapp-default-www-0:~/current$ ls
dotcloud.yml  index.html
dotcloud@helloworldapp-default-www-0:~/current$ exit

アプリケーションの削除

$ dotcloud destroy helloworldapp
Please confirm destruction [yn]: y
Destroy for "helloworldapp" triggered.

消えたことを確認

$ dotcloud status helloworldapp.www
error: "helloworldapp" not found.

この操作のシンプルさは気に入った。 herokuがいまいちだったので、しばらく、これで遊んでみようと思う。



sylphide_ffr31mr at 00:18コメント(0)トラックバック(0)技術 この記事をクリップ!

2012年01月05日

今日は誕生日。
全国的に、誰もがぼくに「おめでとう」と、言ってくれる日。(笑)

会社から帰ると、玄関に小さなドラえもんカードが待っていてくれた。
これらのカードの裏には、次のドラえもんカードの在処へのヒントが書いてある。
そのヒントの場所に行くと、誕生日メッセージカードと、プレゼント、そして次なるヒントのドラえもんカードが。
ヒントを頼りに、カードを辿っていき、次々とアイテムを集める、我が家のRPG。

全部で五枚のカードが集まった。

IMG_2012_01_04_23_06_57_4863-800

そして、その旅の過程で集まったプレゼントと、誕生日カード。
まずは、特大ドラ焼き。ケーキの代わりだそうで。
どれほどでかいかというと。

IMG_2012_01_04_21_19_28_4850-800

この大きさは、なかなかお目にかかれない。
ドラえもんがスモールライトで小さくなって、ドラ焼きに食らいつくシーンを思い出す。

このドラ焼きは、時屋のもの。
藤子先生が、ドラえもんに出てくるドラ焼きのモデルにしたという老舗。
そこの特大版だそうで。
新宿まで行って、買ってきてくれました。

これを切ると、中には栗がごろごろ。(切り口には見えないけど、たくさん入ってます)

IMG_2012_01_04_21_22_52_4857-800

そして。
誕生日カードもいっぱい。

IMG_2012_01_04_23_14_30_4865-800

特筆すべきは、左下のカエルのカード。
メロディーカードで、カエルがゲロゲロと「Happy birthday」を歌ってくれる。
三番目ちゃんのお気に入り。

プレゼントは、エポック社のドラえもんだらけ

IMG_2012_01_04_23_00_46_4861-800


そして、タカラのギアキューブ
これは、難しそうだなと思いつつ、どんな動きをするのか一度いじってみたいと思っていたもの。
とっても嬉しい。
メガハウスのルービックさんのシリーズではないが、動きはとてもなめらか。どんな仕組みになっているのかもよくわからない。
とても六面揃えられる気がしないので、子供たちもにも、崩すなよ、と言ってあるが。
いつまでもつことやら。

クエストからプレゼント、ドラ焼きをみんなで食べて、とっても充実した、そして家族の愛を感じた誕生日でした。
ありがとう!


sylphide_ffr31mr at 00:07コメント(0)トラックバック(0)家族ドラえもん この記事をクリップ!

2012年01月03日

お正月なので、凧あげをしようと、凧を作った。
凧糸が意外と入手できず。近くのイトーヨーカドー等のホームセンターを巡り、三軒目でやっと入手。
作成に二時間。凧糸探しに二時間。
なんだかなぁ。

いざ、多摩川の河原に行き、道なき道の土手を降りて行くと、小さなとげとげが、ズボンにびっしり。
ぼくはジーンズだったので、ほとんど付かなかったが、三番目ちゃんは柔らかい毛のズボンだったので、びっしりとトゲトゲがついてしまい、歩くと痛い。
「痛いよぉ〜、寒いよぉ〜、もう帰りたいよぉ〜」
新しく買ったばかりの靴も、生毛生地なので、靴にもびっしり。
「買ったばかりなのにぃ。保育園にも履いて行ってないのにぃ」
ということで、凧あげ目前にして、すごすごと退散。

しかたないので、凧あげは別の日にやることにして。
家の中で割りばし鉄砲を作って遊んだ。
写真 12-01-03 22 27 35

以下を参考に。

http://www.nishijimaisao.jp/akari/event/waribashi/w-top.html

sylphide_ffr31mr at 22:45コメント(0)トラックバック(0)家族 この記事をクリップ!

2011年12月25日

子供と一緒に取りました。

madoka2


sylphide_ffr31mr at 22:54コメント(0)トラックバック(0) この記事をクリップ!
記事検索
最新コメント
livedoor プロフィール
月別アーカイブ
  • ライブドアブログ