2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Redmine3.2.1 インストール on CentOS7.1 + Rails4 / Puma + MariaDB

Last updated at Posted at 2016-05-02

CentOS7の標準リポジトリをそのまま活用します。systemctlfirewall-cmdといったCentOS7のコマンドをベースに書いています。また、なるべくsudoで実行するようにしています。(カレントユーザーで混乱しないように)

Railsのインストール

現在CentOS7の標準ではRuby2.0とRails4.2がインストール可能です。
Railsインストール on CentOS7
Redmineの最新の要件を見ると、Ruby2.0は対応。Railsは4.1が必要と書いてあるので、おそらく4.2で大丈夫だと思います。

ImageMagickのインストール

画像の編集に使われます。

インストール

yumで普通にインストール。

$ sudo yum install ImageMagick-devel

nginxをインストール

reverse proxyとしてnginxを使用します。
redmine本体インストールした時にnginxからのアクセス権与えたいので、予めインストールしてユーザーが出来上がっているようにします。

yumでインストール
$ sudo yum install nginx

サービス有効化
$ sudo systemctl enable nginx
ln -s '/usr/lib/systemd/system/nginx.service' '/etc/systemd/system/multi-user.target.wants/nginx.service'

nginx起動
$ sudo systemctl start nginx

ステータス確認
$ sudo systemctl status nginx
nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
   Active: active (running) since Fri 2015-02-00 00:00:00 JST; 10s ago
  Process: 22314 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 22312 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
...省略...

Fire Wallポート開放

外部からポート80でアクセスするために、firewallを設定します。

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload

redmineへ接続するための設定はあとでやります。

MariaDB(MySQL互換DB)

CentOS7ではMySQLではなくMariaDBが標準なのでこちらをインストールします。

インストール

develとserverが必要です。

$ sudo yum install mariadb-devel mariadb-server

サーバーのキャラクターセットをutf8に設定しておきます。(未だlatin1がデフォルトなんですね…)

$ sudo vi /etc/my.cnf.d/server.cnf
/etc/my.cnf.d/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]
## 追加 ##
character-set-server=utf8

# this is only for embedded server
[embedded]

...以下省略...

サービス起動

$ sudo systemctl enable mariadb
$ sudo systemctl restart mariadb

rootパスワード

初期パスワードはなしで危険なので、新しいパスワードを設定します。

$ mysqladmin password -u root
Enter password:
New password:
Confirm new password:

データベース作成

mysql
$ mysql -u root -p
MariaDB [(none)]>create database redmine;
MariaDB [(none)]>create user 'redmine'@'localhost' identified by 'redmine_pass';
MariaDB [(none)]>grant all privileges on redmine.* to 'redmine'@'localhost';
MariaDB [(none)]>exit;

redmineユーザー作成

セキュリティのため、root権限(wheel)でない専用ユーザーを作成します。

$ sudo useradd redmine
$ sudo passwd redmine

Redmine本体

ダウンロードと展開

本家からredmine-3.2.1をダウンロードします。

$ cd ~/
$ curl -O http://www.redmine.org/releases/redmine-3.2.1.tar.gz
$ tar -xvf redmine-3.2.1.tar.gz
$ sudo mv redmine-3.2.1 /var/lib
$ cd /var/lib/redmine-3.2.1
$ sudo chmod -R 755 files log public/plugin_assets
$ sudo chown -R redmine:nginx .

DBの設定

引き続き/var/lib/redmine-3.2.1で作業します。
先ほど作成したDBのユーザー名、パスワードを設定します。

$ sudo -u redmine cp config/database.yml.example config/database.yml
$ sudo -u redmine vi config/database.yml
config/database.yml
...省略...

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: redmine_pass
  encoding: utf8

...省略...

bundlerでgemsのインストール

Gemfileにrailsを稼働させるRack Serverとしてpumaを追加します。(unicornより流行ってる?&導入が楽だったので)
Gemfile 17行目あたりにpumaを追加します。

$ sudo -u redmine vi Gemfile
Gemfile
...省略...
gem "protected_attributes"
gem "actionpack-action_caching"
gem "actionpack-xml_parser"
gem "roadie-rails"
gem "puma"
...省略...

nokogiri-1.6.6.2をインストールしようとして、Cのライブラリを参照しようとします。そのままだとエラーになるので、configで--use-system-librariesオプションを設定してからbundle installします。
※railsのインストール手順でやっているので不要でした

今回はMySql(MariaDB)を使用するので、本家で紹介されている通りpostgresqlとsqliteは除外します。

$ sudo -u redmine -E /var/lib/redmine-3.2.1/bin/bundle install --path vendor/bundle --without development test postgresql sqlite

セッションストア秘密鍵生成

rakeコマンドを使用して生成します。

$ sudo -u redmine /home/redmine/bin/bundle exec rake generate_secret_token

DBテーブル初期化

$ sudo -u redmine RAILS_ENV=production /home/redmine/bin/bundle exec rake db:migrate

新規の場合は初期のデフォルトデータをロードします。移行の場合はこの手順を飛ばして、データをインポートしてください。

言語を訊かれたら日本語jaを入力します。

$ sudo -u redmine RAILS_ENV=production /home/redmine/bin/bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja

Webrickでテスト

とりあえずバックグラウンドでwebrick起動します。curlでページのソースが取得されていることを確認します。

