SHIRASAGI(シラサギ)は「Ruby・Ruby on Rails・MongoDBで動作する中・大規模サイト向け(オープンソースの)CMS」です。インストールに挑戦したところ、いろいろつまずいたのでメモを残すことにしました。
さくらVPSを利用し、最初は「標準OSであるCentOS6にシラサギを(手動)インストール」をしていたのですが、2016年6月10日のver1.2.0が公開されたきっかけで、シラサギを「(自動)インストール用のシェルスクリプト」を使ってインストールしてみました。
※このつまづきは環境によっては再現されないこともあるでしょう。予めご承知おきを。
(【フリー写真素材ぱくたそ】モデル: Lisa photo: すしぱく @susipaku )
追記(2016/06/28)
その後の調査の結果、下記の表記に一部(認識の)誤りがありましたので修正しています。誤りの部分は打ち消し線を入れてあります。
シラサギはインストール用のシェルスクリプトがあります。が…
▼shirasagi/README.md at master · shirasagi/shirasagi · GitHub
の「Installation (Auto)」の項にシラサギと、それに付随して必要となるものたちと一緒にパッケージを自動的にインストールをしてくれるシェルスクリプトが公開されています。
そして、実行例は shirasagi/README.md に記載の通り。
$ su - user-which-executes-shirasagi-server $ curl https://raw.githubusercontent.com/shirasagi/shirasagi/master/bin/install.sh | SS_HOSTNAME=example.jp bash -s
ですが、この二行しか書いていないので「これだけでいいんだな、わーい」と思いながらこのスクリプトを実行してはいけません。
インストール用シェルスクリプトを利用するときの注意
(動く前提条件の)予備知識ないまま、何も深く考えずとりあえず実行してみたところ、この シェルスクリプト を利用する場合は下記のことに気をつける必要がありそうです(初級の人向けに書き残しておきます)。
※難しいことが得意じゃない方はこの章は「読み飛ばしがオススメ」です。
ただし「さくらVPS+(カスタムインストールの)CentOS7の組み合わせに限り」気をつけるコトかもしれません(し、そうでないモノもあるかも)。
- CentOS7で実行するのを想定されているみたい(少なくともCentOS6ではダメそう)
- curlコマンドでひっぱってくるこの シェルスクリプト を見るとなんとなくわかりますが、途中途中でsudoコマンドが実行されるので user-which-executes-shirasagi-server(ex. shirasagi)のsudo権限を設定しておかねばならない
- そして、それ以前に user-which-executes-shirasagi-server(ex. shirasagi)というユーザーを作っておく必要がある(当たり前ですが…)
- シェルスクリプト実行後、シラサギの(unicorn上で動く)管理画面サイトと(nginx上で動く)公開サイトへはこのままだと辿りつけない
- 理由その1
シェルスクリプト実行時に SS_HOSTNAME でホスト名をオプション値として渡そうとしてますが、プログラムへ値が渡りません。見てみると、冒頭にはSS_HOSTNAME=${1:-"example.jp"} SS_USER=${2:-"$USER"} SS_DIR=/var/www/shirasagi
となっていて、値が渡ってこないときは「example.jp」がセットされます。
- 理由その2(※nginx上で動くSHIRASAGIの公開サイトへ辿りつけない理由)
SS_HOSTNAME が影響するのは /etc/nginx/conf.d/virtual.conf と(SHIRASAGI管理画面上の)サイト設定→編集する→「ドメイン」の項目に example.jp が埋め込まれるため。 理由その3(※unicorn上で動くシラサギの管理画面サイトへ辿りつけない理由)
さくらVPSのカスタムインストールされたCentOS7はSELinuxとfirewalldが有効になっています。よって、初期設定ではPort:3000 が通りません。
※このシェルスクリプト上で「sudo firewall-cmd –add-port=3000/tcp –permanent」がコメントアウトされているのはなにか理由があるのでしょうね…
- 理由その1
(これらを踏まえた)シラサギのインストール手順
前置きが長くなってしまいましたが、結果、シラサギのインストール手順は下記の通りになりました。
▼【0】まず前提(コレだいじ)
- さくらVPS
- OSはカスタムインストールの「CentOS7」
- シラサギの実行ユーザーは「shirasagi」
- シラサギのインストール用シェルスクリプトを利用してインストール
- 設定したいホスト名(http:// のあとに始まって / で終わるまでの部分)は「your_http_hostname」
- シラサギの公開サイトのURL「 http://your_http_hostname/ 」
- シラサギの管理画面サイトのURL
「 http://your_http_hostname:3000/.mypage 」→ 「 http://your_http_hostname/.mypage 」
▼【1】下準備
- さくらVPSにCentOS7をインストール(→ 手順)
- CentOS7にユーザーをつくる
# useradd shirasagi # passwd shirasagi >(パスワードを設定) # usermod -G wheel shirasagi
※sudo権限があるwheelにusermodでshirasagiを足します
▼【2】シラサギ(と関連するプログラム)のインストール
- インストール用シェルスクリプト実行
# su - shirasagi $ curl https://raw.githubusercontent.com/shirasagi/shirasagi/master/bin/install.sh | bash -s your_http_hostname
※注意: shirasagi/README.md に記載の実行例と、上記の例は異なります。そして、your_http_hostname のところは実際に公開するサイトのホスト名に置き換えます。
- スクリプト実行中、sudo権限設定によっては
[sudo] password for shirasagi:
のように聞かれた場合はパスワードを入力して、先の処理へ進みます(3〜4回表示されることがあり)。(サーバーの処理能力によりますが)すべてのシェルスクリプトの処理が終わるまで、おおむね40分ぐらいかかります。
▼【3】ブラウザでシラサギの管理サイトへたどり着ける?
シェルスクリプト実行完了後、ブラウザでシラサギの管理画面サイトへ辿りつけない場合、おそらくPort 3000が閉じられています。その場合は【4】へ。
▼【4】SELinuxとFirewalldの設定
参考:
Nginx のインストール – SHIRASAGI 開発マニュアル「セキュリティ関連の設定」の項目
(1)SELinux
管理用コマンドの導入
$ su - > (rootパスワード入力)※rootになっていなければ # yum -y install policycoreutils-python
selinux制限許可(SHIRASAI関連ファイル, unicorn)
# restorecon -RF /var/www/shirasagi/public # restorecon -RF /var/www/shirasagi/private # semanage port -a -t http_port_t -p tcp 3000
(2)Firewalld
# firewall-cmd --add-port=3000/tcp --permanent# firewall-cmd --reload
▼【5】これで動くはず!(たぶん)
ブラウザで
http://your_http_hostname:3000/.mypage
http://your_http_hostname/.mypage →シラサギの管理画面サイト- http://your_http_hostname/ →シラサギの公開用サイト
がそれぞれ表示されれば(とりあえずの)インストールは終わり。
動かなかったら次の章へ。
shirasagi/README.md の手順と同じで実行したとき
shirasagi/README.md に記載の通りに
$ su - user-which-executes-shirasagi-server $ curl https://raw.githubusercontent.com/shirasagi/shirasagi/master/bin/install.sh | SS_HOSTNAME=example.jp bash -s
インストール用シェルプログラムを実行したとき、チェックするのは
- /etc/nginx/conf.d/virtual.conf
- (SHIRASAGI管理画面上の)サイト設定→編集する→「ドメイン」の項目
のふたつです。
▼【6】nginx(/etc/nginx/conf.d/virtual.conf)の設定変更
# sed -i "s/example.jp/your_http_hostname/" /etc/nginx/conf.d/virtual.conf # systemctl restart nginx
※ your_http_hostname の部分を環境に合わせて書き換えてから実行
▼【7】(シラサギ管理画面上の)サイト設定→編集する→「ドメイン」の項目の変更
少なくとも【4】の設定が正しければ、シラサギの管理画面サイトにはたどり着けるハズです。
http://your_http_hostname:3000/.mypage
http://your_http_hostname/.mypage へアクセス- シラサギの管理画面が出たら
[ ユーザーID: admin , パスワード: pass ]
でログイン - 「サイト設定」→「編集する」→「ドメイン」の項目を your_http_hostname へ変更→「保存」
とすれば、シラサギ管理画面上の「サイト確認」ボタンをクリックすると、期待する(シラサギの公開サイトである)URLへジャンプできるようになるはずです。
管理画面にhtpasswdをかける(2016/06/28追記)
参考:
Nginx のインストール – SHIRASAGI 開発マニュアル 「管理画面にBasic認証を設定する」の項目
▼パスワードファイルを作成する。
# yum -y install httpd-tools # cd /etc/nginx # htpasswd -cm .htpasswd username > パスワードを入力する
▼設定を追加する
# vi /etc/nginx/conf.d/virtual.conf
server { ... location /. { try_files $uri @app; auth_basic "Secret"; auth_basic_user_file /etc/nginx/.htpasswd; } }
最後に
# systemctl restart nginx
を忘れずに。
さいごに
「OSをクリーンインストール」→「シラサギのインストール用シェルスクリプトの実行」を(ものすごくたくさん)繰り返して検証をした(つもりな)ので、おそらく漏れはないと思いますが、もし、過不足があればTwitter( @noda )とかFacebookページとかでレポート頂けたら嬉しいです…