オープンソースのPaaSソフトウェア CloudFoundry の技術情報やイベント告知などを掲載します

2015-11-13

SHIRASAGI を Cloud Foundry で動かす

「Cloud Foundry 百日行」第99日目は、中・大規模サイト向けのCMSのSHIRASAGI(シラサギ) です。

Rails製のアプリケーションで、開発は自治体向けCMSの”Joruri CMS”の元開発コアメンバーが設立した会社が開発を行っています。
“SHIRASAGI”も自治体向けサイト構築を意識したデモ画面が用意されているのが特徴です。

基本情報

手順の概要は以下の通りです。

  • 1) ソースコードの取得
  • 2) 事前準備
  • 3) アプリの起動
  • 4) 動作確認

1. ソースコードの取得

$ git clone https://github.com/shirasagi/shirasagi.git
$ cd shirasagi/
$ git checkout v1.0.0
$ ls
app  bin  config  config.ru  db  Gemfile  Gemfile.lock  Guardfile  lib  log  MIT-LICENSE  private  public  Rakefile  README.md  spec  vendor

2. 事前準備

2.1. MongoDBのサービスインスタンス作成

$ cf create-service "Mongo DB" "Default Mongo Plan" shirasagi-mongo

2.2. 設定ファイルのコピー

README.mdの”SHIRASAGIのインストール”の手順を参考に設定ファイルをコピーします

$ cp -n config/samples/*.{yml,rb} config/

2.3. アプリの事前push

--no-startを付けてpushします

$ cf push shirasagi --no-start

2.4. サービスの紐付け

作成したサービスインスタンスをアプリに紐づけます

$ cf bind-service shirasagi shirasagi-mongo

2.5. MongoDB接続情報の設定

紐づけたサービスの情報を得るために『cf env』を実行し、credentialsのuri部分をメモします。

$ cf env shirasagi
:
    "credentials": {
     "uri": "mongodb://f6f4e92d-ce0f-445f-b75e-e69879e57b9c:
password@192.168.15.91:27017/6248441b-b375-4723-bb4e-befdab6
164da"
    },

mongoid.ymlにMongoDB接続用の設定を行います

$ vi config/mongoid.yml
# mongodb configuration

production:
  sessions:
    default:
      database: 6248441b-b375-4723-bb4e-befdab6164da
      username: f6f4e92d-ce0f-445f-b75e-e69879e57b9c
      password: password
      hosts:
        - 192.168.15.91:27017

2.6. 起動用スクリプトの作成

今回のアプリでは,初回起動時のみ実行する必要がある処理と,2回目以降通常の起動で必要な処理とに分けて起動スクリプトを作成します。

まずは初回起動用のスクリプトfirstrun.shを作成します
host:部分の値はアプリ名と統一させます
domains:部分はCloud Foundryのホスト名+ドメイン名の値と合わせます

$ vi firstrun.sh
#!/bin/bash -x
 
bundle exec rake db:drop
bundle exec rake db:create_indexes
bundle exec rake ss:create_site data='{name: "demo", host: "shirasagi", domains: "shirasagi.10.244.0.34.xip.io"}'

続いて通常起動用のスクリプトのstart.shを編集します

今回は自治体向けサイトのデモデータを利用する為、”demo”を指定します。
企業向けデモをロードする場合は”company”を指定します。

$ vi start.sh
#!/bin/bash -x

bundle exec rake db:seed name=demo site=shirasagi
bundle exec unicorn_rails -c /home/vcap/app/config/unicorn.rb -p $PORT

firstrun.shとstart.shに実行権を設定します

$ chmod a+x firstrun.sh
$ chmod a+x start.sh

2.7. manifest.ymlの作成

---
applications:
- name: shirasagi
  memory: 1G
  host: shirasagi
  domain: 10.244.0.34.xip.io
  command: './start.sh'
  timeout: 180

3. アプリの起動

初回push時は以下のように実行します

$ cf push -c './firstrun.sh && ./start.sh'
:
requested state: started
instances: 1/1
usage: 1G x 1 instances
urls: shirasagi.10.244.0.34.xip.io
last uploaded: Tue Nov 10 08:13:48 UTC 2015
stack: cflinuxfs2
buildpack: Ruby

     state     since                    cpu    memory         disk      details
#0   running   2015-11-10 05:15:05 PM   0.2%   388.5M of 1G   0 of 1G

成功しました。

2回目以降のpush時は以下のように実行します

$ cf push

4. 動作確認

ブラウザで”http://shirasagi.10.244.0.34.xip.io”にアクセスすると、自治体向けなデモページが表示されます。

コンテンツの編集は”http://shirasagi.10.244.0.34.xip.io/.mypage”にアクセスし
公式サイトのオンラインデモの情報を元に、ログイン画面でIDをadmin、パスワードをpassと入力するとログインする事が出来ます。

ログインすると管理画面が表示されます

管理画面から新規コンテンツを管理画面から追加した後にcf restartで再起動を行った場合も正常にコンテンツが永続化されていました。

また、企業向けデモサイトをロードした場合は、このような企業サイト向けなデモページが表示されます。

今回使用したソフトウェア