$ cd /var/lib/redmine-3.2.1
$ sudo -u redmine /home/redmine/bin/bundle exec rails server webrick -e production &
$ curl http://localhost:3000
サーバーを停止するとき
$ fg
Ctrl+C

外部からブラウザで参照したければ、firewall-cmdでポート3000番開けてください。
また、すべてのアドレスから待ち受けるよう、-b 0.0.0.0を追加します。

$ sudo firewall-cmd --add-port=3000/tcp
$ rails server webrick -e production -b 0.0.0.0 &
サーバーを停止するとき
$ fg
Ctrl+C

puma

設定ファイルを記述

$ cd /var/lib/redmine-3.2.1
$ sudo -u redmine vi config/puma.rb
puma.rb
app_root = '/var/lib/redmine-3.2.1'

directory app_root
environment 'production'
pidfile "#{app_root}/tmp/pids/puma.pid"
state_path "#{app_root}/tmp/pids/puma.state"
bind "unix://#{app_root}/tmp/sockets/redmine.sock"
activate_control_app

pumaでテスト

pumaでテストしてみます。ソケット経由

$ cd /var/lib/redmine-3.2.1
$ sudo -u redmine bin/bundle exec puma 

稼働していることはわかりますが、curlでunixソケットにアクセスする--unix-socketCentOS Linux release 7.1.1503標準の7.29.0では対応していないのでエラーがないことだけ確認。方法知ってる人いたらおしえてください。(素直に7.40いれれば良いんだけど)

daemon化

systemdで起動できるようにします。

serviceファイルの作成

$ sudo vi /usr/lib/systemd/system/redmine.service
/usr/lib/systemd/system/redmine.service
[Unit]
Description=Redmine on PUMA
After=network.target

[Service]
Type=simple
ExecStart=/var/lib/redmine-3.2.1/bin/bundle exec pumactl -F /var/lib/redmine-3.2.1/config/puma.rb start
KillMode=process
KillSignal=SIGQUIT
User=redmine
Group=nginx

[Install]
WantedBy=multi-user.target

systemdから起動する

systemファイルを追加したので、設定をリロード
$ sudo systemctl daemon-reload

自動起動を有効にする
$ sudo systemctl enable redmine

開始
$ sudo systemctl start redmine

正しく開始されたか確認
$ sudo systemctl status redmine

Active: active (running)になっていればOK

nginxからアクセスする

サーバー設定と、ロケーション設定を追加します。

$ sudo vi /etc/nginx/conf.d/redmine_server.conf
/etc/nginx/conf.d/redmine_server.conf
upstream redmine {
  server unix:/var/lib/redmine-3.2.1/tmp/sockets/redmine.sock;
}
$ sudo vi /etc/nginx/default.d/redmine.conf
/etc/nginx/default.d/redmine.conf
location / {
  root /var/lib/redmine-3.2.1/public;
  access_log  /var/log/nginx/redmine_access.log;
  error_log   /var/log/nginx/redmine_error.log;

  try_files $uri $uri/index.html $uri.html @redmine;
}

location @redmine {
  proxy_read_timeout    300;
  proxy_connect_timeout 300;
  proxy_redirect        off;
  proxy_set_header Host      $http_host;
  proxy_set_header X-Real-IP $remote_addr;

  proxy_pass http://redmine;
}

設定が有効か確認して、リロードします。

確認
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

リロード
$ sudo systemctl reload nginx

サブディレクトリでアクセスする場合

location設定を書き換えます。

$ sudo vi /etc/nginx/default.d/redmine.conf
/etc/nginx/default.d/redmine.conf
location /redmine {
  root /var/lib/redmine-3.2.1/public;
  access_log  /var/log/nginx/redmine_access.log  main;
  error_log  /var/log/nginx/redmine_error.log  main;

  try_files $uri $uri/index.html $uri.html @redmine;
}

location @redmine {
  proxy_read_timeout    300;
  proxy_connect_timeout 300;
  proxy_redirect        off;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host            $http_host;
  proxy_set_header X-Real-IP       $remote_addr;

  proxy_pass http://redmine;
}

さらに、relative_url_rootにサブディレクトリを登録して、ルートパス"/"にマップするよう、redmineの設定も変更します。
参考

$ sudo -u redmine vi /var/lib/redmine-3.2.1/config/environment.rb
/var/lib/redmine-3.2.1/config/environment.rb
# 末尾に追加
Redmine::Utils::relative_url_root = "/redmine"
$ sudo -u redmine vi /var/lib/redmine-3.2.1/config.ru
/var/lib/redmine-3.2.1/config.ru
# run RedmineApp::Application
map ActionController::Base.relative_url_root || "/" do
  run RedmineApp::Application
end

SELinux無効化

簡単のため、SELinuxをPermissiveにします。

再起動したときにpermissiveになるよう、設定変更します。

$ sudo vi /etc/sysconfig/selinux

7行目

/etc/sysconfig/selinux
SELINUX=permissive 

再起動するまで反映されないので、明示的に即時反映する。

$ sudo setenforce 0

確認

Webブラウザで確認します。

http://[yourhost]/
サブディレクトリ設定している場合は
http://[yourhost]/redmine

画像はサブディレクトリ設定した例。
redmine_browser.PNG

実用化のために追加でやるべきこと

ここには書いてませんが、実用するには
・管理者のメール設定(メール通知)
・SSLを通す(nginxに設定)
定期バックアップ
などを設定してください。

2
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?