リモートサーバ(centos)にredmineを構築して動かす

社内用の新規プロジェクト用にredmineを構築した時のメモ。
自分みたいなサーバ初心者にはいい勉強になると思います。個人じゃ入れても使う機会ほとんどないけど。

# redmineとは

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

# redmine導入先サーバ

某社のVPSです。

```
# cat /etc/redhat-release
CentOS release 6.7 (Final)

# arch
x86_64

# cat /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz

# cat /proc/meminfo
MemTotal:        1048576 kB
```

・・・月1000円未満で維持できるレベルのサーバーです。


# 必要なもの

- redmine本体
- ruby(redmineはrubyのアプリケーションなので)
- rubyの付随パッケージいろいろ(後述します)
- DB(MySQL・MariaDB・PostgreSQLなど)
- apache
- centosのroot環境(以下はすべてroot下で実行しています)

# 前提条件
  
- MySQLとapacheが入っていること

インストール方法については以下を参照。インストールしたものをそのまま使います。
https://centossrv.com/apache.shtml 
https://centossrv.com/mysql.shtml

※PostgreSQLやMicrosoft SQL Serverなどでもいけるようですが、

> MySQL 5.0以上 (推奨)

とのことですので、今回はMySQLが入っているものとします。


# 手順(新規インストール)

## 1.redmine本体ファイルのダウンロードと解凍

リリースバージョンは事前に確認しましょう。
http://redmine.jp/redmine_today/
記事執筆時点(2016/07/29)では3.3.0が最新でした。
今回は``/usr/local/redmine``に配置します。ディレクトリは適宜読み替えてください。

```
# wget http://www.redmine.org/releases/redmine-3.3.0.tar.gz 

# mv redmine-3.3.0tar.gz /usr/local/redmine/ 

# cd /usr/local/redmine ls -la 

# tar -zxf redmine-3.3.0.tar.gz ls -la 

# mv -f redmine-3.3.0 redmine
```

## 2.redmine用のDBの作成と設定
ここと次の3.は使用するDBによってコマンドが異なりますので、MySQL以外の場合は以下を参考にしながら設定してください。

http://redmine.jp/guide/RedmineInstall/
"インストール手順"の2.を参照

MySQL バージョン5.0.2以上の場合は以下のように設定します。

```
# mysql -u root -p

-----

create database <DB名> character set utf8;
create user '<ユーザー名>'@'localhost'identified by'<パスワード>'
grant all privileges on redmine.* to ‘redmine’@’localhost’;
```

作成できたら、念のためDBに入れるかどうか確認。

```
mysql -u <入力したユーザー名> -p
Enter password: //入力したパスワード

——–入れたら——– 
use <入力したDB名>
```

## 3.database.ymlの作成と編集
2.と同様、DBによっては記載内容が異なります。
redmineの設定ファイルに先ほど作ったDBの内容を記述します。
database.yml.exampleというファイルがありますので、そいつを複製して作成します。

```
# cd /usr/local/redmine/

# cp config/database.yml.example2 config/

# mv config/database.yml.example2 database.yml

# vi config/database.yml
```

このファイルの中にある、productionに、先ほど作成したredmine用のDBの値を設定します。
以下はMySQLの場合です。

```
production: 
adapter: mysql2 
database: <入力したDB> 
host: localhost 
username: <入力したユーザー名>
password: <入力したパスワード>
```

## 4.rubyインストール
rubyのインストールにはいろいろな方法があります。

### yumでインストールする

最も簡単にインストールできますし、パッケージ依存とかも面倒を見てくれるのでメンテナンスコストも低いです。
が、centos6系ではDLできるバージョンが1.8.7と古く、これだとredmineの一部機能の動作が危ういので避けたほうが良いかもしれません。(centos7以降なら2.0.0になっているようなのでこちらでもOKです)

```
sudo yum install ruby

//バージョン確認
ruby -v
```

### ソースコードを直接DLしてビルドする

http://www.ruby-lang.org/ja/downloads/ からソースコードをDLしてビルドする方法です。
最もスタンダードな方法なので分かりやすいですし、バージョンを指定してDLができますが、
管理や削除が面倒です。
一度入れたrubyをずっと変更することがない、ということであればこちらでも問題ないでしょう。

tarのDLが完了したら、以下のコマンドを実行します。

```
# tar xvf ruby-2.3.0.tar.gz 
# cd ruby-2.3.0 
# ./configure –disable-install-doc 
# make 
# make install 
# cd ..

//確認
ruby -v 
```

### rbenv + ruby-buildを使ってインストールする

複数のバージョンのrubyをインストールしたり、軽量でなおかつ導入後の管理もできるので人気があります。
少々手順が嵩むのと、複数ユーザーが使う場合、その数だけインストールする必要があるのがデメリットです。

#### gitを入れる
rbenvはgithubで配布されているソフトウェアなので、gitで取り込んであげるのが手っ取り早いです。ここ以外でgitを使う局面がないので、バージョンに拘る必要もありません。yumでインストールします。

