読者です 読者をやめる 読者になる 読者になる

k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

クラウドホスティングサービスfluxflexを触ってみた

PHP

昨年夏頃に話題になっていた、fluxflexというクラウドホスティングサービス(いわゆるPaaS)を触ってみました。

今までPHPに対応したPaaSを何度か触ってみようとしたことはありましたが、いずれも恥ずかしながら何かを公開するまで到達できませんでした。
英語の壁、Gitをまともに(履歴を堂々と公開できる程度に)使えていないこと、そもそも自発的にサービスを作りたいという欲求が弱いこと、色々と原因はあると思うんですが…。

fluxflexは日本人が開発してるそうだし、GitHubとの連携だけでなく普通にfluxflex側のリポジトリからもデプロイ可能、つまり拙いコミット履歴を晒さなくても公開できると知って、これならやれそうだと考えた次第です。

fluxflex- the fastest way to launch your web services.

まずは 初期登録 - fluxflex ドキュメント に従って、メールアドレスでアカウント登録。

開発端末に設置してる公開鍵はすでにGitHubに登録済みなので、 公開鍵の登録 - fluxflex ドキュメント に従って、GitHubアカウントから公開鍵をインポート。

GitHubへのpush時にfluxflex側に自動でデプロイされる「オートデプロイ機能」もありますが、まずは普通にプロジェクトを作成してみます。
今回は自作ライブラリ集 Volcanus のサンプルコードを置くことにして、プロジェクト名は volcanus としました。

プロジェクト作成後、メニューの [Setup] から [Git] を選択すると、GitのリポジトリURLが表示されるので、GitBashからgit clone して以後手元で作業します。

$ git clone ssh://git@git.fluxflex.com:443/volcanus


fluxflexにはデプロイ時に設定ファイルを書き換えたり、パーミッション変更を行う「デプロイ・イニシャライザ」なる機能があるそうです。
詳しくは イニシャライザ(Initializer Script)について - fluxflex ドキュメント を参照。

イニシャライザはリポジトリのルートに .flx という名前のファイルを設置して記述します。
Windowsエクスプローラーでは . から始まるファイルを作成できないので、.htaccessともどもGitBashで作成します。

$ cd volcanus
$ touch .flx


イニシャライザはとりあえずこんな感じ。

[permission]
app/log 777


サブモジュールを追加してみる。

$ git submodule add git://github.com/k-holy/Volcanus_Validation.git app/vendor/Volcanus_Validation
$ git submodule add git://github.com/k-holy/Volcanus_Utils.git app/vendor/Volcanus_Utils


今回はとりあえずfluxflexを使ってみるのが目的なので、適当なサンプルスクリプトをfluxflexのリポジトリにpushして、GitHubを使わずにデプロイ。

$ git add -a
$ git commit -m 'first commit'
$ git push origin master


デプロイしたものの、何故かファイルが見つからないと怒られます。
原因が全く分からないので、とりあえずfluxflexからリポジトリをcloneし直してみると、サブモジュールの中身が空っぽになってます…。

こちらの記事 fluxflex.comを試してみた! - 空繰再繰 によると、fluxflexではgitリポジトリの中にgitリポジトリがあれば動かないらしい。
.gitmodulesとサブモジュールの.gitを削除し、gitインデックスからサブモジュールのディレクトリを削除した後、addします。

$ git rm --cached app/vendor/Volcanus_Utils
$ git rm --cached app/vendor/Volcanus_Validation
$ git add --a
$ git commit -m 'remove submodules'
$ git push origin master


バリデーションライブラリの Volcanus_Validation と、PSR-0対応クラスローダー Volcanus_Loader と、先日書いたばかりのCSRF対策用クラス Volcanus_TokenProcessor を組み合わせたサンプルを置いてみました。ソース丸見え仕様です。
http://volcanus.fluxflex.com/sample/2012-03-01.php

上記ライブラリ以外を1ファイルにベタ書きにした結果、懐かしさすら漂うレガシー感と、いわゆるモダンPHP的な感じが混在したヘンテコなコードになりました…。
サービスの使い方を間違ってる気がしないでもありませんが、ここから徐々に外部クラス化したり、既存のライブラリに置き換えたりしていく過程で、テストの書き方やクラス設計を学習できればと考えてます。