公開日 2021年07月08日
はじめに
Joruri CMS 2020のインストール手順のサンプルを掲載します。
この手順書はインストール方法を把握していただくためのサンプルです。
実際のインストールではこれ以外にセキュリティ関連の設定などを行います。
またこの手順書でのインストールは、1台のサーバーにWebサーバー、CMSサーバー、DBサーバーをインストールするオールインワンの構成です。
自治体公式サイトにご利用の場合は、公開画面に大きな負荷がかかった場合も、管理画面の操作に影響しないように、公開用のWebサーバーとCMSサーバーを分離する構成を推奨します。
複数のサーバーでCMSのシステムを構成する場合、各サーバー間のデータ転送の設定を行います。
これらの設定手順は、当社の「サーバー構築サポート」を契約いただいたお客様のみに提供いたします。
WebサーバーのApacheやNginxのインストール・設定手順が公開されているように、インストール手順を公開することが直ちにセキュリティ上の問題になるとは考えていません。
しかし一部ユーザー様においてはインストール手順が公開されていることが問題と考える方がいらっしゃいますので、不特定多数に詳細な手順を公開することを差し控えることとします。
1.想定環境
システム
- OS: Oracle Linux 8.3
- Webサーバー: nginx 1.16
- Appサーバー: unicorn 5.5
- Database: PostgreSQL 12
- Ruby: 2.7
- Rails: 6.0
前提条件
1台のサーバーマシンにJoruriをインストールします。 Oracle Linuxはインストール済みとします。
- サイト名: Joruri
- サイトURL: joruri.example.com
2.作業ユーザーの変更
rootユーザーに変更します。
$ su -
インストールの作業ログを取得する場合は下記を実行します。
# script /root/joruri_install.log
3.SELinuxの変更
SELinuxを変更します。
# setenforce 0
# vi /etc/sysconfig/selinux
---
SELINUX=permissive # 変更
---
この手順書ではpermissiveのままとしますが、ユーザー様の環境に合わせて適切な設定を選択してください。
4.事前準備
ロケールを確認します。
# localectl status
ロケールを日本語に設定します。
# localectl set-locale LANG=ja_JP.UTF-8
PowerToolsを有効にします。
# dnf config-manager --set-enabled ol8_codeready_builder
作業に必要なパッケージをインストールします。
# dnf -y install git oracle-epel-release-el8
5.Rubyのインストール
必要なパッケージをインストールします。
# dnf -y install gcc-c++ libffi-devel libyaml-devel make openssl-devel readline-devel zlib-devel bzip2
rbenvをインストールします。
# git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
# git clone git://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build
# echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
# echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
# source /etc/profile.d/rbenv.sh
rubyをインストールします。
# rbenv install 2.7.1
# rbenv global 2.7.1
# rbenv rehash
# ruby -v
6.Node.jsのインストール
nodenvをインストールします。
# git clone https://github.com/nodenv/nodenv.git /usr/local/nodenv
# git clone https://github.com/nodenv/node-build.git /usr/local/nodenv/plugins/node-build
# echo 'export NODENV_ROOT="/usr/local/nodenv"' >> /etc/profile.d/nodenv.sh
# echo 'export PATH="${NODENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/nodenv.sh
# echo 'eval "$(nodenv init -)"' >> /etc/profile.d/nodenv.sh
# source /etc/profile.d/nodenv.sh
nodejsをインストールします。
# nodenv install 10.15.3
# nodenv global 10.15.3
# nodenv rehash
# node -v
yarnをインストールします。
# npm install -g yarn
# nodenv rehash
# yarn -v
7.nginxのインストール
外部からhttpでアクセス可能にします。 ※ファイアーウォール設定は環境に応じて適切に設定してください。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
インストールします。
# dnf -y install @nginx:1.16
# nginx -v
8.PostgreSQLのインストール
デフォルトのpostgresqlを無効化します。
# dnf module disable postgresql
yumリポジトリを追加します。
# dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
インストールします。
# dnf -y install postgresql12-server postgresql12-contrib postgresql12-devel
# psql -V
データベースを初期化します。
# /usr/pgsql-12/bin/postgresql-12-setup initdb
ユーザー認証方法を変更します。
# vi /var/lib/pgsql/12/data/pg_hba.conf
---
host all all 127.0.0.1/32 md5
---
postgresqlを起動します。
# systemctl start postgresql-12
接続を確認します。
# su - postgres -c "psql -c 'select now()'"
9.Postfixのインストール
インストールします。
# dnf -y install postfix
# postconf mail_version
10.ふりがな・読み上げツールのインストール
必要なパッケージをインストールします。
# dnf -y install sox
# sox --version
hts_engine APIをインストールします。
# cd /usr/local/src
# curl -fsSLO http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.09.tar.gz
# tar zxf hts_engine_API-1.09.tar.gz && cd hts_engine_API-1.09 && ./configure CFLAGS='-O3 -march=native -funroll-loops' && make && make install
Open JTalkをインストールします。
# cd /usr/local/src
# curl -fsSLO http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.08.tar.gz
# tar zxf open_jtalk-1.08.tar.gz && cd open_jtalk-1.08
# sed -i 's/#define MAXBUFLEN 1024/#define MAXBUFLEN 10240/' bin/open_jtalk.c
# ./configure --with-charset=UTF-8 CFLAGS='-O3 -march=native -funroll-loops' CXXFLAGS='-O3 -march=native -funroll-loops' && make && make install
# open_jtalk -h
Dictionaryをインストールします。
# cd /usr/local/src
# curl -fsSLO http://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.08.tar.gz
# tar zxf open_jtalk_dic_utf_8-1.08.tar.gz
# mkdir /usr/local/share/open_jtalk && mv open_jtalk_dic_utf_8-1.08 /usr/local/share/open_jtalk/dic
LAMEをインストールします。
# cd /usr/local/src
# curl -fsSLO http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
# tar zxf lame-3.99.5.tar.gz && cd lame-3.99.5 && ./configure && make && make install
# lame --version
MeCabをインストールします。
# cd /usr/local/src
# curl -fsSL 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE' -o mecab-0.996.tar.gz
# tar zxf mecab-0.996.tar.gz && cd mecab-0.996 && ./configure --enable-utf8-only && make && make install
# mecab -v
MeCab-IPAdicをインストールします。
# cd /usr/local/src
# curl -fsSL 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM' -o mecab-ipadic-2.7.0-20070801.tar.gz
# tar zxf mecab-ipadic-2.7.0-20070801.tar.gz && cd mecab-ipadic-2.7.0-20070801 && ./configure --with-charset=utf8 && make && make install
MeCab-Rubyをインストールします。
# cd /usr/local/src
# curl -fsSL 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7VUNlczBWVDZJbE0' -o mecab-ruby-0.996.tar.gz
# tar zxf mecab-ruby-0.996.tar.gz && cd mecab-ruby-0.996 && ruby extconf.rb && make && make install
libmecabのパスを設定します。
# echo '/usr/local/lib' >> /etc/ld.so.conf.d/usrlocal.conf
# ldconfig
# ldconfig -p | grep "/usr/local/lib"
11.Joruriのインストール
専用ユーザーを作成します。
# useradd -m joruri
DB接続用のユーザーを作成します。 ※パスワードは任意の文字列を設定してください。(ここでは「joruripass」とします。)
# su - postgres -c "psql -c \"CREATE USER joruri WITH CREATEDB ENCRYPTED PASSWORD 'joruripass';\""
必要なパッケージをインストールします。
# dnf -y install libxml2-devel libxslt-devel openldap-devel patch zip exiv2
# dnf -y install ImageMagick-devel
# convert -version
Joruriを設置します。
[パスワード認証を使用する場合]
# git clone https://github.com/joruri/joruri-cms-2020.git /var/www/joruri
[デプロイキーを使用する場合]
# git clone git@github.com:joruri/joruri-cms-2020.git /var/www/joruri
[zipファイルを使用する場合]
# unzip joruri-cms-2020.zip
# mkdir -p /var/www/ && mv joruri-cms-2020 /var/www/joruri
# chown -R joruri:joruri /var/www/joruri
joruriユーザーに変更します。
# su - joruri
$ cd /var/www/joruri
ライブラリをインストールします。
$ bundle config build.pg --with-pg-config=/usr/pgsql-12/bin/pg_config
$ bundle install --path vendor/bundle --without development test
$ bundle list
12.Joruriの設定
サンプルの設定ファイルをコピーします。
$ cp -p /var/www/joruri/config/original/*.yml /var/www/joruri/config/
設定ファイルを変更します。
$ vi /var/www/joruri/config/core.yml
---
production:
title: Joruri # サイト名を設定
uri: http://joruri.example.com/ # サイトURLを設定
---
シークレットキーを設定します。
$ bundle exec rake secret RAILS_ENV=production
(出力されたシークレットキーをコピーします)
$ vi /var/www/joruri/config/secrets.yml
---
production:
secret_key_base: (コピーしたシークレットキーを貼り付けます)
---
データベースを作成します。
$ bundle exec rake db:create db:schema:load RAILS_ENV=production
初期データを登録します。
[空サイトを登録する場合]
$ bundle exec rake db:seed RAILS_ENV=production SITE_NAME="Joruri" SITE_URL="http://joruri.example.com/"
[サンプルサイトを登録する場合]
$ bundle exec rake db:seed:demo RAILS_ENV=production ID=1 SITE_NAME="Joruri" SITE_URL="http://joruri.example.com/"
初期データの登録を確認します。
$ psql joruri_production -c "select * from cms_sites"
nginxの設定ファイルを生成します。
$ bundle exec rake joruri:configure RAILS_ENV=production
cronを登録します。
$ bundle exec whenever --update-crontab
$ crontab -l
13.サーバーの設定
rootユーザーに変更します。
$ su - root
Joruriのnginx設定ファイルへリンクします。
# ln -s /var/www/joruri/config/nginx/nginx.conf /etc/nginx/conf.d/joruri.conf
ログローテートを設定します。
# cp /var/www/joruri/config/samples/logrotate /etc/logrotate.d/joruri_logrotate
サーバー再起動用のcronを登録します。
# cp /var/www/joruri/config/samples/reload_servers.sh /root/. && chmod 755 /root/reload_servers.sh
# ROOT_CRON_TXT='/var/www/joruri/config/samples/root_cron.txt'
# crontab -l > $ROOT_CRON_TXT
# grep -s reload_servers.sh $ROOT_CRON_TXT || echo '0,30 * * * * /root/reload_servers.sh' >> $ROOT_CRON_TXT
# crontab $ROOT_CRON_TXT
14.サーバーの起動
postfixを起動します。
# systemctl start postfix && systemctl enable postfix
# systemctl status postfix
postgresqlを起動します。
# systemctl start postgresql-12 && systemctl enable postgresql-12
# systemctl status postgresql-12
nginxを起動します。
# systemctl start nginx && systemctl enable nginx
# systemctl status nginx
unicornを起動します。
# cp /var/www/joruri/config/samples/unicorn.service /usr/lib/systemd/system/joruri_unicorn.service
# systemctl start joruri_unicorn && systemctl enable joruri_unicorn
# systemctl status joruri_unicorn
delayed_jobを起動します。
# cp /var/www/joruri/config/samples/delayed_job.service /usr/lib/systemd/system/joruri_delayed_job.service
# systemctl start joruri_delayed_job && systemctl enable joruri_delayed_job
# systemctl status joruri_delayed_job
15.動作確認
インストールが完了しました。
-
公開画面: http://joruri.example.com/
-
管理画面: http://joruri.example.com/_system
-
管理者(システム管理者)
- ユーザーID: joruri
- パスワード: joruri