```
# yum install git

//バージョン確認
# git --version
```

#### rbenvをダウンロードする
rbenvのソースファイルをgithubからダウンロードします。

```
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
```

#### pathを通したり
rbenvをコマンドラインから使えるようにPATHに追加します。
その後、``rbenv init``を、コンソールを起動した時に自動実行するようにします。これにより、shimsとautocompletionを有効化し、rubyのバージョンアップを行ったり、gemなどでパッケージをインストールした際、自動で環境変数周りを書き換えてくれたりするようです。

```
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```

#### ruby-buildをダウンロードする
ruby-buildを同じくgithubからインストールします。こちらにはインストール後の設定はありません。

```
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

#### インストール！

```
//どのバージョンをインストールするか確認
rbenv install -l

//インストール
rbenv install 2.3.0

//確認(どちらでも可)
ruby -v
rbenv version
```

参考:
> rbenv installation
> https://github.com/rbenv/rbenv#basic-github-checkout
>
> rbenv + ruby-build はどうやって動いているのか
> http://takatoshiono.hatenablog.com/entry/2015/01/09/012040

## 5.ツールをいろいろインストール

redmineを動かすのに必要なツールをインストールします。

### bundler
rubyのライブラリ管理ツールです。
詳細:http://qiita.com/windhorn/items/794f3ed50a61bf064f62

```
gem install bundler –no-document
```

### phusion passenger
railsをApacheなど、Webサーバ上で動かすためのモジュールです。
詳細:http://d.hatena.ne.jp/MonteCut/20111114/1321280563

```
gem install passenger –no-document
```

bundler上に、redmineに必要なパッケージをまとめてインストールします。
この時、**ImageMagickというソフトウェアを事前にインストールしていない場合は、withoutの中にrmagickを必ず含めてください。**

```
bundle install –without development test rmagick –path vendor/bundle
```

これはお好みですが、「今使ってるDB以外他の使わねーわ」という場合、それらのDBアダプタのインストールを省略することができます。
例えば、今回のようにMySQLをredmineのDBに使用し、それ以外は使わんという場合は、上記コマンドのwithout句に``postgresql sqlite``と追加することで、postgresとsqliteのrubyDBアダプタのインストールを省略できます。
勿論、してもしなくてもredmineの導入には問題無いですし、今後の手順も変わりません。

## 6.秘密鍵作成とredmineDBの初期設定
セッションストアの秘密鍵と、redmineのDBの初期設定を作ります。デフォルトデータのロードも一緒にしておきます。

```
rake generate_secret_token

RAILS_ENV=production rake db:migrate

//デフォルトデータのロード
RAILS_ENV=production rake redmine:load_default_data
```

## 7.一度起動して確認する

webrickというwebサーバーフレームワークで起動するかどうかテストします。

```
ruby bin/rails server webrick -e production -b 0.0.0.0
```

少し待つと、``INFO  WEBrick::HTTPServer#start: pid=***** port=3000``と表示されますので、
http://ホスト名(IP):3000 を入力し、正常に起動していればOKです。
これをApache上で起動するように設定していきます。

## 8.Apacheとredmineの設定
passengerにapache用のモジュールをインストールします。少し時間がかかります。

```
passenger-install-apache2-module
```

この時、``Some required software is not installed.``と表示される場合があります。
apache2-moduleをインストールするのに足りないパッケージが表示されますので、指示されている通りにコマンドを入力してインストールします。
インストール後、再度 ``passenger-install-apache2-module`` を実行します。

インストールが完了すると、「apacheの設定ファイルに以下を追加してね」と出て、コードが表示されます。そちらを``/etc/httpd/conf/httpd.conf``に追記してください。一番下でOKです。

コードをもし忘れてしまった場合は、以下のコマンドで確認できます。

```
# passenger-install-apache2-module --snippet
```

redmineをapache側から読み書きできるよう、権限をapacheに付与します。centosの場合は"apache"です。

```
# chown -R apache:apache /usr/local/redmine
```

## 9.redmineの運用アドレスを指定する

ここは、redmineをサーバー上でどう運用するかによって手順が異なります。具体的に言うと、

- 今回のサーバーをredmine専用サーバーとして運用する場合( http://ホスト名(IP)/ でredmineにアクセスできるようにする)
- 別のアプリケーション・別のredmineとサーバーを併用する場合
- バーチャルホストを使ってredmineに専用のホスト名を付与して運用する場合

などです。

http://blog.redmine.jp/articles/3_0/installation_centos/

の下部、
"Apache上のPassengerでRedmineを実行するための設定"
を参考にしながら設定してください。

設定後、apacheを起動し、以下の様なredmineのログイン画面が表示されていれば成功です。お疲れ様でした。
初期ユーザーはadmin/adminです。

![redmine.png](https://qiita-image-store.s3.amazonaws.com/0/82152/7f61aa3e-636f-5d0b-142b-b4e76a2955c0.png)