【AWS】AmazonLinuxに古いバージョンのRedmineをインストールする（まとめ）

# 経緯
事情により、どうしても、古いバージョンのRedmineをインストールする必要が出てきました。
そこで、最新のAmazonLinux AMIバージョンでもインストールする手順をまとめてみました。

--独り言--
Google先生に聞くと、いろんなサイトが出てくるのですが、いい感じにまとまったサイトを見つけられなかったので、忘れないようにまとめておこうと...

# 必須要件
- AmazonLinuxAMI (ami-e3106686)
- Redmine 2.3.4
- ruby 1.9.3

| Redmine Version | サボートしているRuby Version                                 | Rails Version    |
|:----------------|:------------------------------------------------------------|:-----------------|
| 2.3.0           |ruby 1.8.72, 1.9.2, 1.9.3, 2.0.01, jruby-1.6.7, jruby-1.7.2  | Rails 3.2.13     |

# Redmineの構成
- Apache
- Passenger
- MySQL

# インストール手順
1.AWS EC2にインスタンスを作成する
AmazonLinux(Amazon Linux AMI 2015.09 (HVM), SSD Volume Type - ami-e3106686)を選択し、起動する。
　※マシンタイプは、経験上、Smallタイプ以上で、Memoryが2GBは、あったほうが良さそう（Microでも動作は可能です）
　※自動割り当てパブリック IPを有効にすること
　　→ ELBやRoute53など使わないのであれば、EIPを割り当てる
>セキュリティグループ
　sshでのアクセスは、送信元IPアドレスを絞る
　yum等でインストールを行うため、作成したインスタンスから、インターネットアクセス可能な設定にすること
 [AWS セキュリティグループに関するURL:http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-network-security.html](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-network-security.html)
</dl>


2.作成したインスタンスに、ダウンロードしたキーを利用して、SSHログイン

3.ec2-userから、rootへのパスワード認証設定に変更
<pre>
[ec2-user ~]$ sudo passwd ec2-user
Changing password for user ec2-user.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
</pre>

<pre>
[ec2-user ~]$ sudo visudo -f /etc/sudoers.d/cloud-init
\#ec2-user ALL = NOPASSWD: ALL

# User rules for ec2-user
ec2-user ALL=(ALL) ALL
</pre>
のように変更し、再度、ec2-userでログインする

4.必要なライブラリをインストールする
<pre>
\# yum install -y gcc openssl-devel zlib-devel gcc-c++ libcurl-devel
</pre>

5.gitをインストール
<pre>
\# yum install -y git

gitのインストール確認
\# git --version
</pre>

6.rubyのバージョン確認
<pre>
\# ruby -v
ruby 2.0.0p647 (2015-08-18) [x86_64-linux]
</pre>

7.rbenvインストールして、rubyのバージョンを切り替えられるようにする
<pre>
gitからインストールする
\# git clone https://github.com/sstephenson/rbenv.git /opt/rbenv
</pre>
<pre>
環境設定をprofileに書き込み
\# echo 'export RBENV_ROOT="/opt/rbenv"' >> /etc/profile.d/rbenv.sh
\# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
\# echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
</pre>

8.ruby-buildインストール
<pre>
\# git clone https://github.com/sstephenson/ruby-build.git /opt/rbenv/plugins/ruby-build

rbenvのインストール確認
\# rbenv -v
</pre>

9.ruby 1.9.3インストール
インストール可能なバージョン一覧を取得
<pre>
\# rbenv install -l
Available versions:
  1.8.6-p383
      :
  1.9.3-p550
  1.9.3-p551
  2.0.0-dev
  2.0.0-preview1
      :
</pre>
対象のruby 1.9.3の最新をインストール
<pre>
\# rbenv install 1.9.3-p551
\# rbenv rehash
\# rbenv global 1.9.3-p551
\# ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
</pre>

10.MySQLのインストール
<pre>
\# yum install -y mysql-server mysql-devel

\# /etc/init.d/mysqld start
Initializing MySQL database:  Installing MySQL system tables...
                    :
                    :
Please report any problems at http://bugs.mysql.com/
                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
</pre>
rootユーザーのパスワード変更・匿名ユーザー削除
<pre>
\# mysql -uroot -p
mysql> use mysql;
mysql> delete from user where user = '';
mysql> update user set password=password('PASSWORD') where user = 'root';
</pre>
redmine用のデータベース作成
<pre>
mysql> create database redmine_db default character set utf8;
mysql> grant all on db_redmine.* to redmine_user identified by 'password';   # PASSWORD,passwordは、変更してください
mysql> flush privileges;
</pre>

11.Apacheインストール
<pre>
\# yum install -y httpd httpd-devel
</pre>

12.ImageMagickのインストール
<pre>
\# yum install -y ImageMagick ImageMagick-devel
</pre>

