Redmine を Mac にインストール

<ins>Docker を使ってより簡単に Redmine 環境をつくる方法もあるので次も check it out !!</ins>

http://qiita.com/janus_wel/items/c058241a0339216cf05e

手元にあったほうがいいかなと思ったので Redmine をインストール。
個人での使用を前提にしてるので SSL トンネリングなし、メールは飛ばさない。

rbenv を使うので以下を見て設定しておくといい。

http://qiita.com/janus_wel/items/d1a4adb7f28ce4e7a319


インストール場所を決める
------------------------

/usr/local/redmine にする。

```zsh
cd /usr/local
mkdir redmine
cd redmine
```


ソース取得
----------

stable でもインストールがうまくいかないことがあったので github から最新を引っ張ってくる。

```zsh
git clone https://github.com/redmine/redmine.git .
```

インストール手順は doc/INSTALL に書いてある。
他にもアップグレード手順が doc/UPGRADING に書いてあったりするので必要に応じて見るといいかもしれない。


Ruby バージョンをあわせる
-------------------------

どうも Redmine 最新でも Ruby 2.1.0 を使えと書いてあるのでそうする。

```zsh
rbenv install 2.1.0
rbenv rehash
rbenv local 2.1.0
```

bundler と一緒に passenger もインストールしちゃおう。

```zsh
gem install bundler passenger
rbenv rehash
```

MySQL まわりの設定
------------------

ここでいったん MySQL 側に移る。インストールしてない場合は以下を参考に。

http://qiita.com/janus_wel/items/ce4bdfb937cdab8720dc

受け皿になるデータベースとそれを使うユーザーの作成。

```zsh:
mysql -u root -p
```

```mysql:
CREATE DATABASE redmine CHARACTER SET UTF8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password for redmine';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
```

ここから Redmine 側にまた戻る。
MySQL への接続設定を書く。まず database.yml をコピーで作る。

```zsh:
cp config/database.yml.example config/database.yml
```

作った database.yml の username と password を上記で作ったユーザーのものに書き換える。
アダプターは mysql2 のまま。


必要なもののインストール
------------------------

gem の rmagick やらで必要なものをインストールする。

```zsh
brew install imagemagick
```

必要な gem のインストール。
<kbd>--without test</kbd> しないと nokogiri のインストールが走ってめんどくさくなるので Redmine の開発がしたい場合以外は without ったほうがいい。

```zsh
bundle install --path gems --without development test
```


DB にデータを流し込む
---------------------

鍵をつくって migrate 。

```zsh
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
```


確認
----

さて、うまくできたかな ?

```zsh:
ruby script/rails server webrick -e production
```

エラーがなく立ち上がって、 http://localhost:3000/ で Redmine の画面が見えたら成功。


Apache で立ち上げる設定
-----------------------

Apache 用の passenger モジュールをインストール。

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

上記で出てきた LoadModule なんたらかんたらを Apache 用の設定ファイルに保存。

```zsh:
sudo vim /etc/apache2/other/passenger.conf
```

仕上げに Redmine 用の VirtualHost 設定をする。ホスト名は redmine.local にしてみた。

```zsh:
sudo vim /etc/apache2/other/redmine.conf
```

```apache:
<VirtualHost *:80>
    ServerName redmine.local
    DocumentRoot /usr/local/redmine/public/

    ErrorLog "/usr/local/redmine/log/error_log"
    CustomLog "/usr/local/redmine/log/access_log" common

    <Directory /usr/local/redmine/public/>
        Require all granted
        Options -MultiViews
        AllowOverride all
    </Directory>
</VirtualHost>
```

ポイントは <code>Require all granted</code> 。 httpd.conf のほうで <code>Require all denied</code> してるもんだからこれがないと Forbidden を拝み続ける羽目になる。

っと、 redmine.local を hosts に登録しないとこのままじゃアクセスできない。

```zsh:
sudo vim /etc/hosts
```

```
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost redmine.local
255.255.255.255	broadcasthost
::1             localhost redmine.local
fe80::1%lo0	localhost redmine.local
```

localhost になってるところに追加で redmine.local を書く。

Apache を起動。

```zsh:
sudo apachectl start
```

http://redmine.local/ にアクセスして Redmine の画面が表示されたら成功。

ログローテーション
------------------

仕上げにログローテーションの設定をする。とりあえず設定しただけでまだちゃんと動くか試せてないんだけど。
Apache 用の設定すらないのでそれも一緒に追加してやる。

```zsh:
sudo vim /etc/newsyslog.d/apache2.conf
```

```
# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/apache2/access_log 644 10  1000    *   B   /var/run/httpd.pid
/var/log/apache2/error_log  644 10  1000    *   B   /var/run/httpd.pid
```

```zsh:
sudo vim /etc/newsyslog.d/redmine.conf
```

```
# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/usr/local/redmine/log/access_log 644 10  1000    *   B   /var/run/httpd.pid
/usr/local/redmine/log/error_log  644 10  1000    *   B   /var/run/httpd.pid
/usr/local/redmine/log/production.log  644 10  1000    *   B
```