はじめに
この記事では、Redmine 3.4をCentOS 7.3にインストールする手順 をベースにして、CentOS8上に最新バージョンのRedmineを構築する。
ソフトウェア | バージョン |
---|---|
OS | CentOS 8.3 |
Redmine | Redmine 4.1.2 |
WEB | Apache 2.4.37 |
DB | PostgreSQL 10.15 |
Ruby | ruby 2.5.5 |
関連記事
【CentOS8に最新バージョンのRedmineとGitLabを構築する】事前調査
【CentOS8に最新バージョンのRedmineとGitLabを構築する】GitLab構築
1.SELinux無効化
/etc/sysconfig/selinux
を開く。
[doshi@centos8 ~]$ sudo vi /etc/sysconfig/selinux
SELINUX=
の値をdisabled
に変更する。
#SELINUX=enforcing
SELINUX=disabled
変更後、CentOSを再起動する。
[doshi@centos8 ~]$ sudo reboot
getenforce
コマンドを実行してSELinuxが無効Disabled
になったことを確認する。
[doshi@centos8 ~]$ getenforce
Disabled
2.firewalldでhttpを許可
デフォルトzoneにhttpを追加する。
[doshi@centos8 ~]$ sudo firewall-cmd --zone=public --add-service=http --permanent
success
追加した設定を反映する。
[doshi@centos8 ~]$ sudo firewall-cmd --reload
success
httpでのアクセスが許可されたことを確認する。
[doshi@centos8 ~]$ sudo firewall-cmd --zone=public --list-services
cockpit dhcpv6-client http ssh
3.必要なパッケージのインストール
EPELとPowerToolsリポジトリの有効化
CentOS8ではEPELとPowerToolsリポジトリを有効化しておく必要がある。
[doshi@centos8 ~]$ sudo dnf install -y epel-release
[doshi@centos8 ~]$ sudo dnf config-manager --set-enabled powertools
開発ツール(Cコンパイラ等)のインストール
[doshi@centos8 ~]$ sudo yum -y groupinstall "Development Tools"
RubyとPassengerのビルドに必要なヘッダファイルなどのインストール
Redmine.JP Blogの手順 と異なる点として、CentOS8ではcurl-devel
はlibcurl-devel
という名称になる。また、libyaml-devel
はPowerToolsリポジトリからインストールされる。
[doshi@centos8 ~]$ sudo dnf -y install openssl-devel readline-devel zlib-devel libffi-devel libcurl-devel libyaml-devel
PostgreSQLとヘッダファイルのインストール
[doshi@centos8 ~]$ sudo dnf -y install postgresql-server postgresql-devel
Redmine.JP Blogの手順 にはないが、ここでPostgreSQLをインストールした際に作成されるOSユーザpostgres
のパスワードを設定しておく。
[doshi@centos8 ~]$ sudo passwd postgres
Apacheとヘッダファイルのインストール
[doshi@centos8 ~]$ sudo dnf -y install httpd httpd-devel
ImageMagickとヘッダファイルのインストール
Redmine.JP Blogの手順 と異なる点として、ImageMagick
とImageMagick-devel
はEPELリポジトリからインストールされる。
[doshi@centos8 ~]$ sudo dnf -y install ImageMagick ImageMagick-devel
日本語フォントのインストール
Redmine.JP Blogの手順 と異なる点として、CentOS8ではIPAフォントのパッケージがリポジトリに存在しないため、Web上のrpmをインストールする。
[doshi@centos8 ~]$ sudo dnf install https://pkgs.dyn.su/el8/base/x86_64/ipa-pgothic-fonts-003.03-14.el8.noarch.rpm
IPAのフォントが追加されていることを確認する。
[doshi@centos8 ~]$ ls /usr/share/fonts | grep ipa
ipa-pgothic
4.Rubyのインストール
Redmine.JP Blogの手順 ではソースコードからインストールする手順になっているが、最新のRubyをインストールするメリットが見出せないので、パッケージでインストールする。
後にあるgemパッケージのインストールbundle install
の際に、ヘッダーファイルが見つからずエラーになるのを避けるため、ruby-devel
もインストールする。
[doshi@centos8 ~]$ sudo dnf -y install ruby ruby-devel
ruby -v
を実行してRubyのバージョンを表示させ、インストールできたことを確認する。
[doshi@centos8 ~]$ ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]
bundlerのインストール
Ruby用のパッケージ管理ツールであるbundlerをインストールする。Redmineが使用するgemパッケージをインストールするのに使う。bundlerはrootユーザで使うため、ここではsudo
で実行する。なお、--no-rdoc --no-ri
オプションはドキュメントのインストールを省略する。
[doshi@centos8 ~]$ sudo gem install bundler --no-rdoc --no-ri
Fetching: bundler-2.2.15.gem (100%)
Successfully installed bundler-2.2.15
5.PostgreSQLの設定
データベースクラスタの新規作成
[doshi@centos8 ~]$ sudo postgresql-setup initdb
RedmineからPostgreSQLに接続するための設定を追加
/var/lib/pgsql/data/pg_hba.conf
を開き、"Put your actual configuration here"と書かれている箇所を探して以下のように設定を2行追加する。
# Put your actual configuration here
# ----------------------------------
#
# If you want to allow non-local connections, you need to add more
# "host" records. In that case you will also need to make PostgreSQL
# listen on a non-local interface via the listen_addresses
# configuration parameter, or via the -i or -h command line switches.
host redmine redmine 127.0.0.1/32 md5
host redmine redmine ::1/128 md5
PostgreSQLの起動および自動起動の設定
[doshi@centos8 ~]$ sudo systemctl start postgresql.service
[doshi@centos8 ~]$ sudo systemctl enable postgresql.service
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
PostgreSQLのディレクトリに移動
/etc/sudoers
を開く。
[doshi@centos8 ~]$ sudo vi /etc/sudoers
postgresユーザを追加する。
postgres ALL=(ALL) ALL
postgresユーザに切り替える。
[doshi@centos8 ~]$ su - postgres
/var/lib/pgsql
ディレクトリに移動する。
[postgres@centos8 ~]$ cd /var/lib/pgsql
Redmine用ユーザーの作成
[postgres@centos8 ~]$ sudo -u postgres createuser -P redmine
Redmine用データベースの作成
[postgres@centos8 ~]$ sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
PostgreSQLのディレクトリから元のディレクトリに戻る
exit
でpostgresユーザから一般ユーザに戻る。
6.Redmineのインストール
svnコマンドを使ってインストールするため、subversionをインストールする。
[doshi@centos8 ~]$ sudo dnf install subversion
Redmine 4.1の最新ソースコード一式を、デプロイしたい/var/lib/
直下のディレクトリredmine
にダウンロードする。
[doshi@centos8 ~]$ sudo svn co http://svn.redmine.org/redmine/branches/4.1-stable/ /var/lib/redmine
データベースへの接続設定
Redmineからデータベースへ接続するための設定ファイルを作成する。Redmineのインストールディレクトリ/var/lib/redmine
にconfig/database.yml
を作成する。
[doshi@centos8 ~]$ sudo vi /var/lib/redmine/config/database.yml
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "*******"
encoding: utf8
設定ファイル config/configuration.yml の作成
Redmineからメールサーバへ接続するための設定や日本語フォントファイルのパスを記述した設定ファイルを作成する。Redmineのインストールディレクトリ/var/lib/redmine
にconfig/configuration.yml
を作成する。
[doshi@centos8 ~]$ sudo vi /var/lib/redmine/config/database.yml
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "smtp.gmail.com"
authentication: :plain
user_name: "**********@gmail.com"
password: "**********"
production:
rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
Redmineのインストールディレクトリへ移動
rootユーザに切り替える。
[doshi@centos8 ~]$ su -
/var/lib/redmine
ディレクトリへ移動する。
[root@centos8 ~]# cd /var/lib/redmine
gemパッケージのインストール
[root@centos8 ~]# bundle install --without development test --path vendor/bundle
7.Redmineの初期設定と初期データ登録
Redmine動作に関する初期設定と初期データの登録を行う。Redmineのインストールディレクトリで実行する必要がある。
セッション改ざん防止用秘密鍵の作成
[root@centos8 redmine]# bundle exec rake generate_secret_token
データベースのテーブル作成
[root@centos8 redmine]# RAILS_ENV=production bundle exec rake db:migrate
デフォルトデータの登録
作成したテーブルにデフォルトデータのロードを行う。この操作によりトラッカー、優先度、ステータス、ロール、ワークフローなどの初期値が登録される。
[root@centos8 redmine]# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
Default configuration data loaded.
8.Passengerのインストール
Apache上でRedmineなどのRailsアプリケーションを実行するために使われるPhusion Passengerをインストールする。
[root@centos8 redmine]# gem install passenger -v 5.1.12 --no-rdoc --no-ri
PassengerのApache用モジュールのインストール
Apache用のモジュールのビルドとインストールを行う。完了するまで時間がかかる。
[root@centos8 redmine]# passenger-install-apache2-module --auto --languages ruby
Redmineのディレクトリから元のディレクトリに戻る
exit
でrootユーザから一般ユーザに戻る。
9.Apacheの設定
Apache用設定内容の確認
下記コマンドを実行するとApacheに追加すべき設定が表示される。
[doshi@centos8 ~]$ passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-5.1.12
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
Apacheの設定ファイル作成
/etc/httpd/conf.d/redmine.conf
を開く。
[doshi@centos8 ~]$ sudo vi /etc/httpd/conf.d/redmine.conf
Apacheの設定ファイルを以下の内容で作成する。
# サブディレクトリでRedmineを実行
Alias /redmine /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
</Location>
# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定
<Directory "/var/lib/redmine/public">
Require all granted
</Directory>
# Passengerの基本設定
# passenger-install-apache2-module --snippet で表示された設定を記述
LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-5.1.12
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
Apacheの起動および自動起動の設定
[doshi@centos8 ~]$ sudo systemctl start httpd.service
[doshi@centos8 ~]$ sudo systemctl enable httpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Apache上のPassengerでRedmineを実行するための設定
Redmineを配置したディレクトリ以下のファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はいずれも"apache")で読み書きできるよう、オーナーを変更する。
[doshi@centos8 ~]$ sudo chown -R apache:apache /var/lib/redmine
10.運用
Redmineのログローテーション
[production.logのローテート][production-log-rotate] を参考に、logroatedを使ってログローテーションを設定する。
[production-log-rotate]: https://redmine.jp/faq/system_management/production-log-rotate/
/etc/logrotate.d/redmine
を開く。
[doshi@centos8 ~]$ sudo vi /etc/logrotate.d/redmine
/etc/logrotate.d/redmine
の設定ファイルを以下の内容で作成する。
/var/lib/redmine/log/*log {
missingok # ファイルが存在しなくてもエラーににない
notifempty # ファイルが空の場合はローテーションしない
copytruncate # ログを別名でコピーした後、元のファイルの内容を空にする
compress # 古いログを圧縮して保存する
}
動作確認のため、ローテートする条件を満たしていなくても-f
オプションで強制実行する。
[doshi@centos8 ~]$ sudo /usr/sbin/logrotate -f /etc/logrotate.d/redmine
圧縮ファイルが作成され、元ファイルのサイズが0となることを確認する。
[doshi@centos8 ~]$ sudo ls -ltr /var/lib/redmine/log/
合計 12
-rw-r--r-- 1 apache apache 32 3月 20 22:37 delete.me
-rw-r--r-- 1 apache apache 8009 3月 27 17:57 production.log.1.gz
-rw-r--r-- 1 apache apache 0 3月 27 18:08 production.log
Redmineのバックアップとリストア
Redmineのバックアップとリストア を参考に、バックアップを取得する。リストアは、Redmineガイドになぜか記載がないため、公式サイトの Restore を参考にする。
アップグレード
Redmineガイドの [アップグレード][RedmineUpgrade] を参考にする。
[RedmineUpgrade]: http://guide.redmine.jp/RedmineUpgrade/
ディレクトリ
データの蓄積するディレクトリは以下のとおり。
ディレクトリ | 用途 |
---|---|
/var/lib/pgsql/data | PostgreSQLのデータ一式が配置されるディレクトリ |
/var/lib/redmine/files | Redmineの添付ファイルがアップロードされるディレクトリ |
おわりに
ご指摘・アドバイス等あればご遠慮なくお願いいたします。
参考文献
この記事は以下の情報を参考にした。