(115) SAKURAレンタルサーバー上の CentOS7に Redmine4.0を入れる。

投稿者: | 2019年7月29日

1. やりたいこと

1) SAKURA VPSCentOS7 を入れる。
2) その CentOS7 に Redmine 4.0.4 を入れる。

2. やってみた!

2.1 SAKURAレンタルサーバーに CentOS7を入れる。

SAKURA VPSの管理画面にて簡単にインストールできる。
特筆することは無いので、手順だけを記録しておく。

1) 管理画面にログインする。
2) 「標準OSインストール」から「CentOS x86_64」を選択する。
3) インストールを実行する。

2.2 CentOS7に Redmine 4.0.4を入れる。

今回使用した各プログラムのバージョン
・Redmine 4.0.4
・Ruby 2.6.3
・PostgreSQL 9.2.24
・Apache 2.4.6

基本的には公式サイトの情報に従う。
http://blog.redmine.jp/articles/3_4/install/centos/

(1) Redmine安定板をダウンロードする。

ここでは、最新の安定版 Redmine 4.0.4 をダウンロードする。(2019年7月29日時点)

http://www.redmine.org/projects/redmine/wiki/Download

SAKURA VPS上の CentOS上でダウンロードを実行する。

$ cd ~
$ mkdir ./work
$ cd ./work
$ wget http://www.redmine.org/releases/redmine-4.0.4.tar.gz

解凍する。

$ tar -zcvf redmine-4.0.4.tar.gz

参考情報:
z : gz形式
c (create) : 新しいファイルを作成
x (extract) : 圧縮されたファイルを解凍
v (verbose) : 処理内容を表示
f (filename) : ファイル名を指定

(2) firewallで HTTPプロトコルを許可する。

現在 HTTPが通過できているかを確認する。

$ su -  # rootになる。

# firewall-cmd --zone=public --list-services
http pop3s vnc-server smtp imaps https

もし無ければ許可設定する。

# firewall-cmd --zone=public --add-service=http --permanent
success
# firewall-cmd --reload
success

(3) 「Development Tools」をインストールする。

まずは yumの grouplistを見てみる。

# yum grouplist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
:
Available Groups:
   Cinnamon
   Compatibility Libraries
   Console Internet Tools
   Development Tools ←コレ
   Educational Software
   Electronic Lab
:
Done

Development Tools をインストールする。

# yum -y groupinstall "Development Tools"

(4) Ruby, Passengerのビルドに必要な物をインストールする。

Rubyと Passengerのビルドに必要なヘッダファイルなどのインストールする。

# yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel

(5) PostgreSQLをインストールする。

データベースには PostgreSQL を使用する。

# yum -y install postgresql-server postgresql-devel

(6) ImageMagickをインストールする。

画像処理ライブラリには ImageMagick を使用する。

# yum -y install ImageMagick ImageMagick-devel

(7) 日本語フォントをインストールする。

IPAが無料公開しているフォントを使用する。

# yum -y install ipa-pgothic-fonts

(8) Rubyをビルドする。

Rubyの最新安定板 2.6.3 をダウンロードする。(2019年7月29日時点)

# exit
$ cd ~/work
$ curl -O https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz

Rubyをビルドする。

$ tar -xvf ruby-2.6.3.tar.gz
$ cd ./ruby-2.6.3
$ ./configure --disable-install-doc  # ←インストールに必要な情報を作成
$ make
$ sudo make install  # ←sudo出来ないならば rootになる。

Rubyのバージョンを確認する。

$ cd
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

OKだ!

(9) bundlerをインストールする。

Ruby用のパッケージ管理ツールであるbundlerをインストールする。
redmineが使用する gemパッケージのインストールに使用する。

$ su -  # rootになる。
# gem install bundler

(10) PostgreSQLの設定をする。

データベースクラスタを新規作成する。

# postgresql-setup initdb

Redmineから PosygreSQLに接続するための設定を追加する。

# vi /var/lib/pgsql/data/pg_hba.conf

以下を編集する。
ここでは名前を redmine_aa としている。(後で複数の redmineを同居させるため。)

 67 # Put your actual configuration here
 68 # ----------------------------------
 69 #
 70 # If you want to allow non-local connections, you need to add more
 71 # "host" records.  In that case you will also need to make PostgreSQL
 72 # listen on a non-local interface via the listen_addresses
 73 # configuration parameter, or via the -i or -h command line switches.
 74 host    redmine_aa      redmine_aa      127.0.0.1/32            md5
 75 host    redmine_aa      redmine_aa      ::1/128                 md5

マシン起動時に PoastgreSQLを自動起動するように設定しておく。

# systemctl start postgresql.service
# systemctl enable postgresql.service

状態を確認しておく。

# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-07-29 12:03:08 JST; 14s ago
 Main PID: 2560 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─2560 /usr/bin/postgres -D /var/lib/pgsql/data -p 5431
           ├─2561 postgres: logger process
           ├─2563 postgres: checkpointer process
           ├─2564 postgres: writer process
           ├─2565 postgres: wal writer process
           ├─2566 postgres: autovacuum launcher process
           └─2567 postgres: stats collector process

データベースに Redmine用のユーザーを作成する。

# cd /var/lib/pgsql
# sudo -u postgres createuser -P redmine_aa  # 暫定パスワード qwertymnbvcxz とする。

※もし postgres ユーザーのパスワードを忘れたら?

Redmine用のデータベースを作成する。

# sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine_aa -T template0 redmine_aa

(11) Redmineをインストールする。

上記(1)でダウンロード&解凍した Redmine最新安定板を /var/lib 配下にコピーする。(移動でもよい)

