第31回北海道開発オフに参加しました(Pagoda Boxを使った)

9月21日(土)、第31回北海道開発オフに参加しました。

今回も継続的に開発しているWebアプリ実装の続き。
一通り触れるようになっているから、スマホからも動作確認ができるようにPaaSにデプロイしよう、というのがテーマでした。

PagodaBox

今回、デプロイ先としてPagodaBoxを選択しました。

  • CakePHP + MySQLでデプロイできる
  • とりあえず無料で使える

この条件で検索してヒットしたもののうち、一番情報が多そうだったので。
当日まで、触った事もありませんでした。。。
一筋縄では行かず、結局開発オフ中にデプロイには辿り着けませんでした。
その後、宿題として色々設定をいじって、デプロイに成功したので、そこまでの流れを書いておきます。

Boxfile

PagodaBoxはデプロイ先の環境設定やデプロイ前後の処理をすべて「Boxfile」に記述します。
このファイルがアプリケーションのルートディレクトリにある事をサーバー側が認識し、ファイルを解析しながらデプロイをすすめます。
Boxfileさえきちんと書けていれば、pagodaリポジトリにgit pushしたタイミングで自動ビルド&デプロイしてくれます。

これは簡単!と思っていたのだけど、だけど。
必要な環境設定から何から全てをBoxfileに書かないとデプロイできないのでありました。
このファイルに書くべき内容に躓きまくって開発オフの時間は過ぎていったのであった。
参考:Pagoda Box Help – Understanding the Boxfile
参考:Pagoda Box Help – Cake PHP

試行錯誤して出来上がった今回のBoxfileはこちら。
https://gist.github.com/irasally/6647816

DBのマイグレーションをどう表現するかでひとしきりハマりました。
コマンドを普通に打つと、[Y/n]の入力を求められるのですが、この入力を回避するために(pagodaでのデプロイ中はこちらから何か入力する事はできない)どうすればいいのかというところが一番困った。
こんなやり方初めて知った。
参考:cake schema create without user intervention

printf 'y\ny\n' |app/Console/cake schema create

cakeの設定ファイル

開発用とデプロイ用で設定を変えなければいけないので、Boxfileの中で設定ファイルの差し替えをしています。

 - "mv app/Config/core.php.pagoda app/Config/core.php"
 - "mv app/Config/bootstrap.php.pagoda app/Config/bootstrap.php"
 - "mv app/Config/database.php.pagoda app/Config/database.php"

一番変更しなければいけなかったのは、キャッシュ設定。
Apc(Alternative PHP Cache)が奨励されているので、それに変更。
core.phpとbootstrap.phpをちゃんと正しい順序で読み込んでいるのかわからなくて試行錯誤した。
(なぜか今はちゃんと動いている、という状態….)

データベース設定

pagodaのMySQLサーバーのデフォルト文字コードがLatin1。
これを変更する事はできないので、テーブル単位で文字コードutf8を再設定。
その他初期データの投入なども行いたいので、mysqlコマンドは直接打ちたい。
pagodaではトンネリングしてDBを使える設定がありました。
参考:Pagoda Box Help – Creating a Secure Database Tunnel from Your Desktop
参考:Pagoda Box Help – UTF-8 encoding in DB

gem pagoda

tunnelコマンドを使うため、pagodaをgem installします。
pagodaはruby2.0だとエラー吐きまくって使えないので注意(2013/09/25時点)。

pagoda -a my-app tunnel db1

でDBへのトンネルが出来上がる。
この状態でmysqlコマンドを打つと自分のマシンから普通にアクセスできた。

この辺りまでやって、ローカルと同じように動くまでになった。
そして初めてスマホからアクセス….!!! 感動した。

今後のやるべきこと

スマホのブラウザだと押せないボタンがある、字がでかすぎる….など、見た目やスタイルを変更しなければいけない箇所が、もう既にわかっています。それ以降の画面に進めない状態なので。
その変更が終わったら、とりあえず実際に使ってみれるのかな。わくわく。
雪が降る前に1回遊んでみたい。がんばろう。

開発オフとしては時間オーバーだったのだけど、新しいサービスの使い方を覚える事ができたので良かった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください