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

2015-08-11

pimcore を Cloud Foundry で動かす

「Cloud Foundry 百日行」第48日目は、やたらと多機能なCMS pimcore です。

基本情報

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

  • 1) ソースコードの取得
  • 2) 事前準備
  • 3) Cloud Foundry 環境へのプッシュ
  • 4) 動作確認

1. ソースコードの取得

$ git clone https://github.com/pimcore/pimcore
$ cd pimcore
pimcore$ ls
3rd-party-licenses.md  composer.json  LICENSE.txt  plugins_example  tests   website_demo
build                  index.php      pimcore      README.md        update  website_example

PHPのアプリです。

2. 事前準備

データベースの準備

SeviceとしてMySQLのデータベースを準備します。

起動無しで一旦アプリをPushし、

pimcore$ cf push pimcore --no-start
Creating app pimcore in org ukaji / space default as ukaji...
OK
 
Creating route pimcore.10.244.0.34.xip.io...
OK
 
Binding pimcore.10.244.0.34.xip.io to pimcore...
OK
 
Uploading pimcore...
Uploading app files from: /home/ukaji/workspace/pimcore
Uploading 57.8M, 15020 files
Done uploading               
OK

MySQLのServiceを作り、

pimcore$ cf create-service p-mysql 100mb pimcore-db
Creating service instance pimcore-db in org ukaji / space default as ukaji...
OK

アプリとバインドします。

pimcore$ cf bind-service pimcore pimcore-db
Binding service pimcore-db to app pimcore in org ukaji / space default as ukaji...
OK
TIP: Use 'cf restage pimcore' to ensure your env variable changes take effect

必要モジュールの導入

ドキュメント を見ながら必要な環境を設定していきます。
必要なモジュール等は上記ページに列挙してくれているので、全て入れてしまいましょう。

pimcore$ mkdir .bp-config
pimcore$ vi .bp-config/options.json
{
        "PHP_MODULES": ["cli", "cgi"],
        "PHP_EXTENSIONS": ["mcrypt", "mysqli", "gd", "exif", "mbstring", "zlib", "zip", "bz2", "openssl", "imagick", "opcache", "memcache", "curl", "fileinfo"]
}

ドキュメント中にあるReauirementsの中で、 iconv dom simplexml の3つはPHP-Buildpackの追加モジュールのサポート対象に含まれておらずここには記述されていませんが、インストールは自動的に行われているためここでは特に記述の必要はありません。
逆に、 PHP_EXTENTIONS 末尾の fileinfo はRequirementsの中にはリストアップされていませんが、インストール手続きの途中で必要と言われるため、ここで入れてしまっています。

Permission設定

次に ファイルのPermission です。
こちらについても設定してしまいましょう。

pimcore$ chmod -R 777 website_demo/var/
pimcore$ chmod -R 777 website_example/var/
pimcore$ chmod -R 777 pimcore/

3. Cloud Foundry 環境へのプッシュ

アプリをPushします。
比較的アプリのサイズも大きく必要とするモジュールも多いのでいつもより時間がかかると思いますが気長に待ちましょう。

pimcore$ cf push pimcore
(一部略)
-----> Uploading droplet (166M)

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
1 of 1 instances running

App started


OK

App pimcore was started using this command `$HOME/.bp/bin/start`

Showing health and status for app pimcore in org ukaji / space default as ukaji...
OK

requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: pimcore.10.244.0.34.xip.io
last uploaded: Mon Aug 10 09:34:54 UTC 2015
stack: cflinuxfs2
buildpack: Found

     state     since                    cpu    memory         disk      details
#0   running   2015-08-10 06:36:41 PM   0.0%   135M of 256M   0 of 1G

起動しました。

4. 動作確認

ブラウザからアクセスしてみると、

インストーラが起動しています。

cf env でDB接続のための環境変数

"VCAP_SERVICES": {
 "p-mysql": [
  {
   "credentials": {
    "hostname": "10.244.7.6",
    "jdbcUrl": "jdbc:mysql://10.244.7.6:3306/cf_04c1755c_47b9_4a22_87fe_a4b0f8ae8559?user=pFCLFDlYzcl27aDP\u0026password=uu7sdofZE42G8h09",
    "name": "cf_04c1755c_47b9_4a22_87fe_a4b0f8ae8559",
    "password": "uu7sdofZE42G8h09",
    "port": 3306,
    "uri": "mysql://pFCLFDlYzcl27aDP:uu7sdofZE42G8h09@10.244.7.6:3306/cf_04c1755c_47b9_4a22_87fe_a4b0f8ae8559?reconnect=true",
    "username": "pFCLFDlYzcl27aDP"
   },
   "label": "p-mysql",
   "name": "pimcore-db",
   "plan": "100mb",
   "tags": [
    "mysql"
   ]
  }
 ]
}

を参考にしつつ、フォームの必要な項目を埋めて右下の Install Now! を押下します。

Admin Userの箇所はお好きな文字列をどうぞ。

しばらくするとログインページに遷移するので、先ほどAdmin Userに登録した Username / Password でログインしましょう。

ログイン後のページはこちら。Dashboardです。

メニューの FileSeemode を選ぶと、一般ユーザからみたウェブサイトを閲覧することができ、

さらに右下の Edit this page を押下するとウェブサイトを見ながら編集を行う、といったことも可能です。

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