4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ubuntu 22.04 (Raspberry Pi 4 上) に Redmine 4.2 を構築した手順

Posted at

この記事を書くに至った背景

  • 業務PC上の仮想マシン(Ubuntu 20.04)にインストールした Remine 4.2 を Raspberry Pi 4 に移したい
    • PoC としてインストールしたが、PCを持ち運ぶと接続できなくなる…
    • DBのデータをそのまま移したいので、同じDB、Redmine を利用したい
  • 慣れてる Ubuntu を利用したい(苦労の始まり)
    • 折角なら LTS がいい
    • Ubuntu 20.04 LTS は Raspberry Pi だといくつか問題があったのでパス
    • Ubuntu 22.04 LTS には OpenSSL 3系がインストールされているが、Redmine 4.2 が対応する Ruby 2.7系 のインストールには OpenSSL 1.1系が必要
      • OpenSSL をアンインストールしても良いものかわからなかった(無知)
      • RVM で強引に Ruby 2.7.2 をインストールしても、会社のプロキシに弾かれて bundle が上手く動作しない
    • 色々諦めて Podman を使ってコンテナで Redmine 4.2 を構築
      • Docker は会社の規模的に利用できない…
        • 製造業は IT エンジニア・予算が限られているのでそこらへんも考慮してほしいところ。。。
      • 今回初めてコンテナを利用…
        • きっと「そうじゃない」というところがいくつもあると予想
          • 可能であれば、ご指導ご鞭撻などよろしくお願いします
  • 「これをなぞれば実装できる」という情報が見つからず、かなり苦戦したので Qiita にまとめることに
    • 誰かの役に立てば幸いです

今回の構成

  • 環境
    • マシン: Raspberry Pi 4
      • RAM: 8GB
      • ストレージ: 256GB SSD (USBブート)
    • OS: Ubuntu 22.04 LTS
    • Redmine 4.2
    • PostgreSQL 12.9

ARMじゃないCPUでも役に立つんじゃないかと思います(未検証)

設定手順

Ubuntu 22.04 LTS はインストールされ、sudo 権限をもつユーザーでログインし、プロキシなどを通して apt ができている状態の前提で進めます。

1. Podman インストール ~ イメージの取得

  1. Podman のインストール

    $ sudo apt install podman -y
    
  2. /etc/containers/registries.conf の編集

    $ sudo nano /etc/containers/registries.conf
    

    以下 - 行を削除し、 + 行を追加

    - # unqualified-search-registries = ["example.com"]
    + unqualified-search-registries = ['docker.io']
    
  3. イメージの pull

    $ podman pull redmine:4.2
    $ podman pull postgres:12.9
    
    • pull の成否は $ podman images で確認できる

3. pod・コンテナの作成

  1. Pod の作成

    $ podman pod create -p 3000:3000,5432:5432 --name redmine-pod
    
  2. DB のコンテナを作成

    $ podman run -d \
    --name=db-redmine --pod redmine-pod \
    -e POSTGRES_USER="redmine" \
    -e POSTGRES_PASSWORD="{Password}" \
    -e POSTGRES_DB="redmine" \
    -e LANG="en_US.UTF-8" \
    -e LANGUAGE="en_US.UTF-8" \
    -e LC_ALL="en_US.UTF-8" \
    -v /var/lib/postgresql/data postgres:12.9
    
    • もし「5432ポートは利用中」という旨のエラーが出た場合は、OSで既に PostgreSQL デーモンが起動している可能性がある。OS側の PostgreSQL を停止するか、 pod ・コンテナのポート番号を変更するかのどちらかで対応できる。

    • デフォルトだとロケールが POSIX になってしまうため UTF-8 を設定

    • ただし ja_JP を直接指定するとエラーになるので en_US を指定

  3. DB のコンテナを設定

    1. DB のコンテナの bash を起動

      $ podman exec -it db-redmine bash
      
    2. ja_JP.UTF-8ロケール作成

      PostgreSQLで日本語を正しく扱う(lc_collatelc_ctypeja_JP.UTF-8 を設定する)ために必要

      1. ロケールの作成

        # localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
        
      2. ロケールの設定

        # echo "export LANG=ja_JP.utf8" >> ~/.bashrc
        # echo "export LANGUAGE=ja_JP.utf8" >> ~/.bashrc
        # echo "export LC_ALL=ja_JP.utf8" >> ~/.bashrc
        # source ~/.bashrc
        

        次のようなエラーが発生するが無視

        bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.utf8): No such file or directory
        
      3. ロケール追加の確認

        # locale
        

        次のような結果になるはず

        LANG=ja_JP.utf8
        LANGUAGE=ja_JP.utf8
        LC_CTYPE="ja_JP.utf8"
        LC_NUMERIC="ja_JP.utf8"
        LC_TIME="ja_JP.utf8"
        LC_COLLATE="ja_JP.utf8"
        LC_MONETARY="ja_JP.utf8"
        LC_MESSAGES="ja_JP.utf8"
        LC_PAPER="ja_JP.utf8"
        LC_NAME="ja_JP.utf8"
        LC_ADDRESS="ja_JP.utf8"
        LC_TELEPHONE="ja_JP.utf8"
        LC_MEASUREMENT="ja_JP.utf8"
        LC_IDENTIFICATION="ja_JP.utf8"
        LC_ALL=ja_JP.utf8
        
      4. DB コンテナの bash を閉じる

        # exit
        
  4. Redmine のコンテナを作成

    $ podman run --name=redmine -d --pod redmine-pod \
    -e REDMINE_DB_POSTGRES="127.0.0.1" \
    -e REDMINE_DB_USERNAME="redmine" \
    -e REDMINE_DB_PASSWORD="{Password}" redmine:4.2
    
  5. redmine にアクセスし、Redmine が日本語で動作しているか確認

所感

  • コンテナを使って構築すると、直接 OS 上に構築するよりも何倍も早くインストールできることがわかった
    • snap を使えるアプリであればより素早く構築できるが、バージョンの固定ができないなどの問題がある
    • コンテナの便利さの一部を体感することができ、初めてコンテナを触った感触としては上々の経験ができた
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?