「Cloud Foundry 百日行」第55日目。 前回 に引き続きプロジェクト管理で利用出来るKanban方式の Kanboard です。
このアプリはこれまで紹介されたプロジェクト管理ツールに比べて機能は限定的ですが、シンプルにタスク管理を行うだけなら十分なケースも多いはずです。
検証を始めてから気がついたのですが、このアプリはCloud Foundryと同様のPaaSであるHeroku対応がされているので簡単にデプロイすることが出来ます。
基本情報
-
公式サイト
Kanboard
手順は以下の通りです。
- 1) ソースコードの取得
- 2) 事前準備
- 3) アプリのデプロイ
- 4) 動作確認
1. ソースコードの取得
今回も公式サイトからZIPファイルでダウンロードします。
ちなみに検証した際のバージョンはv1.0.17でした。
$ wget http://kanboard.net/kanboard-latest.zip
$ unzip kanboard-latest.zip
$ cd kanboard
$ ls
app assets ChangeLog config.default.php data index.php jsonrpc.php kanboard LICENSE robots.txt vendor
2. 事前準備
2.1 PHP拡張モジュールの追加
Installation の要件に従い各PHP拡張モジュールの対応を行います。
しかし、既にSQLiteではアプリの再起動の際にDB情報が失われることが過去の記事でも紹介されていますので、今回はMySQLを利用するように読み替えて実施します。
MySQLの場合はmbstring
, gd
に加えて pdo_mysql
と pdo
を利用出来るようにします。
$ mkdir .bp-config
$ vi .bp-config/options.json
$ cat .bp-config/options.json
{
"PHP_EXTENSIONS": ["pdo","pdo_mysql","gd","mbstring"]
}
2.2 MySQL サービスの準備
ここも 前回 と同じ手順なのでサクッと進めて行きましょう。
$ cf push kanboard --no-start
$ cf create-service p-mysql 100mb kandb
$ cf bind-service kanboard kandb
$ cf env kanboard
Getting env variables for app kanboard in org k-nagai / space work as k-nagai...
OK
System-Provided:
{
"VCAP_SERVICES": {
"p-mysql": [
{
"credentials": {
"hostname": "10.244.7.6",
"jdbcUrl": "jdbc:mysql://10.244.7.6:3306/cf_b25edd98_54fe_41d2_bf5e_9883e4925973?user=Xe40DtPu0xNyIPRO\u0026password=u1vFRM49kw4zp1Wo",
"name": "cf_b25edd98_54fe_41d2_bf5e_9883e4925973",
"password": "u1vFRM49kw4zp1Wo",
"port": 3306,
"uri": "mysql://Xe40DtPu0xNyIPRO:u1vFRM49kw4zp1Wo@10.244.7.6:3306/cf_b25edd98_54fe_41d2_bf5e_9883e4925973?reconnect=true",
"username": "Xe40DtPu0xNyIPRO"
},
"label": "p-mysql",
"name": "kandb",
"plan": "100mb",
"tags": [
"mysql"
]
}
]
}
}
:
2.3 環境変数の設定
これまでの流れだと、ここで「 config.default.php
をリネームしてMySQLの情報を編集」となりそうですが、今回は折角Heroku対応されているのでその機能を利用して進めます。
ここで重要になるのはこれまで使う機会があまり無かった cf env
で取得した uri
の情報です。
取得した uri
を DATABASE_URL
という環境変数に設定します。
$ cf set-env kanboard DATABASE_URL "mysql://Xe40DtPu0xNyIPRO:u1vFRM49kw4zp1Wo@10.244.7.6:3306/cf_b25edd98_54fe_41d2_bf5e_9883e4925973?reconnect=true"
これで事前準備は完了です。
3. アプリのデプロイ
cf push
します。
$ cf push kanboard
:
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: kanboard.10.244.0.34.xip.io
last uploaded: Wed Aug 19 07:16:14 UTC 2015
stack: cflinuxfs2
buildpack: PHP
state since cpu memory disk details
#0 running 2015-08-19 04:16:33 PM 1.7% 31M of 256M 0 of 1G
問題なくアプリが起動。
4. 動作確認
最初、 http://kanboard.10.244.0.34.xip.io
にアクセスすると少し間を置いてログイン画面が表示されます。
バックグランドでDB初期設定が走るようです。
初期のログインはデフォルトの admin/admin
でログインします。
メニューから Settings
を選んで Application Settings
で言語やタイムゾーンを設定します。
あとはユーザ追加やプロジェクトの作成、タスク管理などいろいろ試して見て下さい。
最後に利用される際の注意点ですが、これまでにも度々出てきていますがこのアプリもファイルの永続化は取られていません。
DBに書き込まれているユーザやタスクの情報は問題ありませんが、添付ファイルはアプリを再起動すると削除されてしまいますので気をつけて下さい。
この辺りの対応が既にされているアプリもありますので、また次の機会にご紹介したいと思います。
おまけ: config.php
を作った場合
2.3の手順で config.php
を作った場合どうなるかという蛇足情報です。
作成した場合は app/common.php
の処理で cf push
の際に変数が重複してデプロイに失敗します。
中身を見ていただければ一目瞭然ですが、まず DATABASE_URL
を分解して各変数に代入する記述があり、その後にconfig.phpから同じ変数に読み込む設定となっています。なのでどうしても config.php
を利用したい場合(そんな方がいるかはわかりませんが・・・)は app/common.php
の下記の部分をすべてコメントアウトすればうまくいくはずです。
if (getenv('DATABASE_URL')) {
$dbopts = parse_url(getenv('DATABASE_URL'));
define('DB_DRIVER', $dbopts['scheme']);
define('DB_USERNAME', $dbopts["user"]);
define('DB_PASSWORD', $dbopts["pass"]);
define('DB_HOSTNAME', $dbopts["host"]);
define('DB_PORT', isset($dbopts["port"]) ? $dbopts["port"] : null);
define('DB_NAME', ltrim($dbopts["path"], '/'));
}
今回使用したソフトウェア
- cf-release (v211)
https://github.com/cloudfoundry/cf-release/tree/v211
(https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (v6.12.0-8c65bbd-2015-06-30T00:10:31+00:00)
https://github.com/cloudfoundry/cli/tree/v6.12.0
(https://github.com/cloudfoundry/cli/tree/8c65bbd4d243cbbc9bdbf2ec2a3b0e094c094f48) - cf-mysql-release (v20)
https://github.com/cloudfoundry/cf-mysql-release/tree/v20
(https://github.com/cloudfoundry/cf-mysql-release/tree/8f7f6916b75a2e01332cc91df8c285dabe698703) - Kanboard(v1.0.17)
http://kanboard.net/kanboard-latest.zip
は随時、最新バージョンになっているので今回利用したバージョンを利用する場合は下記の公式リポジトリを参照
https://github.com/fguillot/kanboard/tree/8d24e03b440ed5de90cae41f45d116c8f7e0f87c