Cloud9 で concrete5 開発環境を作る

Katz Ueno
Katz Ueno

まず、無料アカウントで使える 2016/2/9 時点で確認したスペックでは下記の通り。

項目 内容
CPU 1コア
メモリ 1GB
HDD 5GB
PHP 5.5.9
MySQL 5.5.44

concrete5.7.5.6 は十分に動き、小〜中規模なサイトの開発環境としては十分なスペックです。

普通の開発用と、SalesForce 開発用のプランがあり、インフラ的には Google Cloud 上で Docker を使って各開発環境を構築しているとのこと。

あくまでも開発用で、公開サーバーとしてホスティングする用途ではありません。無料ユーザーは、2時間、有料ユーザーは7日間、サーバーに何もアクセスされないと Apache が止まるようになっています

またDNSで引いた時と実IPが違う構造になっているため、ロードバランサーかリバースプロキシ的なものが入っている可能性があり、設定を変えて concrete5 のログイン状態が保持され続ける設定を行います。その詳細はこちらの Symfony の英語ドキュメントをご覧ください。


インストールシェルスクリプト

[2016/3/10 追記] 簡単にインストールできるインストールスクリプトを作成しました。詳細の説明と動画は下記からご覧になれます

https://github.com/katzueno/concrete5-install-shell-scripts


アカウントを作成

まず、Cloud9 でアカウントを作成します。アカウントは簡単に作成が可能です。

Dashboard 画面から Create a new workspace をクリック

https://c9.io/dashboard.html


リリース版から concrete5 環境を作る

前半は配布版の concrete5 パッケージを使って、開発環境を作ってみます。後半は GitHub のレポジトリから作成する方法です。


1. Workspace を作成する

下記の項目を入れていく。項目の内容は適宜変えてください。

項目 内容
Owner: 自分のアカウント or チーム
Name: 好きな名前
Hosted Workplace: Public
Clone from Git or Mercurial URL: 空白
Choose from a template PHP & Apache


2. 環境をスタート、MySQL データベースを作る

環境をスタートすると、ブラウザに

  • ファイルを表示するウインドウ
  • ソースを表示するウインドウ
  • ターミナル (Bash コマンド) を表示するウインドウ

が現れます。

下記のコマンドは「bash」ウインドウで入力していくコマンド類です。


3. MySQL をスタートする

mysql-ctl start

データベース名は「c9」になります。
ルートユーザー名は自分の cloud9 のユーザー名になります。


4. MySQL ユーザーとパスワードを作成する (オプション)

Cloud9 で用意されている MySQL のデフォルトユーザーはパスワード無し状態です。それでもインストールできますが、「不安」という人には、MySQL のコマンドモードに入り、MySQLユーザー名「concrete5」を作成し、その MySQL パスワードを「concrete5」にするという設定をします。

mysql-ctl cli
CREATE USER 'concrete5'@'127.0.0.1' IDENTIFIED BY 'concrete5';
GRANT ALL PRIVILEGES ON *.* TO 'concrete5'@'127.0.0.1' WITH GRANT OPTION;
exit;


5. phpmyadmin をインストール

必要に応じて phpmyadmin を1コマンドでインストール

phpmyadmin-ctl install

https://[Wordspace 名]-[ユーザー名].c9users.io/phpmyadmin

で phpmyadmin がインストールされます。


6. concrete5 の ZIP ファイルをダウンロードする

concrete5 日本語公式サイトのダウンロードページから、ダウンロード開始ボタンに登録されている URL を取得してください。

そして、wget するんですが、ZIP ファイルなのに、index.html という名前でダウンロードされてしまうので「concrete5.zip」に名前を書き換えて、解凍します。

下記は concrete5.7.5.6 をダウンロードするサンプルコマンドです。

wget http://www.concrete5.org/download_file/-/view/85780/ -O concrete5.zip
unzip concrete5.zip

ファイルを移動する

ここで concrete5.7.5.6 であれば、「concrete5.7.5.6」というフォルダが作成され、その下に concrete5 ファイルが展開されるのですが、必要に応じで、左側のファイルメニューから、ドラッグアンドドロップでファイル一式をトップフォルダに持っていくことができます。

取得した ZIP ファイルなど、適宜削除してやってください。


7. Cloud9 で動くよう config 設定を加える

Cloud9 の左のファイルマネージャより

/application/config/concrete.php というファイルを新規作成し、

下記のコードをコピペします。

