シラサギをさくらVPSへインストールしてつまづいたメモ

[PR] 記事内のアフィリエイトリンクから収入を得る場合があります
[PR] 記事内のアフィリエイトリンクから収入を得る場合があります

LISA78_MBAsawaru20141018102912
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の組み合わせに限り」気をつけるコトかもしれません(し、そうでないモノもあるかも)。

  1. CentOS7で実行するのを想定されているみたい(少なくともCentOS6ではダメそう)
  2. curlコマンドでひっぱってくるこの シェルスクリプト を見るとなんとなくわかりますが、途中途中でsudoコマンドが実行されるので user-which-executes-shirasagi-server(ex. shirasagi)のsudo権限を設定しておかねばならない
  3. そして、それ以前に user-which-executes-shirasagi-server(ex. shirasagi)というユーザーを作っておく必要がある(当たり前ですが…)
  4. シェルスクリプト実行後、シラサギの(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」がコメントアウトされているのはなにか理由があるのでしょうね…

(これらを踏まえた)シラサギのインストール手順

前置きが長くなってしまいましたが、結果、シラサギのインストール手順は下記の通りになりました。
▼【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】下準備

  1. さくらVPSにCentOS7をインストール(→ 手順
  2. CentOS7にユーザーをつくる
    # useradd shirasagi
    # passwd shirasagi
    >(パスワードを設定)
    # usermod -G wheel shirasagi

    ※sudo権限があるwheelにusermodでshirasagiを足します

▼【2】シラサギ(と関連するプログラム)のインストール

  1. インストール用シェルスクリプト実行
    # su - shirasagi
    $ curl https://raw.githubusercontent.com/shirasagi/shirasagi/master/bin/install.sh | bash -s your_http_hostname

    ※注意: shirasagi/README.md に記載の実行例と、上記の例は異なります。そして、your_http_hostname のところは実際に公開するサイトのホスト名に置き換えます。

  2. スクリプト実行中、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】の設定が正しければ、シラサギの管理画面サイトにはたどり着けるハズです。

  1. http://your_http_hostname:3000/.mypage
    http://your_http_hostname/.mypage へアクセス
  2. シラサギの管理画面が出たら
    [ ユーザーID: admin , パスワード: pass ]
    でログイン
  3. 「サイト設定」→「編集する」→「ドメイン」の項目を 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

を忘れずに。

さいごに

LISA78_kuyasiiMBA20141018102736
「OSをクリーンインストール」→「シラサギのインストール用シェルスクリプトの実行」を(ものすごくたくさん)繰り返して検証をした(つもりな)ので、おそらく漏れはないと思いますが、もし、過不足があればTwitter( @noda )とかFacebookページとかでレポート頂けたら嬉しいです…

タイトルとURLをコピーしました