VagrantでVirtualBoxに作成した仮想マシン(CentOS7.3)にRedmine3.4.2をインストール

Redmineを入れてみましょう、ということでドえらくハマったこと...。

Redmine 3.4をCentOS 7.3にインストールする手順 | Redmine.JP Blog

⇧  上記サイト様を参考にさせていただいています。

Redmineとは

Redmineオープンソースのプロジェクト管理ソフトウェアです。タスク管理、進捗管理、情報共有が行えます。ソフトウェア開発やwebサイト制作等のITプロジェクトをはじめ、汎用性が高いため幅広い用途に活用できます。 

Redmine.JP — Redmine日本語情報サイト

ということみたいです。 Redmine自体がRuby on Railsでできているらしいです。

Redmineのインストールに必要なもの

Redmineのインストール - Redmine Guide 日本語訳

⇧  にも記載されていますが、仮想マシンで導入していくのに必要なものを一応まとめると、「Webサーバ」「Ruby」「Rubyが動くアプリケーションサーバ」「データベース」があれば大丈夫そうです。

 

Redmineのインストールに必要なものをそろえる

今回、用意したものはこんな感じです。 

機能 内容
OS CentOS 7.3
Webサーバ Apache Httpd 2.4.27
言語 Ruby 2.4.2
アプリケーションサーバ Phusion Passenger 5.1.8
Webサーバのモジュール
Apache Httpd利用の場合
passenger-install-apache2-module
データベース MySQL 5.7.19
Database adapter
MySQL利用の場合
mysql2

 

Redmine自体がRuby on Railsでできてるので、Ruby on Railsは入れなくても大丈夫かと思われます。

⇩  VagrantVirtualBox、Webサーバ、Rubyはこちらを参考に

 

ts0818.hatenablog.com

 

CentOS7.4を使う場合は、Apached Httpdのインストールがもう少し手軽におこなえるようです。

CentOS 7.4 で手軽になった HTTP/2 対応 Apache のインストールメモ | あぱーブログ 

ts0818.hatenablog.com

 

 

ts0818.hatenablog.com

 

ということで、VagrantVirtualBoxに作成した仮想マシンCentOS 7.3) に、Apached Httpd 2.4.27、Ruby 2.4.2がインストールされたというところからスタートしていきます。

Redmine 3.4をCentOS 7.3にインストールする手順 | Redmine.JP Blog 

⇧  上記サイト様の「必要なパッケージのインストール」のものをインストールしておいたほうが良いかと思われます。(今回、MySQLを使うので、PostgreSQLとかは必要ないです。)

 

bundlerのインストール

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

gem install bundler --no-rdoc --no-ri

f:id:ts0818:20171006210058j:plain

 

MySQLのインストールとRedmine用のデータベース作成など

CentOS7.3 に MySQL5.7 をインストールした時のメモ - Qiita

 

MariaDBが入ってたら削除する必要があるようです。

rpm -qa | grep maria
yum remove mariadb-libs
rm -rf /var/lib/mysql/

 

f:id:ts0818:20171006210703j:plain

f:id:ts0818:20171006211611j:plain

MySQL5.7 インストール

yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum install mysql mysql-devel mysql-server mysql-utilities

f:id:ts0818:20171006211639j:plain

f:id:ts0818:20171006211908j:plain

f:id:ts0818:20171006211950j:plain

MySQL5.7インストールできたか確認

rpm -qa | grep mysql
mysqld --version

f:id:ts0818:20171006212108j:plain

初期化

mysqld --user=mysql --initialize

自動起動にする

systemctl enable mysqld.service

起動

systemctl start mysqld.service

初回起動時にrootの初期パスワードが自動設定される。 ログに出力されるので確認する。

grep password /var/log/mysqld.log

f:id:ts0818:20171006213721j:plain

 「root@localhost: 初期パスワード」の初期パスワードを使ってMySQLにログインします。ログイン後、rootのパスワードを変更。(後で「mysql_secure_installation」で改めてrootパスワードを決めるので、ここは仮のパスワードみたいな感じです。)

mysql -u root -p
SET PASSWORD = PASSWORD('新しいパスワード');

f:id:ts0818:20171006213909j:plain

一旦、ログアウトし、MySQLの初期設定。パスワードは上記で設定した仮パスワードを入力します。

mysql_secure_installation

f:id:ts0818:20171006214354j:plain

「VALIDATE PASSWORD PLUGIN のインストール」を聞かれますが、個人でMySQLを使う分には特に入れなくても良かったみたいです。「y」を選択してしまいましたが。

f:id:ts0818:20171006214741j:plain

「Change the password for root?」と聞かれるので、ここでrootパスワードを改めて設定できます。仮で設定したパスワードを使う場合は、「y」以外を押せば良いみたいです。

f:id:ts0818:20171006215512j:plain

「Remove anonymous users ?」 と聞かれるので、「anonymous ユーザを削除」する場合は、「y」 

f:id:ts0818:20171006215946j:plain

「Disallow root login remotely? 」と聞かれるので、「ローカルホスト以外からアクセス可能な root アカウントを削除」する場合は「y」

f:id:ts0818:20171006220245j:plain

「Remove test database and access to it?」と聞かれるので「test データベースの削除」する場合は「y」

f:id:ts0818:20171006220409j:plain

vim /etc/my.cnf

「/etc/my.cnf」の[mysqld]ブロックに追記します。

character-set-server = utf8
default_password_lifetime = 0

f:id:ts0818:20171006221249j:plain

