「KUSANAGI for さくらのクラウド」でconcrete5を簡単に利用できるスタートアップスクリプトの紹介
目次
はじめに
はじめまして、株式会社アーシタンの遠藤進悟と申します。
今回は、「KUSANAGI for さくらのクラウド」の環境にスタートアップスクリプトを利用してconcrete5のバージョン7をインストールする方法をご紹介します。
concrete5とは
concrete5は直感的にWebサイトを制作することができるオープンソースのCMSです。編集したいページを見ながらドラッグ&ドロップでページ内の要素を移動や追加することができたり、コンテンツの時限設定や権限・承認フローの設定を細かく行うことができたりと、企業がWebサイトを運用する上で便利な機能を標準で搭載しているのが特長です。
開発はPortlandLabsで行われており、日本ではコンクリートファイブジャパン株式会社がサポートを行っています。また、コンクリートファイブジャパン株式会社にはパートナー制度があり、concrete5での制作を行っている企業・個人が登録しています。このような窓口が整備されているのもconcrete5の特長の一つです。
「KUSANAGI for さくらのクラウド」とは
高速WordPress実行環境の「KUSANAGI」をさくらのクラウドで利用することができるアーカイブです。KUSANAGIを利用することで、「CentOS7・Nginx・PHP7・MariaDB」の環境を簡単に構築することができます。
WordPressの実行環境ということですが、設定ファイルを反映させれば他のソフトウェアも動かすことができるため、さくらのクラウドのスタートアップスクリプトを利用することで、concrete5も簡単に動かすことができます。
スクリプトのソース
以下のコードが、concrete5をKUSANAGIで利用することができるスクリプトです。
#!/bin/bash # @sacloud-once # @sacloud-desc concrete5をインストールします。 # @sacloud-desc サーバ作成後、ドメインの設定を行いアクセスしてください # @sacloud-desc http://サイトのドメイン/ # @sacloud-desc (このスクリプトは、KUSANAGIでのみ動作します) # @sacloud-password required shellarg maxlen=100 kusanagi_password "kusanagiのパスワード" # @sacloud-text required shellarg maxlen=100 site_domain "サイトのドメイン" # @sacloud-text required shellarg maxlen=100 site_name "サイトの名前" # @sacloud-password required shellarg maxlen=100 admin_password "adminのパスワード" # @sacloud-text required shellarg maxlen=100 admin_email "adminのメールアドレス" TERM=xterm KUSANAGI_PASSWORD=@@@kusanagi_password@@@ SITE_DOMAIN=@@@site_domain@@@ SITE_NAME=@@@site_name@@@ ADMIN_PASSWORD=@@@admin_password@@@ ADMIN_EMAIL=@@@admin_email@@@ #---------START OF firewall---------# systemctl start firewalld.service firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent systemctl restart firewalld.service #---------END OF firewall---------# #---------START OF KUSANAGI---------# yum -y --enablerepo=remi,remi-php56 update yum -y --enablerepo=remi install expect || exit 1 expect -c " spawn passwd kusanagi expect \"New password:\" send \"${KUSANAGI_PASSWORD}\n\" expect \"Retype new password:\" send \"${KUSANAGI_PASSWORD}\n\" expect \"passwd: all authentication tokens updated successfully.\" exit 0 " kusanagi nginx kusanagi php7 service mysql status >/dev/null 2>&1 || service mysql start for i in {1..5}; do sleep 1 service mysql status && break [ "$i" -lt 5 ] || exit 1 done chkconfig mysql on || exit 1 MYSQLROOTPASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2` /usr/bin/mysqladmin --defaults-file=/root/.my.cnf password "$MYSQLROOTPASSWORD" || exit 1 cat < /root/.my.cnf [mysqladmin] host = localhost user = root password = $MYSQLROOTPASSWORD [client] host = localhost user = root password = $MYSQLROOTPASSWORD EOT chmod 600 /root/.my.cnf kusanagi configure #---------END OF KUSANAGI---------# #---------START OF concrete5---------# USERNAME="c5_`mkpasswd -l 10 -C 0 -s 0`" PASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2` wget http://concrete5-japan.org/index.php/download_file/view/2080/45/ -O concrete5.zip unzip concrete5.zip mkdir /home/kusanagi/$USERNAME mv concrete5.7.5.7 /home/kusanagi/$USERNAME/web chmod 755 /home/kusanagi/$USERNAME/web/concrete/bin/concrete5 mysql --defaults-file=/root/.my.cnf <<-EOT CREATE DATABASE IF NOT EXISTS $USERNAME; GRANT ALL ON $USERNAME.* TO '$USERNAME'@'localhost' IDENTIFIED BY '$PASSWORD'; FLUSH PRIVILEGES; EOT cat < /etc/nginx/conf.d/$USERNAME.conf server { listen 80; server_name $SITE_DOMAIN; access_log /home/kusanagi/$USERNAME/access.log main; error_log /home/kusanagi/$USERNAME/error.log warn; root /home/kusanagi/$USERNAME/web; index index.php index.html; charset UTF-8; location / { if (-f \$request_filename) { expires 30d; break; } if (!-e \$request_filename) { rewrite ^(.+)$ /index.php/\$1 last; } error_page 404 @fallback; } location @fallback { return 301 /; } location ~ ^(.+\.php)(.*)$ { include fastcgi_params; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_connect_timeout 300; fastcgi_buffers 256 128k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; fastcgi_param PATH_INFO \$fastcgi_path_info; } } EOT systemctl restart nginx.service || exit 1 cd /home/kusanagi/$USERNAME/web/concrete/bin ./concrete5 c5:install --db-server=127.0.0.1 --db-username=$USERNAME --db-password=$PASSWORD --db-database=$USERNAME --admin-password=$ADMIN_PASSWORD --admin-email=$ADMIN_EMAIL --starting-point=elemental_full --site=$SITE_NAME chmod -R 777 /home/kusanagi/$USERNAME/web/packages chmod -R 777 /home/kusanagi/$USERNAME/web/application/config chmod -R 777 /home/kusanagi/$USERNAME/web/application/files chown -R kusanagi:kusanagi /home/kusanagi/$USERNAME || exit 1
スクリプトの簡単な解説
ファイアウォールの設定
ファイアウォールの設定に、httpとhttpsを追加しています。CentOS7ベースなので、firewalldコマンドでの設定になります。ファイアウォールではこの他にSSHが許可されている状態になっていますので、必要に応じて独自にポート番号の変更などを行うとSSHへの攻撃を受けにくくなります。
システムのアップデート
yumでシステムのアップデートを行っています。KUSANAGIのシステムはyumでアップデートできるように登録されているので、継続して利用する場合に発生する、定期的なアップデート対応が非常に簡単になっています。
アップデートにおけるWebサイトへの影響は利用しているシステムによっても違うので、公開されているWebサイトの環境でのアップデートの前にテストすることをおすすめします。
KUSANAGIの初期設定
KUSANAGIを利用する上での初期設定を行っています。このスクリプトでは、Nginx、PHP7を利用することを前提に設定を変更しています。PHP7で動かないプログラムがあった場合などはPHP5.6に変更することも可能です。
設定の変更はすべてコマンドででき、稼働中でもサーバを止めることなく切り替えが可能です。
PHP7を利用する場合のコマンド: kusanagi php7 PHP5.6を利用する場合のコマンド: kusanagi php-fpm
concrete5のインストール
concrete5のバージョン7.5.7をダウンロードし、KUSANAGIのhomeフォルダへ展開、データベース・Nginxの設定を行い、concrete5のコマンドラインツールでインストールを行っています。
KUSANAGIで動作するようにパーミッションを変更していますが、これも必要に応じて変更を行うといいかもしれません。
使い方
1,スタートアップスクリプトを登録する
さくらのクラウドのコントロールパネルにアクセスすると、右上に画像のように『設定』という項目がありますので、まずは設定へ移動。
次にこのような画面になるので、左側に表示されている『スクリプト』という項目に移動
右上の『追加』を押すと、スクリプト追加画面が表示されます。名前は自分でわかりやすいもの、内容部分にスクリプトのソースをコピーして入れてください。内容を入れたら『作成』を押せば作成完了です。
2,スタートアップスクリプトを利用して、KUSANAGIアーカイブのサーバを作成する
スクリプトの作成後、サーバの作成を行います。サーバの作成画面に遷移し画面右上の『シンプルモード』のチェックを外します。
作成画面のディスク項目のアーカイブ選択で、KUSANAGIを選択します。
ディスクの修正項目のスタートアップスクリプト選択部分で、先ほど作成したスクリプトを選択する。選択すると画像のように入力フォームが表示されるので、入力を行いサーバの作成を行ってください。
■設定項目
kusanagiのパスワード
ユーザkusanagiのパスワードです。SSHでアクセスする際に利用します。
サイトのドメイン
作成したいWebサイトのドメインです。(例)example.com
サイトの名前
作成したいWebサイトの名前です。あとからconcrete5の管理画面で変更ができます。
adminのパスワード
concrete5のデフォルトの管理ユーザ(admin)のパスワードです。インストール直後にログインするために利用します。これもあとから変更できます。
adminのメールアドレス
concrete5のデフォルト管理ユーザ(admin)のメールアドレスです。これもあとから変更できます。
3,ドメインを作成したサーバのIPに設定する
サーバを作成するとIPアドレスが発行されます。このIPアドレスを利用したいドメインに設定を行ってください。
※ドメインの設定は、ドメインを管理しているサービスでの作業になります。
4,ドメインの反映後、アクセスする
ドメインを設定したあと、反映するまで待ちます。
反映は数分で終わる場合もありますが、サービス側の設定によっては数時間かかる場合もあります。
http://設定したドメイン
にアクセスし、concrete5のデフォルトテーマが表示されればサイト作成完了です。
5,設定したパスワードでログインする
ログイン画面のURL:http://設定したドメイン/login ユーザ名:admin パスワード:先ほど設定したadminのパスワード
利用する上での注意事項
このスタートアップスクリプトを利用すれば、簡単にconcrete5をインストールし利用することができます。しかし、本格的に企業のWebサイトとして運用するには、セキュリティの設定や定期的なアップデートなどを適宜行う必要がありますので、試験的に利用したい場合やここから自分で設定変更が可能な場合などの際に利用していただければと思います。
また、このスクリプトでインストールできるconcrete5のバージョンは7.5.7になります。concrete5は機能追加やバグ対応に伴うアップデートが随時行われています。最新版を利用したい場合は、コード内のconcrete5をダウンロードしている部分のリンク先を最新版に変更してください。
最新版のダウンロード元がわからない場合や、コードの書き換えがわからない場合は下記リンク先のgithub上に最新版に対応したスクリプトをアップしていますので、参考にしてください。
「KUSANAGI for さくらのクラウド」にconcrete5を入れるスタートアップスクリプト