Bitnamiを利用してEX-CLOUDにRedmineを入れる

[EX-CLOUD](http://ex-cloud.jp/)というクラウドサーバにRedmineを入れることになりました。
Redmine単独の運用でしたしお手軽インストールな[Bitnami](https://bitnami.com/)を利用する事にしました。

今回の構築は次の記事を参考にしました。@tacchang001さんThanks! :smile: 

[こだわらないならBitNami Redmineが簡単だと感じました](http://qiita.com/tacchang001/items/ced3c5f892b406b50754)

基本的には上記の記事を参考にすれば良い(というかほぼ丸コピ…)のですが個人的なメモなどを含めて。

# はじめに
## EX-CLOUD
EX-CLOUDでは[スタンダードプランの二週間お試し](https://ex-cloud.jp/trial/)が出来ます。運用開始前の動作確認などには最適ですね。
OSはCentOS 5.11でした。

申し込みが完了したらコントロールパネルにログインします。
PLESKを利用しているようです。こちらからIPアドレスの確認が行えます。

<img width="999" alt="Screen Shot 2015-12-18 at 2.42.42 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/b63a8fda-9d04-eb3a-43f4-b54a220b289c.png">

sshでの接続アカウントの確認を行います。


> １【SSHでの接続方法】

> 1.コントロールパネルにログインします。
> 2.「システム」タブを開きます。
> 3.「ファイルマネージャ」を開きます。
> 4.「root」を開き、「user_password」を開きます。
> 5. SSH接続のためのユーザIDとパスワードをご確認いただけます。

申込時に確認方法が記載されていますが少し分かりにくいので補足します。
パスワードはサーバにプレーンテキストで保存されているのでそれを確認するようです。

## 初期設定
SSHでログインできたら扱いやすいように初期設定などを行います。

```zsh
# ユーザの追加、パスワード設定
shell> sudo /usr/sbin/adduser yousan
shell> sudo /usr/sbin/passwd yousan 

# sudo 権限付与
# 右の行のコメントを外す # %wheel        ALL=(ALL)       ALL
sudo /usr/sbin/visudo
# wheelグループに入れる
sudo /usr/sbin/usermod -G wheel yousan
```

# インストール
ダウンロードしてインストールを続けます。
## ダウンロード
準備できたらBitnamiからファイルをダウンロードしてきます。

https://bitnami.com/stack/redmine/installer

```zsh
shell> wget https://bitnami.com/redirect/to/84173/bitnami-redmine-3.2.0-0-linux-x64-installer.run
```

ちなみに僕はここで証明書の問題でコケてしまいました。調べたのですがこのCentOSだとSSLv3に対応していないバージョンのwgetのようでうまくダウンロード出来ないようです。curlでもダメでした。
結局手元に一度ダウンロードしてscpで転送しました。
(CentOSに詳しくないのですが、新しいwgetの入れ方について詳しい方いれば教えてください。できればyumで…！(ソースからも挫折した))


## ちょっとだけ前準備
CentOS(EX-Cloudだけでしょうか)はデフォルトでApache httpdが動いています。今回のRedmineを80番ポートで動かしたいのでこのデフォルトのhttpdを停止します。
そして再起動時に起動しないようにします。

```zsh
# サービスの停止
shell> sudo service httpd stop
# 再起動時にhttpdを起動しないように
shell> sudo chkconfig --del httpd
```

## 実行
落としてきた `bitnami-redmine-x.x.x-linux-x64-installer.run` を**sudoで**実行します。
(sudoは後述)

```zsh
shell> chmod +x chmod +x bitnami-redmine-3.2.0-0-linux-x64-installer.run
shell> sudo ./chmod +x bitnami-redmine-3.2.0-0-linux-x64-installer.run
```

対話モードで色々と設問されます


| 設問  | 補足  | 入力した値 |
| :------------ |:---------------| -----:|
| Please select the installation language| 全体的な言語設定です。日本語で。 | 3(日本語) |
| Subversion [Y/n] | Subersionのサーバです。svnservとか動きます。 | Y |
| PhpMyAdmin [Y/n] | 管理用のPhpMyAdminのインストールです | Y |
| Redmine : Y (Cannot be edited) | redmine本体です。絶対に入ります | Y |
| Git [Y/n] :y | Gitです。[古いという情報](http://qiita.com/tacchang001/items/ced3c5f892b406b50754#git%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)もあるのでお好みで | Y |
| フォルダを選択 [/opt/redmine-3.2.0-0] | インストールフォルダです | /opt/redmine-3.2.0-0 |
| 表示用氏名 [User Name]: | Redmineログイン用のユーザ表示名 | yousan |
| Email アドレス [user@example.com] | 同じくメールアドレス | yousan@example.com | 
| ログイン名 [user]: | ログイン名です。忘れないように。 | yousan
| パスワード : | ****** | ****** |
| データベース設定の規定値として使用する言語を選択してください | 日本語で！ | |


設問に全て答えるとインストールが始まります。結構時間が掛かりますので珈琲でも入れて待ちましょう☕️

```
しばらくお待ちください。 Bitnami Redmine Stack をお使いのコンピュータにインストール中です。

 インストール中
 0% ______________ 50% ______________ 100%
  #############################
```


## sudoでインストーラを起動する理由
今回はインストーラをroot権限で実行しました。
理由は特権ポート(80番)で動かしたかったから、です。一般ユーザ権限で動かす場合にはホームディレクトリに作成されます。
それぞれの運用ポリシーに依ると思いますが、今回は実運用させるサービスとして動かしたかったのでroot権限で/optにインストールしました。

## エラーが出る場合
```
警告: Unable to bind to the given port number. Please select another Apache Server
Port.
続けるには [Enter] キーを押してください ：
```
SubversionやMySQLを選んでいくときにエラーが出ました。
これは80番や3306といったデフォルトポートが使用されているから他のポートにしますか？ということでした。
EX-CloudのCentOSはデフォルトでhttpdが走っています。Ctrl-Zや他のターミナルから手動でオフにして続行しました。

```zsh
shell> sudo service httpd stop
```

以上です。

http://[ipaddress]/redmine
にアクセスするとRedmineが見えます。


# 補足
## パス
Redmineのプラグインなどのインストールにrakeなどを使うので、それらを使いやすいようにシンボリックリンクを張りました。

```zsh
# バージョンにとらわれない/opt/redmineをシンボリックリンクで作っておく
shell> cd /opt
shell> sudo ln -s redmine-3.2.0-0 redmine
# /home/yousan/binにライブラリ群へのリンクを張る
shell> cd ~
shell> mkdir bin
shell> ln -s /opt/redmine/ruby/bin/{bundle,rake,ruby} ./
```


## confファイルなど
ちょっと変更したいな、というときにconfファイルを探すことになったのでメモしておきます。

| 名前 | 場所 |
|:---|:---|
| apache | /opt/redmine-3.2.0-0/apache2/conf |
| redmine | /opt/redmine-3.2.0-0/apps/redmine |
| phpmyadmin | /opt/redmine-3.2.0-0/apps/phpmyadmin |
| ruby (実行ファイル) | /opt/redmine-3.2.0-0/ruby/bin |

実際の利用についてはパスにバージョン番号が含まれてしまうので`/opt/redmine`とかでシンボリックリンクを張ると良いです。

実際にconfを変更すると差分を取るのが大変なのでローカルgitとかでまるっと管理しておくと良いかなーと思いました。

## URLパスの変更
BitnamiのデフォルトだとRedmineにアクセスするには
http://203.0.113.1/redmine
となります。
(203.0.113.1はテスト例示用のアドレスです)

これを
http://redmine.example.com/
でアクセスさせたかったので変更しました。

BitnamiのRedmineではバーチャルホストを利用せずAliasを使っていたのでそれを変更しました。

```conf:redmine-3.2.0-0/apps/redmine/conf/httpd-app.conf
@@ -11,7 +11,7 @@
     PassengerEnabled on
+    SetEnv RAILS_RELATIVE_URL_ROOT "/"
-    SetEnv RAILS_RELATIVE_URL_ROOT "/redmine"
     PassengerAppRoot "/opt/redmine-3.2.0-0/apps/redmine/htdocs/"
     <IfModule pagespeed_module>
         ModPagespeedDisallow "*"

</Directory>
+PassengerPreStart http://127.0.0.1:80/
-PassengerPreStart http://127.0.0.1:80/redmine
```

```conf:redmine-3.2.0-0/apps/redmine/conf/httpd-prefix.conf
@@ -1,3 +1,4 @@
+Alias / "/opt/redmine-3.2.0-0/apps/redmine/htdocs/public/"
-Alias /redmine/ "/opt/redmine-3.2.0-0/apps/redmine/htdocs/public/"
-Alias /redmine "/opt/redmine-3.2.0-0/apps/redmine/htdocs/public"
```

# firewallの許可
CentOS7で立てたときにはファイアウォールの許可が必要でした。

```bash
> sudo firewall-cmd --add-port=80/tcp
> sudo firewall-cmd --add-port=443/tcp
> sudo firewall-cmd --add-port=80/tcp --permanent
> sudo firewall-cmd --add-port=443/tcp --permanent
```


# まとめ
実際にインストールなどの時間は色々あって10時間ぐらいかかりました。
(そのうち3時間ぐらいをwgetなどに費やしました…)
ここに書いていませんが特定のIPアドレスからはアクセスOK、他はBasic認証などといったこともやったためです。
また他に再起動時にトラブルが起きるようになってしまってその対処などでさらに時間がかかりました。
しかしながら生でRedmineを入れようとした場合に比べてかなり簡単になったな、という印象です。
昔はRubyや周辺ライブラリのバージョン違いで苦労した覚えがあったのですごく便利でした。

Bitnamiいいですね！他のパッケージも利用したいです。