Edited at

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://myname@sample.com: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 を入れ替えれば動作します。