WordPress を dotCloud にデプロイ

デプロイ田中です、みなさんこんにちは!!。。

本日は、最近ちらほら聞きます PaaS 型クラウド dotCloud さんに WordPress をデプロイしてみるです。 まぁ無料版のでやっているのでお遊びなのですが、まずはなかなかうまく動くようですぞ。 🙂

dotCloud は、さまざまなプラットフォームのアプリケーションを配置できるいわゆる PaaS のサービスです。 Java はもちろん Ruby や PHP、サーバサイド JavaScript の node.js なんかも動作するようです。 また各種データベースも動作します。

wp3203

DotCloud – Deployment made simple

DotCloud lets you create the best cloud stack for your application. We give developers and IT professionals the freedom and flexibility to mix and match languages, databases, caching and messaging components without the need for additional servers or infrastructure.

PHP を扱っているとアプリケーションをサーバにインストールする行為というのは、FTP か何かでファイルを「置く」みたいな感じなので感覚が違うかもしれませんが、PaaS というのは OS にアプリをインストールするようなイメージで使います。 ここでいっている “OS” にあたるのがアプリケーションサーバというやつです。

まぁそうは言っても PHP にはアプリのインスタンスを保持するような仕組みはないので実質的にはファイルが置かれるだけなのですが、dotCloud の管理ツールの使い方的には PHP でもそんな感じになります。

さて、PaaS が普通の Web レンタルサーバと何が違うかというと、OS 的な部分が隠ぺい(クラウド)されていることです。 メモリとかファイルシステムとかネットワークとかリソースをあんまり考えずに使えるようになっていて、また必要であれば動的に付け足すことができます。

あとスナップショットバックアップのような、その時のサーバそのものをバックアップ保持するような機能がついているのも多いですね。 アプリケーションを簡単に動作させて運用するために特化した機能がついたサーバが PaaS。 この技術の後ろに見え隠れそるのがサーバ仮想化技術になります。

ぼく的な PaaS の感覚は、いろんな言語や動作プラットフォームを使ってインターネット上にアプリを公開できてわーい、、という感じなものです(笑)

てなわけで早速、Groovy のアプリをデプロイ、、といきたいところですが、ここは勝手知ったる WordPress でまずはお試しデプロイです。

