Cloud9 は、ボタン一つで開発用サーバー、エディタ、ターミナルを構築でき、しかもチームで開発ができるという素晴らしいサービスです。ベースは Docker で作られています。
公開サーバーは無料でいくつでも作成でき、非公開は1個まで作れます。1個以上の非公開な Workplace やより早いパフォーマンスが必要なら有料(月19ドル)になるという仕組みです。ビジネスモデルは GitHub と似ていて、その開発環境版みたいな感じでしょうか。
今回は Cloud9 に concrete5 の環境作成方法のノウハウを共有します。動作確認は concrete5.7.5.6 です。concrete5.7.5.4 未満のバージョンであるとコアーのハックが必要になります。
数クリックでサーバーを立ちあげることができ、料金も気にしなくて良いので、Amazon EC2 よりも気軽に開発環境を立ち上げれます。勉強会用のサーバーにも使えそう!
この記事を 27 分の動画でも解説しています。実際の画面をご覧になりたい方は、動画をご覧ください。
まず、無料アカウントで使える 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 の英語ドキュメントをご覧ください。
アカウントを作成
まず、Cloud9 でアカウントを作成します。アカウントは簡単に作成が可能です。
Dashboard 画面から Create a new workspace
をクリックして作業を進めます。
リリース版から concrete5 環境を作る
前半は配布版の concrete5 パッケージを使って、開発環境を作ってみます。後半は GitHub のレポジトリから作成する方法です。
1. Wordplace を作成する
下記の項目を入れていきます。項目の内容は適宜変えてください。
項目 | 内容 |
---|---|
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/ mv index.html 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' => $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)
- 管理者メールアドレス: [email protected]
- 管理者パスワード: 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 [email protected] --admin-password=mhjVHMsYHa0b
てな感じでのコマンドを入力すると、コマンドラインでインストールができます。コマンドラインの詳細は、公式サイトのドキュメントをご覧ください。
これで、簡単に concrete5 の環境を Cloud9 上に作成することができます!
GitHub レポジトリからの concrete5 環境を作る
今度は concrete5 の GitHub から開発最新版を持ってきてビルドする方法を紹介します。他の Git レポジトリも設定可能ですので、ご自分の開発環境への応用もされてください。
1. Workplace を作成する
下記の項目を入れていく。項目の内容は適宜変えてください。
項目 | 内容 |
---|---|
Owner: | 自分のアカウント or チーム |
Name: | 好きな名前 |
Hosted Workplace: | Public |
Clone from Git or Mercurial URL: | [email protected]: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' => $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)
- 管理者メールアドレス: [email protected]
- 管理者パスワード: 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 [email protected] --admin-password=mhjVHMsYHa0b
てな感じでのコマンドを入力すると、コマンドラインでインストールができます。コマンドラインの詳細は、公式サイトのドキュメントをご覧ください。
これで、GitHub 上の concrete5 のテストができます!