<?php
/**
 * Always trust incoming request.
 * 
 * For more detail, see: http://symfony.com/doc/current/cookbook/request/load_balancer_reverse_proxy.html
 */
// Get remote address
$remoteIp = $_SERVER['REMOTE_ADDR'];
return array(
    'security' => array(
        'trusted_proxies' => array(
            'ips' => array($remoteIp),
        ),
    ),
);

そしてファイルを保存します。


8. サーバーを立ち上げる

上のバーの Preview の右側にある「Run Project」をクリック。

サーバーが立ち上がり、URL を教えてくれます。


9. concrete5 をインストール

concrete5 をインストールするのは、ブラウザから行う方法と、CLI コマンドから行う方法があります。


ブラウザでインストール

まず、ブラウザの方法です。

ブラウザで移動するとインストール画面が表示されます。
サイト情報を入力します。

MySQL のサーバー情報は

  • MySQL アドレスは:127.0.0.1
  • MySQL ユーザー名 & パスワードは上記で設定したとおり
  • MySQL データベース名は: c9

です。


コマンドラインツールでインストール

下記フォーマットで bash コマンドラインからインストール可能です。

まず、cd で concrete5 がインストールされているルートフォルダに移動し、一番最初に、コマンドラインツールを実行可能にするよう、権限を変更します。

$ cd [concrete5 インストールフォルダ]
$ chmod 755 concrete/bin/concrete5

そして、インストールコマンドを実行します。

$ concrete/bin/concrete5 c5:install --db-server=127.0.0.1 --db-username=[MySQLユーザー名] --db-password=[MySQLパスワード] --db-database=c9 --site="[サイト名]" --starting-point=[elemental_full]か[elemental_blank] --admin-email=[管理者メールアドレス] --admin-password=[管理者パスワード]

わかりづらいと思うので、例えば、

  • Workspace 直下が concrete5 のルート
  • MySQL ユーザー名: concrete5
  • MySQL パスワード: concrete5 (デフォルトの MySQL ユーザーであれば空欄でもOK)
  • サイト名: concrete5 Demo
  • サンプルデータ: あり -> elemental_full (なしの場合は->elemental_blank)
  • 管理者メールアドレス: concrete5@example.com
  • 管理者パスワード: mhjVHMsYHa0b (ランダムに発生させた文字列)

だとすると、

$ cd ~/workspace/
$ chmod 755 concrete/bin/concrete5
$ concrete/bin/concrete5 c5:install --db-server=127.0.0.1 --db-username=concrete5 --db-password=concrete5 --db-database=c9 --site="concrete5 Demo" --starting-point=elemental_full --admin-email=concrete5@example.com --admin-password=mhjVHMsYHa0b

てな感じでのコマンドを入力すると、コマンドラインでインストールができます。コマンドラインの詳細は、公式サイトのドキュメントをご覧ください。


これで、簡単に concrete5 の環境を Cloud9 上に作成することができます!


GitHub レポジトリからの concrete5 環境を作る

今度は concrete5 の GitHub から開発最新版を持ってきてビルドする方法を紹介します。他の Git レポジトリも設定可能ですので、ご自分の開発環境への応用もされてください。


1. Workplace を作成する

下記の項目を入れていく。項目の内容は適宜変えてください。

項目 内容
Owner: 自分のアカウント or チーム
Name: 好きな名前
Hosted Workplace: Public
Clone from Git or Mercurial URL: git@github.com:concrete5/concrete5.git
Choose from a template PHP, Apache & MySQL


2. 環境をスタート、MySQL データベースを作る

環境をスタートすると、ブラウザに

  • ファイルを表示するウインドウ
  • ソースを表示するウインドウ
  • ターミナル (Bash コマンド) を表示するウインドウ

が現れます。下記のコマンドは「bash」ウインドウで入力していくコマンド類です。


3. MySQL をスタートする

mysql-ctl start

データベース名は「c9」になります。
ルートユーザー名は自分の cloud9 にユーザー名になります。


4. MySQL ユーザーとパスワードを作成する (オプション)

Cloud9 で用意されている MySQL のデフォルトユーザーはパスワード無し状態です。それでもインストールできますが、「不安」という人には、MySQL のコマンドモードに入り、MySQLユーザー名「concrete5」を作成し、その MySQL パスワードを「concrete5」にするという設定をします。
mysql-ctl cli
CREATE USER 'concrete5'@'127.0.0.1' IDENTIFIED BY 'concrete5';
GRANT ALL PRIVILEGES ON *.* TO 'concrete5'@'127.0.0.1' WITH GRANT OPTION;
exit;