# cp -r /home/hoge/work/redmine-4.0.4 /var/lib/redmine_aa
# cd /var/lib/redmine_aa

データベースへの接続設定ファイルを編集する。

# cp config/database.yml.example config/database.yml
# vi config/database.yml

開いたファイルを以下のように変更する。

# PostgreSQL configuration example
production:
  adapter: postgresql
  database: redmine_aa  # 上で作成したデータベース名を設定する。
  host: localhost
  username: redmine_aa  # 上で作成したユーザー名を設定する。
  password: "qwertymnbvcxz"  # 上で設定したパスワードを設定する。

コンフィグ設定ファイルを編集する。

# cp config/configuration.yml.example config/configuration.yml
# vi config/configuration.yml

開いたファイルを以下のように変更する。

production:
  email_delivery:  # ←メール設定
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "xxxxxxxxx.xxx"  # ←自環境に合わせて Redmineで送受信するメールのドメイン名を設定する。

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf  # ←フォント設定

gemパッケージをインストールする。
インストール中に「rootでインストールするな」と警告が表示されるが、後で chownで apacheにユーザー変更するので無視する。

# cd /var/lib/redmine_aa
# bundle install --without development test --path vendor/bundle

(12) Redmineの初期設定をする。

セッション改ざん防止用秘密鍵を作成する。

# bundle exec rake generate_secret_token

Redmineデータベースにテーブルを作成する。

# RAILS_ENV=production bundle exec rake db:migrate

データベースにデフォルトデータを登録する。
※必須ではない。トラッカー、ステータスなど、後でゼロから自分で登録してもよい。

# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

(13) Passengerをインストールする。

Apache上で Redmineなどの Railsアプリケーションを実行するために使われる Phusion Passengerをインストールする。

# gem install passenger

Apache用のモジュールをインストールする。

# passenger-install-apache2-module --auto --languages ruby

Apache用設定内容を表示、後で使うのでコピーしておく。

# passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so

  PassengerRoot /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/bin/ruby

(14) Apacheの設定をする。

/etc/httpd/conf.d/redmine.conf を編集する。

# vi /etc/httpd/conf.d/redmine.conf

以下を記述する。


  AllowOverride All
  Require all granted


# 以下は上記(13)からコピーする。
LoadModule passenger_module /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so

  PassengerRoot /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/bin/ruby


RackBaseURI /redmine_aa

マシン起動時に Apacheを自動起動させる。

systemctl start httpd.service
systemctl enable httpd.service

Redmineのファイル群のオーナーをユーザー apache に変更する。

# chown -R apache:apache /var/lib/redmine_aa

/var/www/html から Redmineへシンボリックリンクを貼る。

# cd /var/www/html
# ln -s /var/lib/redmine_aa/public ./redmine_aa

Apacheを再起動する。

# service httpd configtest  # ←コンフィグファイルの設定にミスが無いかをチェックする。
# systemctl restart httpd.service
# systemctl status httpd.service

(15) WEBブラウザで Redmineにアクセスしてみる。

仮に設置場所が http://www.example.com/redmine_aa として開いてみる。


できた!

3) 応用

(1) 非ログイン状態では閲覧禁止にする。

まずは admin でログインする。
Redmineでは、ユーザー admin の初期パスワードは admin だ。
ログイン直後にパスワード変更を求められるので、任意のパスワードを設定する。

「管理」-「設定」-「認証」を開き、「認証が必要」項目で「はい」を選択する。

すると…
非ログイン状態では、必ずログイン画面が表示されるようになる。

この設定をしないと URLさえ知っていれば Read onlyで閲覧できてしまう。

(2) Basic認証を付けて安全性を高める。

えっ!Basic認証なんて危ないんじゃない?
って思われるかもしれないがそれは昔の話。
SSLと組み合わせれば ID, PW漏洩のリスクが格段に減るので使った方が良い。

Apacheの設定ファイルを編集する。

# vi /etc/httpd/conf.d/redmine.conf

以下を追記する。

<Location /redmine_nv/>
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  </IfModule>

  AuthType Basic
  AuthName "xxxxx"
  AuthUserFile /var/lib/redmine_aa/public/.htpasswd
  Require valid-user

  <LimitExcept GET PROPFIND OPTIONS REPORT>
    SSLRequireSSL
  </LimitExcept>
</Location>

設定ファイル中に書いたパスに、パスワードファイルを設置する。
詳細は (49) htpasswdの作り方 を参照されたい。

# FPATH=/var/lib/redmine_aa/public/.htpasswd
# USER=hoge
# PASS=hogeA
# htpasswd -cb $FPATH $USER $PASS

Apacheを再起動する。

# service httpd configtest  # ←コンフィグファイルの設定にミスが無いかをチェックする。
# systemctl restart httpd.service
# systemctl status httpd.service

再度 Redmineを開いて見ると…

認証画面が表示された!

これにより、
第1の壁: Redmineの存在自体を隠す Baseic認証
第2の壁: Redmineのユーザー認証
の二重の防御壁ができた。

(3) Redmineへの投稿時にメール送信する。

後日追記する。

(4) Redmineへのメール送信による投稿を実現する。

後日追記する。

(5) Subversionと連携する。

後日追記する。

4. 所感

・やっぱり Redmineは便利だ。
・年額1万円の SAKURA VPSに設置しているが、Redmineの動作が重たい…
 → 快適に使うためにはリソース割り当ての大きい高額なプランにする必要がある。
 ※自宅N/W上で Intel NUC (Pentium 4core)に設置している Redmineは快適だ。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です