Redmine のインストールは面倒

基本的に Redmine のインストールは面倒なイメージがある。 特に apt を使わずにインストールした場合などとても煩雑だ。 ここではすべて apt を使用してパッケージからインストールするものとし、且つ MySQL は utf8mb4 問題 (MySQL はデフォルトの utf8 だと絵文字などの 4 バイト文字が入力できない) があるので避け、最も簡単な SQLite を使用することにする。 SQLite だとデータベースがただのファイルなのでバックアップがとても簡単だし、ユーザという概念もないのでユーザを作成したりパスワードを設定する必要もない。 既に MySQL / PostgreSQL で構築されている Redmine のデータを移行するのなら話は別だが、大体の場合 SQLite で事足りるはずだ。

インストール

sudo apt install redmine-sqlite

途中画面が切り替わり以下の質問をしてくるので「はい」を選択すると DB が作成され Redmine のマイグレーションファイルが走る:

redmine/instances/default パッケージを使用する前に、データベースをインストールして設定する必要があります。これは必要に応じて dbconfig-common で処理することもできます。 あなたが上級データベース管理者で、手動でこの設定を実行することがわかっている場合、あるいはデータベースのインストールと設定が完了している場合は、このオプションを拒否するべきです。何をすべきかの詳細は、/usr/share/doc/redmine/instances/default で提供されている可能性が最も高いです。 そうでなければ、おそらくこのオプションを選ぶべきです。 redmine/instances/default 用のデータベースを dbconfig-common で設定しますか?

更に以下も必要なので apt で入れる:

sudo apt install apache2 libapache2-mod-passenger bundler imagemagick libmagick++-dev

redmine-sqlite パッケージでインストールされた Redmine は /usr/share/redmine にある。 以下に示すのはサブドメインなしでデプロイする場合だがサブドメイン (たとえば http://redmine.hoge.com など) に配置する場合は適宜読み替えて欲しい:

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

<VirtualHost *:80>
    DocumentRoot /usr/share/redmine/public
    PassengerHighPerformance on
    <Directory /usr/share/redmine/public>
            AllowOverride None
            Options None
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

また sudo vi /etc/apache2/mods-available/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>

Apache を再起動する:

sudo service apache2 restart

http://localhost/ (または適切なドメイン) にアクセスし Redmine の画面が表示されることを確認する。

バックアップ

Redmine の公式ドキュメントに示されている通り Redmine のインストールディレクトリ直下の files ディレクトリと SQLite ファイル (/var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default) をコピーするだけなので楽だ。