5. phpmyadmin をインストール

必要に応じて phpmyadmin を1コマンドでインストール

phpmyadmin-ctl install

https://[Wordspace 名]-[ユーザー名].c9users.io/phpmyadmin

で phpmyadmin がインストールされます。


6. PHP.iniを作成する

concrete5 の Git レポジトリは 2016/2/9 時点は、PHP のショートタグが使われているので、php.ini を作成して、ショートタグを使えるように設定する必要があります。

  • 左側のファイルウインドウで、トップのフォルダを選択
  • File メニューから New File をクリック
short_open_tag on

という表記を加える

  • File メニューから Save As を選んで、php.ini という名前で保存する。

php.ini は Workplace のトップディレクトリに設置が必要です。


7. ビルドする

Git レポジトリにある concrete5 は、ライブラリが入っていません。
なので、grunt でリリースする必要があります。

cd web/concrete
composer install
cd ../../build
npm install -g grunt-cli
npm install
cd ../

途中で GitHub の Personal Access Token を取得するように指示される場合があります。その場合はこちらからトークンを生成し取得します。


8. Cloud9 で動くよう config 設定を加える

Cloud9 の左のファイルマネージャより

/application/config/concrete.php というファイルを新規作成する。

下記のコードをコピペします。

<?php
/**
 * Always trust incoming request.
 * 
 * For more detail, see: http://symfony.com/doc/current/cookbook/request/load_balancer_reverse_proxy.html
 */
// Get remote address
$remoteIp = $_SERVER['REMOTE_ADDR'];
return array(
    'security' => array(
        'trusted_proxies' => array(
            'ips' => array($remoteIp),
        ),
    ),
);

そして、保存します。


9. サーバーを立ち上げる

上のバーの Preview の右側にある「Run Project」をクリック。

サーバーが立ち上がり、URL を教えてくれます。


10. concrete5 をインストール

concrete5 をインストールするのは、ブラウザから行う方法と、CLI コマンドから行う方法があります。


ブラウザでインストール

まず、ブラウザの方法です。

ブラウザで /web/ ディレクトリ以下に移動するとインストール画面が表示されます。
サイト情報を入力します。

MySQL のサーバー情報は

  • MySQL アドレスは:127.0.0.1
  • MySQL ユーザー名 & パスワードは上記で設定したとおり
  • MySQL データベース名は: c9

です。


コマンドラインツールでインストール

下記フォーマットで bash コマンドラインからインストール可能です。

まず、cd で concrete5 がインストールされているルートフォルダに移動し、一番最初に、コマンドラインツールを実行可能にするよう、権限を変更します。

$ cd [concrete5 インストールフォルダ]
$ chmod 755 concrete/bin/concrete5

そして、インストールコマンドを実行します。

$ concrete/bin/concrete5 c5:install --db-server=127.0.0.1 --db-username=[MySQLユーザー名] --db-password=[MySQLパスワード] --db-database=c9 --site="[サイト名]" --starting-point=[elemental_full]か[elemental_blank] --admin-email=[管理者メールアドレス] --admin-password=[管理者パスワード]

わかりづらいと思うので、例えば、

  • workspace/web/が concrete5 のルート
  • MySQL ユーザー名: concrete5
  • MySQL パスワード: concrete5 (デフォルトの MySQL ユーザーであれば空欄でもOK)
  • サイト名: concrete5 Demo
  • サンプルデータ: あり -> elemental_full (なしの場合は->elemental_blank)
  • 管理者メールアドレス: concrete5@example.com
  • 管理者パスワード: mhjVHMsYHa0b (ランダムに発生させた文字列)

だとすると、

$ cd ~/workspace/web/
$ chmod 755 concrete/bin/concrete5
$ concrete/bin/concrete5 c5:install --db-server=127.0.0.1 --db-username=concrete5 --db-password=concrete5 --db-database=c9 --site="concrete5 Demo" --starting-point=elemental_full --admin-email=concrete5@example.com --admin-password=mhjVHMsYHa0b

てな感じでのコマンドを入力すると、コマンドラインでインストールができます。コマンドラインの詳細は、公式サイトのドキュメントをご覧ください。


これで、簡単に concrete5 の環境を Cloud9 上に作成することができます!