13.フォントのインストール
<pre>
\#yum install -y ipa-gothic-fonts
</pre>
※詳細は、
[redmine公式URL:http://redmine.jp/faq/gantt/gantt-png-mojibake/](http://redmine.jp/faq/gantt/gantt-png-mojibake/)
を参照してください

14.bundlerのインストール
<pre>
\# gem install bundler --no-rdoc --no-ri
</pre>

15.Redmineのダウンロード
Redmineのインストールしたいバージョンをダウンロードします
[RedmineダウンロードURL:http://www.redmine.org/releases/](http://www.redmine.org/releases/)
<pre>
\# wget http://www.redmine.org/releases/redmine-2.3.4.tar.gz
\# tar zxvf redmine-2.3.4.tar.gz
\# mv redmine-2.3.4 /var/lib/redmine
</pre>

16.MySQL接続設定を行う
<pre>
\# cd /var/lib/redmine
\# cp -p config/database.yml.example config/database.yml
\# vi config/database.yml
※以下のように修正する
production:
  adapter: mysql2
  database: redmine_db
  host: localhost
  username: redmine_user
  password: password
  encoding: utf8
※paswwordは、10.で設定したものを記述する
</pre>

17.設定ファイルの作成(config/configuration.yml )
Redmineからsmtpでメール送信するための設定、日本語フォントファイルのパスを記述する
<pre>
\# cp -p config/configuration.yml.example config/configuration.yml
\# vi config/configuration.yml
※以下のように記述する
 production:
   email_delivery:
     delivery_method: :smtp
     smtp_settings:
       address: "localhost"
       port: 25
       domain: 'ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com'

  rmagick_font_path: /usr/share/fonts/ipa-gothic/ipag.ttf

※ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.comは、Public DNS名
</pre>

18.production環境を作成する
<pre>
\# bundle install --without test development
 ※/var/lib/redmine 直下で、行う
</pre>

19.Redmine初期設定、データベースのテーブル作成
<pre>
\# bundle exec rake generate_secret_token
\# RAILS_ENV=production bundle exec rake db:migrate
※rake db:migrateを実行は、MySQLが起動中であること
</pre>

20.Passengerのインストールをする
<pre>
Passenger
\# gem install passenger --no-rdoc --no-ri

Apache Passengerモジュール設定
\# passenger-install-apache2-module
※上記を実行するために、Passengerインストール後、ログアウト・ログインを行う
実行後は、画面に出力されるメッセージに従う

実行完了後、
\# passenger-install-apache2-module --snippet
を実行し、出力されたメッセージを控えておいてください

----例----
LoadModule passenger_module /opt/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/passenger-5.0.21
  PassengerDefaultRuby /opt/rbenv/versions/1.9.3-p551/bin/ruby
</IfModule>
</pre>

21.Apache Passengerの連携設定
以下のように、/etc/httpd/conf.d/passenger.confを作成する。
※/etc/httpd/conf/httpd.confに追記する形でも、構いません。
<pre>
\# vi /etc/httpd/conf.d/passenger.conf

# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
#
LoadModule passenger_module /opt/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
PassengerRoot /opt/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/passenger-5.0.21
PassengerDefaultRuby /opt/rbenv/versions/1.9.3-p551/bin/ruby

# Passengerが追加するHTTPヘッダを削除するための設定（任意）。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# 必要に応じてPassengerのチューニングのための設定を追加（任意）。
# 詳しくはPhusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)をご覧ください
。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0
</pre>
※先頭の3行は、先ほどの手順で控えておいた内容を記載する。

22.Apacheの起動
<pre>
\# service httpd start
</pre>

23.Apache上のPassengerでRedmineを実行するために、ユーザグループを変更
<pre>
\# chown -R apache:apache /var/lib/redmine
</pre>

24.ApacheをRedmine以外でも使える設定とする
※URLサブディレクトリ単位に設定することにより、複数のRedmineをたてたりすることが可能です

<pre>
\#vi /etc/httpd/conf/httpd.conf
以下のように書き換える
DocumentRoot "/var/www/html"
↓
DocumentRoot "/var/lib/redmine/public"
</pre>

25.Apacheの再起動
<pre>
シンボリックリンクを張る
\# ln -s /var/lib/redmine/public /var/www/html/redmine
Passenger設定ファイルに以下を追記する
\# /etc/httpd/conf.d/passenger.conf

RackBaseURI /redmine

再起動
\# /etc/init.d/httpd graceful
</pre>

26.Redmineへアクセスする
ec2のPublic DNS名を使って、ブラウザで、以下のようにアクセスする
http\://ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com/redmine/
![Redmine_image_top.png](https://qiita-image-store.s3.amazonaws.com/0/98276/be60901f-4ebf-613d-5664-74cff2f9c793.png)

※ログイン：admin/admin

ログイン完了後、以下のページに従って、初期設定を行ってください
[Redmine初期設定についてURL:http://redmine.jp/tech_note/first-step/admin/](http://redmine.jp/tech_note/first-step/admin/)

27.MySQLと、Apacheの自動起動設定を行う
<pre>
\# chkconfig mysqld on
\# chkconfig httpd on
</pre>

これで、Redmineの構築完了となります
おつかれさまでした