PHP PaaS Pagoda Boxを使ってみた

 2011/06/04
このエントリーをはてなブックマークに追加

Pagoda Boxは、PHPアプリケーションをホスティングしてくれるPaaSのサービス。 中の人からPrivate Betaの招待を貰ったので早速試してみた。

Pagoda Boxの特徴

  • githubから直接コードをDeployする(逆にいうと全てのコードはgithub経由でしかDeployできない)
  • 前バージョンへのワンクリックでのロールバック
  • オンデマンドでのスケーリング
  • YAMLファイルを書くことで簡単にphpの拡張機能の有効化やオプションの設定が可能
  • 現在はMySQLのみのサポートだが今後MongoDBをサポート
  • MySQLへの接続はトンネリング経由でも可能
  • Rubyでできたコマンドをクライアントにインストールすることでアプリケーションの操作が可能

まずアプリケーションを作成する

  • (1)この作業の前にGitHubにアプリケーションを作成しておくことが必要だ。
  • (2)プライベートホスティングの場合は、pagodaboxアカウントを開発者に追加しておく必要がある。
  • (3)にはgithubのClone用のURLを指定する
  • (4)にはアプリケーション名を指定する。他のユーザーが使っているものは利用できない。
  • (5)ではアプリケーションの種類を指定する。今回はCakePHPのアプリケーションなのでCakePHPを選択したが、他にもCodeIgniterやSymfonyなど多数のフレームワークを選択可能だ。フレームワークを利用していない場合は、「I’m not using a framework」を選択する。今回はhttp://github.com/ryuzee/PHPMyScrum.gitを指定した

アプリケーションの作成中

アプリケーション作成の完了

管理画面での操作

今回はDBを使っているアプリなので、この時点ではアプリケーションをみても動作しない。なので「Go To App Admin Panel」に移動する。 メニューは以下のような感じだ。

データベースの作成

ナビゲーションからDatabasesを選択する。 Add a New Databaseをクリックすると以下のようなデータベースの種類の選択画面に移動する。 現時点ではMySQLのみ対応している。 データベースが出来上がった。 割り当てメモリが10Mの場合は無料で運用できる。サイズを増やすごとに時間課金の量が増える。 上記に表示されている情報は後から利用する。なおデータベース名、ユーザー名およびパスワードは自動で作成され ユーザー自身で設定することはできない。

データベースへの接続とテーブル等の作成

データベースの操作自体はクライアント端末から行う。

pagodaコマンドをインストールする

gem install pagoda

これによってコマンドラインからのアプリケーションの作成や削除、各種操作が可能になる。

データベースへの接続と初期データの作成

MySQLデータベースへの接続は自分のクライアントPCからトンネル経由で接続する。 アプリケーションのルートディレクトリに移動し、

pagoda tunnel

を実行する。以下のように表示され、localhostの3307ポート経由で本番に接続できる。 接続の際のユーザー名とパスワードは上でデータベースを作成した際に表示されるユーザー名とパスワードを使う。

  +> Authenticating Database Ownership
  +> Opening Tunnel

  Tunnel Established!  Accepting connections on :
  -----------------------------------------------

    HOST : 127.0.0.1 (or localhost)
    PORT : 3307
    USER : (found in pagodabox dashboard)
    PASS : (found in pagodabox dashboard)

  -----------------------------------------------
  (note : ctrl-c To close this tunnel)

以上で接続の準備ができたので、あとは好きなクライアントでデータベースに接続すればOKだ。 今回はSequel Proを使っている。

あとは適当にデータベースを作成しておく。

環境変数の設定

アプリケーションに直接データベースの接続情報を書いてしまうわけにはいかない(GitHubで公開レポジトリだし)ので、環境変数を読むようにする。環境変数はGlobal Varsから設定できる。

このためにアプリケーションの一部を修正する。今回はCakePHPのアプリケーションなので、データベースの接続関係はapp/config/database.phpに書かれている。これを修正する。 追加内容は以下のとおりだ。前項で設定した環境変数を読み出す機能を追加する。

function DATABASE_CONFIG() {
      if(isset($_SERVER['database_host'])) {
           $this->default['host'] = $_SERVER['database_host'];
      }
      if(isset($_SERVER['database_login'])) {
           $this->default['login'] = $_SERVER['database_login'];
      }
      if(isset($_SERVER['database_password'])) {
           $this->default['password'] = $_SERVER['database_password'];
      }
      if(isset($_SERVER['database_name'])) {
           $this->default['database'] = $_SERVER['database_name'];
      }
      if(isset($_SERVER['database_port'])) {
           $this->default['port'] = $_SERVER['database_port'];
      }
}

.boxファイルの作成

Pagoda Boxではphpのextensionを個別に有効にしたり、通常php.iniで設定するような項目を.boxというファイルを作成して設定する。今回はmysqlに接続し、日本語文字列を扱うので、mysqlとmbstringを有効にする。 ファイルはYAML形式で記述し、アプリケーションのルートディレクトリに配置する。(レポジトリに含めておく) 内容は以下のようになる。

php_extensions: [mysql, mbstring]

その他に.boxファイルでは書き込み可能ディレクトリの設定等も行うことが可能だ。

再度デプロイしてみよう

管理画面で、「Deploy Latest」をクリックすると最新のアプリケーションが反映される。

動作確認

いざアプリケーションにアクセスしてみる。無事動作した!

まとめ

現時点ではプライベートベータなので、細かいマニュアル類は不足しているが、操作自体はまずまず簡単。 アプリケーションを必ずgithubに置かなきゃいけない点が制約なので、今後他のレポジトリにも対応してくれるといいなぁと思う。 なお、プライベートベータに10人招待できるみたいなので興味ある方は@Ryuzeeにmentionください。

 2011/06/04
このエントリーをはてなブックマークに追加

サイト内検索


著作

寄稿

Latest post: