「最近流行りの」と言うにはもう若干遅くなっている感もあるNginxの練習をしようと思い、とりあえずサーバーを一から立ててみた。直接には関係ないものを色々と入れるのは面倒なので、以前作ったScala MDWikiをNginx環境で動作させる、というゴール設定にした。

0.今回の環境

OSCentOS 7
フロントサーバーNginx 1.10.1
アプリケーションサーバーPlay framework 2.2.6
データベースh2db (Play framework)

自分用のHelperとか立ててるサーバーはCentOS 6なのだが、移行のための学習も兼ねているのでOSはCentOS 7に。データベースはPlay frameworkビルトインのh2dbを利用。h2dbはこういうとき便利。

1.CentOS 7を導入

CentOS 7を最小インストールした直後のスナップショットから開始。

まず、CentOS 7から導入されたfirewalldの設定を変更し、HTTPポート(80)を解放してしまう。

firewall-cmd --add-service=http --zone=public --permanent
systemctl restart firewalld

2.Gitを導入する

多分以下のスクリプトで最新版のGit(2.9.0)が導入される。

latest=2.9.0
mkdir work
cd work
yum -y remove git
yum install -y \
     gcc \
     autoconf \
     zlib-devel \
     curl-devel \
     perl-ExtUtils-MakeMaker
curl -L https://github.com/git/git/archive/v${latest}.tar.gz -o git.tar.gz
tar zxvf git.tar.gz
cd git-${latest}
make configure

./configure --prefix=/usr/local
make all
make install

cd ../
rm -rf git-${latest}
git --version

3.Nginxを導入する

まず、公式のリポジトリをyumに追加し、Nginx本体を導入する。

echo '[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1' > /etc/yum.repos.d/nginx.repo
yum install -y nginx

次に、以下の項目を設定する。

/etc/nginx/nginx.conf

変更前変更後
include /etc/nginx/conf.d/*.conf
include /etc/nginx/conf.d/mdwiki.conf

/etc/nginx/conf.d/mdwiki.conf

server {

    listen 80;
    server_name _;
    location / {
        proxy_pass http://127.0.0.1:9000;
    }
}

4.Play frameworkを導入する

Scala MDWikiはPlay 2.2を利用しているため、これを導入する。

# 前提となるJava8環境の導入
yum install -y \
    java \
    java-1.8.0-openjdk-devel
# Play本体の導入
curl -L https://downloads.typesafe.com/play/2.2.6/play-2.2.6.zip -o play.zip
yum install -y unzip
unzip play.zip
mkdir -p /var/lib/play
mv play-2.2.6 /var/lib/play/2.2.6
ln -s /var/lib/play/2.2.6/play /usr/local/bin/play

5.Scala MDWikiを導入する

githubからクローンし、コンパイルする

mkdir -p /var/lib/services
cd /var/lib/services
git clone https://github.com/nil2013/scala_mdwiki.git
play clean stage

6.システムを起動する

NginxおよびScala MDWiki本体を起こす

target/universal/stage/bin/scala_mdwiki -DapplyEvolutions.default=true &
systemctl start nginx
こんな感じで、一応httpアクセスをすると動作していることが確認できる。