Redmine用のデータベース作成

CREATE DATABASE redmine DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'stepRedmine';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

f:id:ts0818:20171006223105j:plain

  

Redmineのインストール

svn コマンドを使って「/var/lib/redmine」にRedmineをインストール

svn co http://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine

f:id:ts0818:20171006223832j:plain

データベース接続設定

cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml
vim /var/lib/redmine/config/database.yml

f:id:ts0818:20171006224447j:plain

「production」のほうの設定の「database」、「username」、「password」にRedmine用のデータベース作成で作成したデータベースの情報を指定します。

 

Redmineのインストールディレクトリへ移動

cd /var/lib/redmine

Rubyのパッケージ管理ツール「bundler」を使用してRedmineが依存するgemパッケージをインストールします。

bundle install --without development test --path vendor/bundle

で、エラー。

f:id:ts0818:20171006230441j:plain

ImageMagickとヘッダファイル・日本語フォントのインストールをしてなかったのでインストール。

yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

f:id:ts0818:20171006232424j:plain

再び、

bundle install --without development test --path vendor/bundle

f:id:ts0818:20171006232601j:plain

f:id:ts0818:20171006232644j:plain

今回はエラーとして出なかったんですが、RedmineMySQLを使うためのMysql2で『libmysqlclient-dev』 or 『mysql-devel』を入れれば動くみたいなエラーが出たときは、「yum install mysql-devel」とかすれば大丈夫かと。

The Mysql2 gem is meant to serve the extremely common use-case of connecting, querying and iterating on results. Some database libraries out there serve as direct 1:1 mappings of the already complex C APIs available. This one is not.

It also forces the use of UTF-8 [or binary] for the connection [and all strings in 1.9, unless Encoding.default_internal is set then it'll convert from UTF-8 to that encoding] and uses encoding-aware MySQL API calls where it can.

The API consists of three classes:

Mysql2::Client - your connection to the database.

Mysql2::Result - returned from issuing a #query on the connection. It includes Enumerable.

Mysql2::Statement - returned from issuing a #prepare on the connection. Execute the statement to get a Result.

GitHub - brianmario/mysql2: A modern, simple and very fast Mysql library for Ruby - binding to libmysql

 

Redmineの初期設定と初期データ登録

セッション改ざん防止用秘密鍵の作成

bundle exec rake generate_secret_token

データベースのテーブル作成

config/database.yml で指定したデータベースにテーブルを作成します。

RAILS_ENV=production bundle exec rake db:migrate

f:id:ts0818:20171006232856j:plain

デフォルトデータの登録

作成したテーブルにデフォルトデータのロードを行います。この操作によりトラッカー、優先度、ステータス、ロール、ワークフローなどの初期値が登録されます。

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

f:id:ts0818:20171006233428j:plain

 

 

Passengerのインストール

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

gem install passenger --no-rdoc --no-ri

f:id:ts0818:20171006234630j:plain

 

 

passenger-install-apache2-moduleのインストール

PassengerをApacheで使うためのApache用のモジュールのビルドとインストール

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

f:id:ts0818:20171006235142j:plain

はい、エラー。ソースコードでインストールしたApached Httpd 2.4.27は無視される感じですかね...というかyumでも入れろ的な感じですかね。

yum -y install httpd httpd-devel

再び、

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

f:id:ts0818:20171006235951j:plain

 

Apache用設定内容の確認

passenger-install-apache2-module --snippet

f:id:ts0818:20171007000317j:plain

出力された内容は、テキストエディタなどにコピペしときます。

 

Apache Httpdの設定

で、今回はソースコードでインストールしたApached Httpd 2.4.27が動いているので、

sudo mkdir /usr/local/apache2/conf.d

して、

sudo vim /usr/local/apache2/conf.d/redmine.conf

f:id:ts0818:20171007001120j:plain

 

# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。
# Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

# Passengerの基本設定。
# passenger-install-apache2-module --snippet で表示された設定を記述。
# 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず
# passenger-install-apache2-module --snippet で表示されたものを使用すること。

LoadModule passenger_module /usr/local/src/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/passenger-5.1.8/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/src/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/passenger-5.1.8
  PassengerDefaultRuby /usr/local/src/rbenv/versions/2.4.2/bin/ruby
</IfModule>


# サブディレクトリでRedmineを実行するための設定
# 『http://仮想マシンのIPアドレス/redmine』でアクセスできるようにする
Alias /redmine /var/lib/redmine/public
<Location /redmine>
  PassengerBaseURI /redmine
  PassengerAppRoot /var/lib/redmine
</Location>

 

Apache上のPassengerでRedmineを実行するための設定

Redmineを配置したディレクトリ以下のファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はいずれも"apache")で読み書きできるよう、オーナーを変更します。

chown -R apache:apache /var/lib/redmine

そしたらば、Apache Httpdを再起動

sudo systemctl restart httpd

ブラウザで『http://仮想マシンIPアドレス/redmine』にアクセス。

f:id:ts0818:20171007002822j:plain

仮想マシンIPアドレスは、 

nmcli device show    

で確認できるようです。

f:id:ts0818:20171007003631j:plain

今回は、Vagrantfileで『config.vm.network "private_network", ip: "192.168.33.10"』を有効にしてるので、『IP4.ADDRESS[1]:』の『192.168.33.10/24』の『192.168.33.10』の部分がアドレスになってます。

CentOS7で、マシンのIPアドレスやMACアドレスを確認する | 自由とテクノロジーを愛す者のサイト