「Cloud Foundry 百日行」後半戦第1弾。第51日目は、Ruby-on-Rails ベースの CMS Camaleon CMS です。ちょっとしたWebサイトをプライベートで立ち上げたい時などにデプロイすると便利かもしれません。
ただしCloud Foundryの特性上、考慮しなければならない制約があります。それについては補足で後述したいと思います。
基本情報
デプロイ準備から動作確認までの手順は以下の通りです。
- 1) ソースコードの取得
- 2) デプロイ
- 3) 動作確認
1. ソースコードの取得
GitHub からソースコードをクローンします。
$ git clone https://github.com/owen2345/camaleon-cms.git
$ cd camaleon-cms
camaleon-cms$ ls
app app.json bin config config.ru db Gemfile Gemfile.lock lib license.txt public Rakefile README.md test vendor
2. デプロイ
まず Camaleon CMS 用のデータベースを作成します。
ReadMe の Requirements をみると、 MySQL5 or Sqlite or PostgreSQL
と書いてあるので、 今回は PostgreSQL を使って起動したいと思います。
というわけで、まずは PostgreSQL のサービスを作成します。 もしデプロイする bosh-lite 環境に PostgreSQL サービスブローカがない場合、 百日行の「postgresql-cf-service-broker を Cloud Foundry で動かす 」を参考に、事前に準備をしてください。
camaleon-cms$ cf create-service PostgreSQL 'Basic PostgreSQL Plan' came-pg
Creating service instance spwd-pg in org horiu-jn / space horiu-jn as horiu-jn...
OK
次に、デプロイ用のマニフェストを作成します。
camaleon-cms$ vi manifest.yml
applications:
- name: came-100
memory: 1G
command: 'RAILS_ENV=production bundle exec rake db:migrate && bundle exec rackup --port $PORT'
services:
- came-pg
- アプリのメモリ量を 256MB として試した結果、立ち上がらなかったため、今回は余裕をみて
memory:
は1G
を設定しました。 - db/seeds.rb を確認すると、何も設定されていないため、
command:
で指定するデータベースへの操作はdb:migrate
のみ実行します。 services:
にバインドするサービス名を記述しておくと、cf push
した際に自動でバインドを実行してくれるため、設定しておきます。
マニフェストが作成できたら、アプリをプッシュします。
camaleon-cms$ cf push
Using manifest file /home/horiu-jn/workspace/apps/camaleon-cms/manifest.yml
Creating app came-100 in org horiu-jn / space 100nichi as horiu-jn...
OK
Using route came-100.10.244.0.34.xip.io
Binding came-100.10.244.0.34.xip.io to came-100...
OK
Uploading came-100...
Uploading app files from: /home/horiu-jn/workspace/apps/camaleon-cms
Uploading 5.3M, 1341 files
Done uploading
OK
Binding service came-pg to app came-100 in org horiu-jn / space 100nichi as horiu-jn...
OK
Starting app came-100 in org horiu-jn / space 100nichi as horiu-jn...
:
0 of 1 instances running, 1 starting
1 of 1 instances running
App started
OK
App came-100 was started using this command `RAILS_ENV=production bundle exec rake db:migrate && bundle exec rackup --port $PORT`
Showing health and status for app came-100 in org horiu-jn / space 100nichi as horiu-jn...
OK
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: came-100.10.244.0.34.xip.io
last uploaded: Thu Aug 20 06:47:26 UTC 2015
stack: cflinuxfs2
buildpack: Ruby
state since cpu memory disk details
#0 running 2015-08-20 03:49:27 PM 0.0% 172.7M of 256M 0 of 1G
無事成功しました。
3. 動作確認
ブラウザから、払いだされたアプリのURLへアクセスします。
Name
にサイト名を入力し Submit
ボタンを押すとサイトが作成され、 admin のアカウント情報が表示されます。
Visit Admin Panel Here
をクリックすると、ログイン画面が表示されます。
admin のアカウント情報を入力しログインすると、サイト管理用のダッシュボードが表示されます。
左側のメニューから、サイトへの投稿やファイルのアップロード、ユーザ追加等々の操作を行うことが出来ます。
ここではすべての操作を紹介できないため、今回はメインであるサイトへの投稿を行ってみます。
メニューから Content > Post > Add New
を選択し、記事作成用のフォーム画面を表示します。
画面表示までに少し時間がかかりましたので、少し辛抱して待ってください。
画面が表示されたら、required となっている情報をすべて記入し、 Create
ボタンを押します。
成功すると、 Content > Post > All Items
で表示される投稿一覧に、作成した投稿がリストアップされます。
では、実際にこのサイトのページを見てみましょう。 画面の上のほうにあるプルダウンメニューで Visit
を選択するとページを表示することが出来ます。
ちゃんと投稿した記事がページに表示されています。
補足
Camaleon CMS では、投稿記事やユーザ情報、設定情報などはデータベースで管理されてます。しかし画像やドキュメントなどアップロードしたファイルは、インスタンス内のファイルシステムで管理されています。そのため cf restart
などでアプリを再起動しインスタンスが再作成されると、それらのファイルはすべて消えてしまいます。
cf restart
後、画像のみが表示されなくなってしまいました。
ファイルを永続的に管理して Camaleon CMS を運用したい場合には、永続化する方法の検討と Camaleon CMS の修正が必要となります。
今回使用したソフトウェア
- 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) - postgresql-cf-service-broker
https://github.com/cloudfoundry-community/postgresql-cf-service-broker/tree/99861eef5d220721799a6fc5465a272347b1007a - Camaleon Cms
https://github.com/owen2345/camaleon-cms/tree/d7e9b7168ee632c0bf10cbedb327f6cee214b55c
投稿者:NTTソフトウェア株式会社 堀内 純