Cloud 9 に Craft CMS をインストールする

先月末の「CMS大阪夏祭り」以降、ありがたいことに Craft CMS 関連の話題をチラホラ見かけるようになりました。
きっと、安藤さんはじめレポート記事などをまとめていただいた皆さんのおかげですね。ありがとうございます!

「CMS大阪夏祭り」注目株!?「Craft CMS」がすごいので広めたい : ATOMS by Loftwork
http://atoms.loftwork.jp/20170828_cmsfes_osaka2017_craftcms/

そんな矢先、Cloud 9 へのインストール方法が紹介されているのを発見。

Craft CMSをインストール(Cloud 9編) - Qiita
https://qiita.com/seltzer/items/d34b662bad484c529421

Cloud 9 のデフォルトが PHP 5.x なこともあり「Craft CMS 案外モッサリしてるね」と感じる方がいらっしゃるかも?ということで、PHP 7.1 に切り替えつつ Craft CMS をインストールする方法をご紹介します。

Workspace の作成

新しい Workspace の作成画面にある Choose a template 欄で PHP, Apache & MySQL を選択します。

Workspace 設定画面

このとき Workspace name 欄に接頭辞 test- をつけた名称にしておくと、Craft CMS の管理画面で ClientPro を試用できるようになるため、便利です。

シェルスクリプトの作成

Workspace が起動したら、ルート直下(hello-world.php と同階層)に setup.craftcms.sh という名称でファイルを作成し、以下のコードを貼り付けます。

#!/bin/bash
#
# Set up Craft CMS to Cloud9:
# ----------
# Version 0.1
# By Toru Kokubun
#
# Please use at your own risk...

# Check Paramater
# ----------
# check variable counts
if [ $# -ne 1 ]; then
  echo '[error] インストールするバージョンを引数で指定してください' 1>&2
  exit 1
fi

# Check Version Format
# ----------
# set request version
REQUEST_VERSION="$1"

# set Craft CMS version to array
DEFAULT_IFS="$IFS"; IFS='.'
read -r -a _array <<< "$REQUEST_VERSION"
IFS="$DEFAULT_IFS"

# check request version format
if [ ${#_array[@]} -ne 3 ]; then
  echo '[error] バージョン表記に誤りがあります' 1>&2
  exit 1
fi

# Variables
# ----------
TARGET_VERSION="${_array[0]}.${_array[1]}.${_array[2]}"
TARGET_ZIP_FILENAME="Craft-$TARGET_VERSION.zip"
TARGET_ZIP_URL="https://download.craftcdn.com/craft/${_array[0]}.${_array[1]}/$TARGET_VERSION/$TARGET_ZIP_FILENAME"

# Check Zip file exists
# ----------
if [[ `wget -S --spider $TARGET_ZIP_URL  2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
  echo 'セットアップを開始します'
else
  echo '[error] 指定されたバージョンの Craft CMS はありませんでした' 1>&2
  exit 1
fi

# Install PHP 7.1
# ----------
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y
sudo apt-get install php7.1 php7.1-curl php7.1-cli php7.1-gd php7.1-intl php7.1-mcrypt php7.1-json php7.1-mysql php7.1-opcache php7.1-bcmath php7.1-mbstring php7.1-soap php7.1-xml php7.1-zip php7.1-interbase -y
sudo apt-get autoremove -y

# switch use PHP version
sudo a2dismod php5
sudo a2enmod php7.1

# Download Craft CMS
# ----------
wget $TARGET_ZIP_URL
unzip $TARGET_ZIP_FILENAME

# Modify Config Files
# ----------
# modified httpd.conf 
sudo sed -i -e "s/\/home\/ubuntu\/workspace/\/home\/ubuntu\/workspace\/public/g" /etc/apache2/sites-enabled/001-cloud9.conf

# modified db config
sed -i -e "s/'database' => \('.*'\)/'database' => 'c9'/g" -e "s/'user' => \('.*'\)/'user' => substr(getenv('C9_USER'), 0, 16)/g" ~/workspace/craft/config/db.php

# rename htaccess
mv public/htaccess public/.htaccess

# Initialize Database
# ----------
# MySQL start
mysql-ctl start

# install phpMyAdmin
phpmyadmin-ctl install

# Finish
# ----------
echo 'セットアップが完了しました'
echo '~/workspace/setup-craftcms.sh を削除後、/admin にアクセスしてインストールしてください'

このスクリプトにより

  • PHP 7.1 のインストール(PHP 5.x からの切り替え)
  • Craft CMS 2.x のダウンロードと展開
  • ドキュメントルートを ~/workspace/public に変更
  • craft/config/db.php に Cloud 9 のユーザー情報をセット
  • ~/workspace/public/.htaccess の有効化
  • MySQL の起動
  • phpMyAdmin のインストール

を1つのコマンドで自動処理します。

セットアップの実行

bash タブで下記のようにインストールする Craft CMS のバージョンを指定しつつ実行します。

$ /bin/bash setup.craftcms.sh 2.6.2990

なお、指定するバージョン表記は公式サイトの Changelog を参考にしてください。

Changelog | Craft CMS
https://craftcms.com/changelog

bash タブに

セットアップが完了しました
~/workspace/setup-craftcms.sh を削除後、/admin にアクセスしてインストールしてください

と表示されれば、セットアップは完了です。

IDE のメニューバーにある Run Project をクリックして Apache を起動したら、以前ご紹介した Craft CMS のインストール を参考にインストールしてください。

余談

2017年10月5日に Craft CMS Meetup Tokyo Vol.0 が開催されます。
ハンズオンに参加される方は、Cloud 9 でデモ環境を作ることもできますよ・・・ということで。

Craft CMS Meetup Tokyo Vol.0 Craft CMSへのお誘い - Japan Craft CMS Meetup (東京都) | Meetup
https://www.meetup.com/ja-JP/Japan-Craft-CMS-Meetup/events/242949106/