Raspberry Pi3B+でRedmineサーバーを構築してみた

# 概要
RaspberryPi3B+でRedmineを構築し、自宅で24H365Dでの常時稼働をさせます。
今回は、3B+から可能になったMicroSD以外のストレージからの起動を利用して、MicroSDを利用せずに64GBの余っていたUSBメモリに全部入れて動かします。
## 構築後の状態
Raspbianを使わず、Ubuntu20.04LTS(64bit)を使用します。
（せっかくarm64対応なので・・・）
## 所感
ラズパイで動くからしょうがないよね。と思うぐらい投稿や設定などの反映などあらゆる箇所で「ぐぬぬぬ」というぐらい待たされます。ラズパイ4ならもっと速いと思うのですが、この辺りを留意してもらえれば読み進めてください。

# 必要なもの
* RaspberryPi3B+
 * 最初の設定時は、キーボード(USB)とHDMI出力でディスプレイ、有線LANが必要です。
* USBメモリ(64GB)
* 別途macOSやWindows、LinuxなどのPCが必要です。（今回はWindows10のPCを使用してます）
 * USBメモリにOSを入れるとき
 * SSHで接続するとき

# やってみる
## STEP1：USBメモリにUbuntu20.04LTSを書き込む
まずは、USBメモリにUbuntu20.04LTSを入れます。

RaspberryPiのサイトに行き、Pi-ImagerをDLしてWindowsPCにインストールします。
https://www.raspberrypi.org/software/
![rasp3bp001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/91b82799-8487-9b35-1d0c-07097a0dc675.png)

Pi-Imagerをインストールしたら、USBメモリをPCにさして、Pi-Imagerを起動します。
>Pi-Imager v1.6.1
![rasp3bp002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/0a715801-c11c-b592-4900-b4402ba755e9.jpeg)

「CHOOSE OS」では、「other general purpose OS」-「Ubuntu」-「Ubuntu Server20.04.2LTS（RPi3/4/400）[64bit]
「CHOOSE STORAGE」では、挿入したUSBメモリを選択します。
「WRITE」ボタンを押して、書き込みます。
※ざっと20分ぐらいかかるでしょうか・・・

## STEP2：Raspberry Pi3B+にUbuntuセットアップ

STEP1で作成したUSBメモリをRaspberryPi3B+のUSBポートに挿して電源ONにします。
（記載してませんが、HDMIにディスプレイ、USBにキーボード、LANポートにLANケーブルを接続しておいてください）
→よくやらかしますが、microSDは抜いておいてください。（どっちが起動してるかわからなくなるので）

起動したら、ログイン画面が表示されます。

```shell
Ubuntu 20.04.01 LTS ubuntu tty1

ubuntu login: ubuntu
Password:
```

初回は、idが「ubuntu」でpasswordも「ubuntu」です。
ログインすると、そのままpasswordの変更を要求されますので、変更してください。

**★Ubuntuでは、初期状態でSSHがonになっているので、これ以降は、RaspberryPi側のディスプレイ、キーボードを抜いて、ほかのPCからTeraterm等でSSH接続して進めることができます。**

OSをひとまず最新にします。（Pi-Imagerで最新を入れても最新ではないです）

```shell
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt dist-upgrade

$ sudo reboot
```

## STEP3：諸々設定する
RedmineセットアップでSwap領域が足りない（3B+は1GBのメモリしかない）とか言われますので、いろいろ設定します。

### SWAP領域を4GB確保する
下記を実行して、Swap領域を作成します。（4GBも要らないので2GBでもいいです）

```shell
$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
```

一応、上記で再起動してもSwap領域が確保された状態になります。
Swap領域があるかは下記で確認します。

```shell
$ free
```

### Hostnameを変更する
Hostnameの確認

```shell
$ sudo hostname
```

Hostnameを変更する。今回は「rasp3bp」にしてみる。

```shell
$ sudo hostnamectl set-hostname rasp3bp
$ sudo hostnamectl

   Static hostname: rasp3bp
         Icon name: computer
        Machine ID: 00000000000000000000000000000000
           Boot ID: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  Operating System: Ubuntu 20.04.2 LTS
            Kernel: Linux 5.4.0-1033-raspi
      Architecture: arm64
```

### Localeを変更する
Redmineで日本語の問題が出るので、ここでいろいろしておく。

```shell
$ sudo apt -y install language-pack-ja-base language-pack-ja
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ sudo localectl

   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
```

### TimezoneをAsia/Tokyoにする
UTCになってるので、日本時間にする

```shell
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo timedatectl

               Local time: Wed 2021-04-14 21:27:19 JST
           Universal time: Wed 2021-04-14 12:27:19 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
```

## STEP4：Redmineをインストールする
いざ、Redmineをインストールしますが、個人で使うのでSqliteを使います。（複数人同時接続では推奨されてない）

※インストールには数時間かかるので耐えましょう。

```shell
$ sudo apt install redmine-sqlite
$ sudo apt install apache2 libapache2-mod-passenger bundler imagemagick libmagick++-dev
```

000-default.confを編集します。

```shell
$ sudo vi /etc/apache2/sites-available/000-default.conf
```

「redmine-sqlite」を使ってインストールすると、redmineは「/usr/lib/redmine」に配置されます。
併せて、書き換えます。

```vim:000-default.conf
<VirtualHost *:80>
    DocumentRoot /usr/share/redmine/public
    PassengerHighPerformance on
    <Directory /usr/share/redmine/public>
	    Allow from all
	    Options -MultiViews
	    Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```

続いて、passenger.confを編集します。

```shell
$ sudo vi /etc/apache2/mods-available/passenger.conf
```

```vim:passenger.conf
<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
  PassengerDefaultUser www-data
  RailsBaseURI /redmine
</IfModule>
```

最後に、Apache2.4を再起動します。

```shell
$ sudo service apache2 restart
```

##STEP5:Redmineを設定する
Apacheを再起動後、Passengerが起動し終わるまで結構かかります。（10分とかｗ）
しっかり時間をおいてから、Redmineへアクセスします。

※今回は、サブディレクトリでredmineを提供してません。
Webブラウザで下記のように入力してアクセスしてみてください。

```
http://（サーバーのIP）/
```

無事RedmineのTOP画面が出てきたら、Redmineを使い始めます。

REDMINE.JPのページを参考にしてユーザーを作ったり、プロジェクトを作ったりして使い始めます。
https://redmine.jp/tech_note/first-step/admin/

# あとがき
今回、RaspberryPi3B+を購入して、全然使っていなかったことからRedmineを立ち上げる流れになったのですが、Ubuntu20.04にRedmine4.1を入れる手順を進めても途中で止まってしまい、Raspbianで試しても止まってしまう（半日以上放置してたんですがすすまない）
redmine-sqliteという方法でインストールしようと思ったが、raspbianでは提供されておらず、残った手段を探してこうなったという感じです。