社内テスト環境をCentOS8.1に更新するため、ついでにプロジェクト管理用にRedmineの環境を作成してみましたので、作業手順をメモメモ。
基本的にはRedmine公式のインストール手順に沿っていますが、2020年2月現在での最新バージョンで構築していますので、若干公式の手順と違う部分があります。
CentOSのインストール
PCを新たに用意したので、CentOSのインストールから始めます。
CentOS8系のインストールに関しては、別の記事でメモしていますので参考にしてください。8.0のインストール記事ですが、8.1でもほとんど変わりはありません。
今回用意したOSは、2020年2月現在で最新版の CentOS 8.1.1911。以下のCentOS公式サイトにて「CentOS Linux DVD ISO」という方からダウンロードしました。
今回、CentOSは「最小限のインストール」で、ソフトウェアの追加は一切行っていない環境から始めます。SELINUXの無効化と、利便性のためにtelnetサーバインストール・設定のみ、行っておきました。
Redmineのインストールについて
Redmineをインストールする前に、必要なパッケージなどのインストールを行います。
Redmine環境を構築するために必要な環境も含めて、自動的にインストールしてくれるAnsibleプレイブックというものもありますので、手間を省きたい方はそちらを利用してみてもいいかもしれません。
上記リンク先の「Clone or download」という緑色のボタンをクリックして、「Download ZIP」をクリックしてダウンロードします。
ダウンロード後の手順は、上記リンク先に書かれていますので、ここでは割愛します。
さて、今回はRedmineを含め、全てのパッケージ類を最新バージョンで構築したいので、Ansibleプレイブックというものを使わずに、ひとつずつ手動でいきますよ!
Redmineのインストール手順
準備インストール
Redmineのインストールを行う前に、リポジトリの追加を行っておきます。以下の記事を参考に、EPELとRemiを追加します。
ついでに、PHP7.3も入れておきました。準備インストールに関しては、Redmineのインストールにはほぼ無関係なので、省略してしまっても問題ありません。
必要なパッケージのインストール
Redmineを動かすために必要なパッケージをインストールしていきます。公式では、データベースにPostgreSQLを使用してのインストール手順が掲載されていましたが、ここでは使い慣れたMySQLの8.0を使用します。
まずは開発ツールのインストールから。
# dnf -y groupinstall "Development Tools"
# dnf -y install openssl-devel readline-devel zlib-devel curl-devel libffi-devel
続いて、MySQLをインストールします。
# dnf -y install @mysql:8.0 mysql-devel
Webサーバ(Apache)をインストールします。
# dnf -y install httpd httpd-devel
Rubyのインストール
Rubyのインストールを行いますが、リポジトリからのインストールはバージョン2.5.5だったので、オフィシャルサイトから最新のソースコードをダウンロードし、ビルド、インストールします。
# curl -O https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0.tar.gz
# tar xvf ruby-2.7.0.tar.gz
# cd ruby-2.7.0
# ./configure --disable-install-doc
# make
# make install
インストール後、バージョンを確認してみます。表示されれば正常にインストールできています。
# ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
Ruby用のパッケージ管理ツール「bundler」をインストールしておきます。
# gem install bundler
以上でRuby関連のインストールは完了です。
MySQLの設定
MySQLの初期設定や自動起動設定については、以下の記事を参考にしてください。
Redmine用ユーザーの作成は、以下のように行いました。
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmineredmine';
mysql> GRANT ALL ON *.* TO 'redmine'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
ユーザーを作成したら、Redmine用のデータベースを作成します。文字コードは明示的に指定しなくてもutf8md4になると思いますが、念のため。
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
mysql> exit
Redmineのインストール
ようやく、Redmineのインストールです。と言っても、ダウンロードして展開するだけです。
# cd /var/lib
# curl -O https://www.redmine.org/releases/redmine-4.1.0.tar.gz
# tar xvf redmine-4.1.0.tar.gz
# mv redmine-4.1.0 redmine
展開後、設定ファイルを作成します。まずはデータベースに接続するための設定です。
# vi /var/lib/redmine/config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "redmineredmine"
encoding: utf8mb4
usernameとpasswordは、作成したユーザーに合わせて書き換えてください。また、文字コードにutf8md4以外を指定した場合は、encodingも書き換えが必要です。
次に、Redmineの設定ファイルです。Redmineからメールサーバへ接続するための設定です。
# vi /var/lib/redmine/config/configuration.yml
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "localhost"
port: 25
domain: "centos8"
それぞれ、環境に合わせて書き換えてください。
最後に、Redmineの依存パッケージをインストールします。Redmineを展開したディレクトリで実行する必要があります。
# cd /var/lib/redmine
# bundle install --without development test --path vendor/bundle
以上で、Redmineのインストールは完了です。
Redmineの初期設定
Redmineの動作に必要な初期設定を行います。Redmineを展開したディレクトリで実行する必要があります。
最初に、セッションの改ざんを防止するための秘密鍵を作成します。
# bundle exec rake generate_secret_token
database.ymlで指定したデータベースに、Redmineのテーブルを作成します。
# RAILS_ENV=production bundle exec rake db:migrate
Passengerのインストール
RedmineなどのRailsアプリケーションを、Apache上で実行するためのパッケージ「Passenger」をインストールします。
# gem install passenger -v 5.1.12
PassengerをApacheで使用するため、Apache用のモジュールをインストールします。
# passenger-install-apache2-module --auto --languages ruby
Apacheの設定
ApacheでPassengerを使用するための設定を行います。
まず、Apache用設定の内容を確認するため、以下のコマンドを実行します。
# passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.7.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/2.7.0/gems/passenger-5.1.12
PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
コマンドを実行して表示された設定情報を、Apacheの設定ファイルに記述します。表示された内容を含め、以下の設定ファイルを作成すればOK。
# vi /etc/httpd/conf.d/redmine.conf
Alias /redmine /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
</Location>
<Directory "/var/lib/redmine/public">
Require all granted
</Directory>
LoadModule passenger_module /usr/local/lib/ruby/gems/2.7.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/2.7.0/gems/passenger-5.1.12
PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
上記設定では、Redmineをサブディレクトリ「/redmine」で実行するように指定しています。
サーバをRedmine専用にする場合は、AliasとLocationの設定は不要で、代わりにhttpd.confのDocumentRootを以下のように書き換える必要があります。
DocumentRoot "/var/lib/redmine/public"
ここで作成した設定ファイルは、CentOS上のApacheで起動時に自動読み込みされます。
設定ファイルが作成できたら、Apacheを起動します。一緒に、自動起動の有効化も行っておきましょう。
# systemctl enable httpd
# systemctl start httpd
CentOS8系は、そのままではhttpの通信ができないため、80番ポートを開放してあげる必要があります。ファイアウォールに例外登録し、設定を反映させます。
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload
ここまで設定できれば、インストール作業は完了です。最後に、Redmineディレクトリのオーナーをapacheに変更しておきましょう。
# chown -R apache:apache /var/lib/redmine
ブラウザからアクセスしてみる
それでは、実際にブラウザからアクセスしてみましょう。接続先は「http://(サーバのIPアドレス)/redmine」です。
どうでしょう。上記のように表示されましたか?もしエラーになってしまうようであれば、画面にエラー内容が表示されますので、それをヒントに原因を探ってみましょう。
さいごに
以上で、CentOS8.1の環境に、Redmine4.1をインストールすることができました。
インストールして使えるようになるまでの敷居が高いように感じますが、ここで紹介した通りに進めて行けば、おそらく行き詰まることはないんじゃないかと思います。
プロジェクト管理やタスク管理に悩んでいる方がいましたら、一度Redmineを試してみてはいかがでしょうか。
コメント
はじめまして。
Redmineのプラグイン開発用に環境を作るため、記事を参考にさせてもらい、Redmineをインストールしました。
なんの問題もなくインストールできました!
ありがとうございました!
はじめまして。
問題なくインストールできたとのことで、記事にした甲斐がありました。
こちらこそ、コメントいただきましてありがとうございます。