Bitnami redmine を Ubuntu にインストールし、付いてくる git を使えるようにする


簡単にできるかと思ったら、結構嵌ってしまったので備忘録としてメモしたいと思います。

インストール先の環境

  • OS は Ubuntu 18.04.3。
  • イメージは bitnami-redmine-4.0.4-5-linux-x64-installer.run
  • さくら VPS 上に構築。
  • 先にインストールした apache があるため、ポートは 10080, 10443 を使う。
  • git は bitnami に付いてくるものを使う。

イメージを落としてくるところまでは出来ているものとします。

Bitnami redmine のインストール

デフォルトとの差は、subversion を No、メール送信を No、Git を Yes に設定したくらい。
インストールが長いが(特にゲージが100%に達してからが)、我慢して待つ。
途中でredmine/mariaDB のユーザ/パスワードの設定を聞かれるので、適切な値を入れる。
パスワードは英文字と数字しか入れられないようです。(ハイフンは入るかも)

インストールが終了すると http://127.0.0.1:10080/ にアクセスするように求められるので、ssh トンネルか何かを作ってアクセスする。
(と言うものの、phpmyadmin のようにローカルアドレスをチェックしていない模様。)
さくら VPS の場合はデフォルトでファイアウォールがブロックしているので、su になって


ufw allow to [Global IP] port 10443

でパケットの透過を許可するようにする。

WebDAV の設定

CGI で設定するのが本当はよいらしいのですが、今回は WebDAV を使います。
apache2 以下の conf/bitnami/bitnami.conf に以下を追加。


Alias /git /opt/redmine-4.0.4-5/git/repo
DavLockDB "/opt/redmine-4.0.4-5/apache2/var/git/DavLock"

<Location /git>
  DAV on

  AuthType Basic
  AuthName "git repository"
  AuthUserFile "/opt/redmine-4.0.4-5/git/gitpasswd"
  Require valid-user
</Location>

DavLock ファイルを touch し、ユーザを daemon に変更します。
gitpasswd に htpasswd を使ってパスワードを追加します。
(bitnami の apache2/bin/ 以下にあります。)

/opt/redmine-4.0.4-5/apps/redmine/htdocs/config/configuration.yml ファイルに


scm_git_command: /opt/redmine-4.0.4-5/git/bin/git

を設定します。

Git の設定

一番嵌ったところです。
まず、Git 用のレポジトリを作成し、グループ、ユーザを daemon に変更しておきます。
今回は /opt/redmine-4.0.4-5/git/repo というディレクトリを作成しました。
例として sample というプロジェクトを作成することにすると、


mkdir sample.git
cd sample.git
git --bare init --shared=true
git --bare update-server-info
cd ..
chown -R daemon:daemon sample.git

として初期レポジトリを作成します。4行目と最後の行が重要。

ローカルマシンに移り、


export GIT_SSL_NO_VERIFY=1

とした後、git clone https://<Global IP>:10443/git/sample.git を実行してレポジトリが取れることを確認します。取れない時はエラーログが出ているので確認します。

sample.git に中に入り、README.txt を作ってみます。


cd sample.git
touch README.txt
git add README.txt
git commit -m 'readme'

.git の下にある config の url に htpasswd で追加したユーザ名を追加します。仮に myname としたとすると、


[remote "origin"]
        url = https://[email protected]:10443/git/sample.git/

のようにサーバ名の前にユーザ名を追加します。
git push が実行できることを確認します。ブランチが指定されていないと怒られたときは git push origin master とします。

Redmine のプロジェクトを追加

最後に管理権限を持ったユーザで Redmine にログインし、「管理」タブを選択してプロジェクトを作成します。リポジトリをどうするか聞かれるので、Git を選択し、上で作ったディレクトリ名(例の場合は /opt/redmine-4.0.4-5/git/repo/sample.git)を指定します。保存後、Redmine の「リポジトリ」タグを選択します。ここで404エラーが出てくる場合はパスを確認します。

おまけ

付属する bncert-tool を使うと、Let's Encrypt で証明書を生成することが可能ですが、ポート番号が 80, 443 固定であったため、利用をあきらめ、さくらで取ったサーバ証明書を流用しました。
apache2/conf 以下の server.key, server.crt を入れ替えれば動作します。