「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
で再起動を行った場合も正常にコンテンツが永続化されていました。
また、企業向けデモサイトをロードした場合は、このような企業サイト向けなデモページが表示されます。
今回使用したソフトウェア
- cf-release (v211)
https://github.com/cloudfoundry/cf-release/tree/v211
( https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa ) - spring-boot-cf-service-broker-mongo
https://github.com/nota-ja/spring-boot-cf-service-broker-mongo/tree/cf-100-day-challenge-068-with-env-specific-configs - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (cf version 6.12.0-8c65bbd-2015-06-30T00:10:31+00:00)
https://github.com/cloudfoundry/cli/releases/tag/v6.12.0 - SHIRASAGI(v1.0.0)
https://github.com/shirasagi/shirasagi/tree/df5930b54e5b5b3e999d5cf873439102ab2fe6f4
投稿者:NTTソフトウェア株式会社 森川 健