dotCloud には便利な管理操作用 CLI インターフェースが用意されていますので、こちらで操作します。 python が必要なのでお使いの OS にいれて、、最初 easy_install というのが何かさっぱりわからなかったのは秘密です。。(マニュアル参考

$ sudo apt-get install python-setuptools
$ sudo easy_install pip && sudo pip install dotcloud

Ubuntu 11.04 の場合はこれで準備完了。 簡単アルネ。

API キーなど入れながら、アプリケーション(名)作成。(誰かとかぶらない任意の名前)

$ dotcloud create maple4ever

あとは WordPress をローカルのどこかのディレクトリに展開し、そのルートに dotcloud.yml ファイルを以下のようにして PHP と MySQL サービス設定。

wp:
  type: php
 
db:
  type: mysql

でもって、このディレクトリをカレントにおいて push します。

$ dotcloud push maple4ever .

これでデプロイ完了。

起動した MySQL インスタンスに WordPress 用の DB を create databese します。 とりあえず MySQL の情報閲覧。 「アプリケーション名.サービス名」で info コマンドしてあげます。

$ dotcloud info maple4ever.db
build_revision: rsync-1309187922.37
cluster: wolverine
config:
    mysql_password: nyoron
    mysql_serverid: -1
created_at: 1309187925.281122
ports:
-   name: ssh
    url: ssh://dotcloud@ugogogo.dotcloud.com:9284
-   name: mysql
    url: mysql://root:mogemoge@hogehoge.dotcloud.com:9344
state: running
type: mysql

WordPress に設定する DB ホストは hogehoge.dotcloud.com:9344 のところなのでメモ。(デフォルトポートと違うので全部いれる)

create table & ユーザ作成。 こんなかんじ。 キャラセットは指定するとはじかれたので、そのまま行きました。

$ dotcloud run maple4ever.db -- mysql -u root -p[パスワード]
# mysql -u root -p[パスワード]
 
mysql> CREATE USER 'wp' IDENTIFIED BY '[任意のパスワード]';
mysql> create database wp;
mysql> GRANT ALL ON wp.* to 'wp'@'%';

上はデータベース名 wp 、ユーザ名 wp で設定の図。

次に info コマンドで php サービスの URL を取得して普通にブラウザアクセス。

$ dotcloud info maple4ever.wp
-   name: http
    url: http://d84fa7d5.dotcloud.com/
state: running
type: php

あとはいつもの通り WordPress をインストールすれば、

wp3202

ようこそ WordPress の世界へ。 🙂

wp3201

[tegaki]動いた~![/tegaki]

WordPress 3.2 RC2 日本語版キタ。  サイト中身はめ組さんの「日本語版インポートテストデータ」です。 試験に大変便利なので見てみてください。 🙂

http://d84fa7d5.dotcloud.com/

(そのうち消えます。)

残念ながら dotCloud 無料版ではドメインマッピングできないので変なホスト名ですが、なかなかよく動きますね~。 memcached のインスタンスもあげられるようなので、追加してみるといいかもしれません。

httpd は nginx を使っているようです。 いじればパーマリンクも設定できると思います。 ファイルのアップロードなども問題なく動きます。(ちなみに Java のアプリケーションサーバは Jetty のようです)

てなわけで、ネットワーク上に好きなアプリを簡単に配置して使う。 そんなことができるようになるかもしれない PaaS プラットフォームのお話でした。 他にも cloudBees とか同様のサービスがありますので探してみるのも面白いでしょう。

ばいっ。(←芸風がおかしい。。

ぎゃらぎゃらぎゃらくし~。

持ってそうで持ってなかったぼくですが、ついに小宇宙を燃焼させ買ってきましたスマートフォン。 🙂

今まで使っていたケータイさんは 3年もので、ポケうちは相変わらず素早いし、じぐついさんは賢いしで悪くなかったのですが、電池が持たなくなってきたのと、ついったーとかで出力できない Unicode 文字があるという、もういじれる範囲では如何ともしがたい問題がでてきましたのでついに機種変更となりました。

あ、いまどきは「変更」とはいわないですか。 周りの人も Android が多くなってきたので操作を覚えておこうなんてのもありでござる。 🙂

というわけで、なんだかとても速くてよさそうだった Samsung Galaxy SII です。

 galaxy00

とりあえずファーストインプレッションは画面でっかくてぬるぬる動いていいですねぇ。

で、ややしばらくぽちぽちいじって、…なんとなくつかんだ!

sp モードでの iモードメール送受信も、うまく動いているようです。

galaxy00

ちゃんと iチャネルも動いております。

Songbird とか Firefox とかあるのが Android さんの自由な部分。 😀

galaxy01

ちなみに音のほう。 上部端子ヘッドフォンアンプは、なんというか遠路はるばる走り切り疲れ切ったような音がするようです(笑) まぁまぁぼくの初代 iPod touch も似たような感じで、こんだけ無線とばす機械でオーディオ的な音を期待するのも厳しいのでしょう。 外で聴く分には十分です。 おしりのラインアウトからだしてみるのも面白そうですね。

音楽とかメディア系ファイルは適当に USB のマスストレージで送りつけると、転送後サーチして認識してくれるようで、Linux にも優しい作りになっております。 何を隠そう、Windows で iTunes を起動するのが面倒で、永遠に同じ曲しか再生されないぼくの iPod touch くん。。

てなわけで、Android の SDK は Linux での開発もサポートされております。 Ubuntu 11.04 でも以下の方法で実機とデバッグ接続できました。

USB を設定。 ファイルつくって権限つけます。 (ベンダーID は Samsung さんのです)

$ pwd
/etc/udev/rules.d
$ cat 51-android.rules 
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
$ ls -laF 51-android.rules 
-rwxr-xr-x 1 root root 56 2011-06-25 22:39 51-android.rules*

でもって、実機側の設定 –> アプリケーション –> 開発あたりで debug をオンにして から Ubuntu に USB 接続。

あとは SDK と Eclipse のプラグイン入れて、プロジェクトつくって、、

galaxy02

AndroidManifest.xml の Debuggable を true にして Java のプログラムを Android Application 実行すれば実機転送されプログラムが実行されます。

実は以前も実機なしですがちょっと Eclipse 上で遊んでいたことがあって、エミュレータおっそいなぁと思っていたのですが、実機転送のほうが全然快適なんですね。。 こりゃええわ。

[tegaki]お気にいった![/tegaki]

いろいろ遊んでみたいと思います。 😀

ぐるぐるぐる~び~。

ぐるぐるぐる~び~(挨拶) というわけで、プログラム言語 Groovy。

最近、このブログをみてくれている会社の人から仕事でぐる~び~という言葉を聞いたり、帳票作成 Jasper Reports の標準スクリプトが Groovy に設定されていたり、あなたの生活にそっと忍び寄る Groovy。 ぼくも内部的なツールをつくるときや、エクセルからソースを起こすときなんかに大変便利に使っております。 🙂

さて、Groovy の楽なところの一つにランタイムがポータブルであるというところがあげられると思います。 JVM と Groovy の jar がひとつだけあれば動作。 インストールいらないし、埋め込んで executeble jar にしてしまえばもう Groovy であったことすらわかりません。

$ java -jar groovy-all-1.8.0.jar hoge.groovy

 

カレントに jar 置いておけば、スクリプトファイルもこんなんでコンパイルかかってプログラムが動作してしまいますしとても便利です。

もうひとつ面白いなぁと思うのが、Groovy は Java と同じコメント形式をもちますが、先頭行のシェバングを読み飛ばせること。 というわけで、UNIX 上であれば以下のようにシェルスクリプトっぽい使い方ができるようになっています。

#!/opt/groovy-1.8.0/bin/groovy
 
println "*Groovy"
new File(".").eachFile {
    println it.name
}

 

これもなかなか便利ですね~。 ちなみに String が拡張されていて外部コマンドもすぐ呼び出せますので UNIX コマンドと合わせ技で、

#!/opt/groovy-1.8.0/bin/groovy
 
println "*Unix Command"
def command = "ls -l".execute() | "grep ^-".execute() 
command.text.eachLine {
    println it.split()[7]
}

 

こんなんもできます。 awk 使えというつっこみはなしで(笑)

Process クラスにオーバーロードかかっていて、パイプが | でかけたりして奥が深い。。

というわけで Ubuntu 生活も java-gnome あたりを使って Groovy ということで。 🙂

loader.groovy。

#!/opt/groovy-1.8.0/bin/groovy
 
// java-gnome クラスロード
this.getClass().classLoader.rootLoader.addURL(
    new File("/usr/share/java/gtk.jar").toURL())
 
// 本体スクリプト評価
evaluate(new File('notify.groovy'))

 

notify.groovy。

import org.gnome.gtk.Gtk
import org.gnome.gdk.Pixbuf
import org.gnome.notify.Notify
import org.gnome.notify.Notification
 
// GTK & NotifyOSD 初期化
Gtk.init([] as String[])
Notify.init("notify.groovy")
 
// アイコン取得
def pixbuf = new Pixbuf("./torimaki.png", 40, 40, true)
 
// NotifyOSD 表示設定
def notify = new Notification(
    "γ(@ω@)γ "
    , "私は不変であることすら破壊する。"神の領域を侵犯し私は私であり続ける。ぐるぐる。"
    , null)
notify.setIcon(pixbuf)
 
// 通知!
notify.show()

 

loader.groovy で java-gnome の jar を動的クラスロードして実行してみました。 gtk.jar は apt-get install java-gnome あたりで入ります。(パッケージ名ちがったかも)

groovy02 

まぁこのサンプルは "notify-send".execute() でいけたりするのですが、ちょっとしたプログラムの中から gnome を簡単に呼べるのはいろいろ遊べそうですね。 🙂

というわけでそんな Groovy さんですが、日本初(発)の Groovy 本がでるそうです!

Amazon.co.jp: プログラミングGroovy: 関谷 和愛, 上原 潤二, 須江 信洋, 中野 靖治: 本

GroovyはJavaと抜群の親和性を持つハイブリッド言語です。簡潔で強力な記述力と高い柔軟性を持っており、Javaを補完・強化する究極のパートナーになります。 本書はGroovyの基本的な文法を丁寧に説明するほか、Groovy API、Groovy JDK、Grape、メタプログラミング、ASP変換などの応用的な話題もカバーします。また、GrailsをはじめとするGroovyの関連プロダクトについても解説します。

さっそく予約しました~。

あなたのシステムにも Groovy ひとつ、そっといかがでしょうか。 ぐるぐる。