AWSのRHEL8インスタンスにRedmine構築した時の備忘録

#はじめに

　みなさま初めまして弐進(ﾆｼﾝ)と申します。長い1年間の社内研修を終えたぺーぺーのSEです。
今回は配属1週間目にしてAWSを用いてRedmineの構築を命じられ、四苦八苦しながらも達成したので構築に際して参考にした記事とそれ以外に詰まったところメモを自身の備忘録代わりに記事にしていきます。

#目次
- 構築の条件
- 手順1 SSH接続
- 手順2 下準備
- 手順3 環境構築

#構築の条件
　今回はIaaSでイチからRedmineを構築していきます。AWSのAMIにはbitnamiのオールインワンパッケージが存在しますが今回はこれを使いません。上司からの指定+Linuxへの知見を深めるためです。（正直、できるなら楽をしたかったのですが……笑）その他指定された条件は以下の通りです。
- OS：RHEL8
- DB：MySQL8
- バックアップ：1回/日　7世代分をRedmineと同一インスタンス内にとる
- インスタンスは用意したプライベートサブネット内に作成してSSHは踏み台インスタンスからのみ許可
~~　指定されたこと以外はなるべく楽をしました。~~

#手順1 SSH接続
　いきなりここで躓きました。単純なクライアントtoサーバーのSSH接続は経験があったのですが、踏み台サーバーを通して目的のサーバーに接続した試しはありません。最初は踏み台サーバーに鍵をおいて踏み台サーバー上でSSHコマンドぶっぱすればいいでしょとかいう、~~セキュリティホールの権化のような~~単純な発想になりかけたのですが思いとどまり、クライアントに鍵を置いた状態で接続する方法をさがしました。
　***ProxyCommand***という便利なモノを発見。これを使えば楽に多段SSHができました。こちらの記事を参考させていただいたので、手順の説明に代えて記事のリンクを貼っておきます。
> 参考1: [ProxyCommandでsshの多段接続をする - Qiita](https://qiita.com/tomitz/items/89d7903fe42250a94e92)
> 参考2: [多段SSH, ポートフォワーディングの方法 - わくわくBank](https://www.wakuwakubank.com/posts/681-ssh-portforward-multistage/)

#手順2 下準備
　RubyやMySQL、Redmineのインストールの前に必要なパッケージのインストールを済ませます。Apacheもあらかじめインストールしておきます。
##SELinuxの無効化
　AWSのRHEL8パッケージではSElinuxが有効化されていますので、こちら無効化しておきます。エディタで`/etc/sysconfig/selinux`を開いて、`SELINUX=disabled`に書き換えてください。
##dnfのアップデート
　のちのちのインストールでエラーが出ることがあったので、dnfをアップデートします。

```
$ dnf --releasever=8 -y update dnf
```

##開発ツールやEPELなどのインストール
　開発ツールのインストールをします。

```
$ dnf -y groupinstall "Development Tools"
```

　続けてEPELのインストールをします。EPELのインストール前にDnf(yum) updateすると rhui-codeready-builder-for-rhel-8-rhui-rpm が codeready-builder-for-rhel-8-rhui-rpm として登録されてしまい、インストールに失敗するので注意してください。(私はここで詰まりました。。。）

```
$ dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ dnf config-manager --set-enabled rhui-codeready-builder-for-rhel-8-rhui-rpms
```

　RubyとPassengerのインストールに必要なツールをインストールします。

```
$ dnf -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
```

　ImageMagickのインストールをします。

```
$ dnf -y install ImageMagick ImageMagick-devel
```

　Redmineで使う日本語フォントをIPAからダウンロードして展開します。

```
$ curl -OL https://ipafont.ipa.go.jp/IPAexfont/ipaexg00401.zip
$ unzip ipaexg00401.zip -d /usr/share/fonts/
```

　Apacheのインストールをして、下準備は完了です。

```
$ dnf -y install httpd httpd-devel
```

> 参考:3 [CentOS 8.0 でパッケージがインストールできなくなったら - Qiita](https://qiita.com/tom-sato/items/ab8e3c477672cf0134cf)

#手順3 環境構築
　環境構築とざっくりまとめましたが、RubyのインストールからRedmineのインストールに至るまで、（インストールするバージョンの違いはあれど）このあとに紹介する記事の手順に沿って行いました。ただ、Redmineの設定ファイル`/opt/redmine-4.1.0/config/configuration.yml`の編集内容は、先にインストールしておいたIPAの日本語フォントを使うので以下のようになります。

```configuration.yml
  production:
    email_delivery:
      delivery_method: :smtp
      smtp_settings:
        address: "localhost"
        port: 25
        domain: 'myhost.com'

  rmagick_font_path: /usr/share/fonts/ipaexg00401/ipaexg.ttf
```

インスタンスサイズ（メモリサイズ）が小さいとPassengerのインストールが失敗することがあります。その場合はSWAP領域を用意するか、それでもダメな時はいっそのことスケールアップすることで解決します。（私はSWAPファイル作成してもうんともすんとも言わなかったので、スケールアップしました。初期はt2.microサイズでした。メモリは2GiBはあるほうがいいと思います）

> 参考4: [Redmine 3.2 のインストール手順 (CentOS 7, Apache 2.4, MySQL) | WEB ARCH LABO](https://weblabo.oscasierra.net/install-redmine32-centos7-1/)
> 参考5: [rbenv+ruby-buildをインストールする手順 (CentOS/RedHat) | WEB ARCH LABO](https://weblabo.oscasierra.net/install-rbenv-rubybuild-to-redhat/)
> 参考6: [Rubyをrbenv+ruby-buildを利用してCentOSにインストールする手順 | WEB ARCH LABO](https://weblabo.oscasierra.net/rbenv-install-ruby-to-redhat-1/)
> 参考7: [rbenv を使って ruby をインストールする(CentOS編) - Qiita](https://qiita.com/inouet/items/478f4228dbbcd442bfe8)

#最後のひとこと
　AWSのRHEL8にRedmineをインストールするにあたって詰まったところを補足する形で、参考にした記事をまとめました。最低限の備忘録にはなったと思います。なにかお気づきの点あればコメントくださると幸いです。