AWSをいじり倒す(番外編.LightSailのredmineにgit設定)
LightSailで建てたRedmineの中にGitを入れ込むという設定。
別にLightSailがEC2(redmineの入ったAMI利用)であってもよい。設定は一緒。
これらの特徴はbitnamiのRedmineを利用するという点にある。
bitnami式Redmineは色々制約があるので、大半のネット記事を鵜呑みにするとうまくいかず、死ぬほど紆余曲折したのでメモしておく。
最後は妥協しているので参考程度に。
bitmani式ではなくて自前で構築する場合は、この記事は逆に参考にならんので注意
環境は
Ubuntu 16.04.6
Bitnami Redmine 4.1.0-8
gitのインストール
bitnami式redmineにgitは最初から入っているので不要。
リポジトリ を準備。
作業ディレクトリは適当に以下とした。
/home/bitnami/git/repos
リポジトリ を作成
なお、pushするたびにupdate-server-infoしないといけないらしいので
それを回避する設定もいれておく
実行権限も付与
bitnamiで建てたRedmineの、Apacheやwww-なんとかみたいなユーザ相当はdaemon。
それはこのサイトをみて知った。
Amazon Lightsailの諸々ファイル置場 | It works for me
他にもログの場所など有益な情報がまとまっていてありがたい
gitでやり取りする時に、必ずユーザとパスワードを要求したいので、その準備。
-bをつけて1ラインで登録してしまわないとバグるみたいな記載をみたので念の為書いておく
Apache用コンフィグの作成
bitnami式redmineの裏で動いているのはApache。
主にこのディレクトリ 配下にいろんなconfigが入っている
/opt/bitnami/apache2/conf/
この配下で作業を行っていく
git.confを新たに作成。
まずは最小構成の内容をgit.confに記載する。
このgit.confを読み込んでもらうために、同一ディレクトリにあるhttpd.confの最終行に
を追加
これで最小構成が完成。システムのリスタートを行う。
bitnami式redmineのリスタートコマンドは以下。
いったんここまででテスト。
ローカル環境にて、cloneを試す。
ユーザ名入力
パスワード入力
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
この返答がくればOK
ちなみに、まだcloneはできてもpushはできない。
[master 452f009] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 testfile
error: Cannot access URL https://example.com/git/test.git/, return code 22
fatal: git-http-push failed
error: failed to push some refs to 'https://example.com/git/test.git'
pushするための設定
pushを行うためには、git.confに追加の設定が必要でそのやり方は2通りある
1.git-http-backendを使う
2.WebDavを使う
のどちらかを行う必要がある。
なお、SSHは使わずにhttpでなんとかしたい、というのが前提。
(鍵管理したくないので)
さて、git-http-backendを有効化する手順は巷にたくさん書いてあるが、
それをそのまま入れると失敗するのが最大のハマりポイント。
具体的にはこういうやつだ
上3行を追加し、取り消し線のところを削除
他にもなんだか装飾されたコンフィグが公開されているが、最低限これだけでいい。
リスタートしてconfファイルを読み込む
すると、ローカルで実行した結果がこうなる
fatal: repository 'https://example.com/git/test.git/' not found
ちなみに、cloneも失敗するようになる。
これが何故なのかわからず死ぬほど時間を使った。
結論はbitnami式redmine環境特有のものだった。
自分なりに調べた結果を言葉にすると
bitnami式は動作するための最小限のモジュールしかインストールしていない
かつ、通常インストールされる場所とは別のディレクトリにモジュールを置いているのでapt-get等で追加インストールしてもそれだけでは反映されない。
なので、普通に動かないし、追加でpkgインストールしても動かないという二重苦。
ちなみに2番目のDAVの設定にも手を出してみたがこれまた沼が深そうで諦めた。
また、手探りでa2enmod cgiコマンド打ったあと再起動したらredmineが立ち上がらなくなり、ubuntuのデフォルトページが表示されるようになってしまった。クソ焦って慌てて復旧させたが、configのいかんところが書き変わってしまったんだろうか・・・。若干トラウマ
さて、試行錯誤を経てたどり着いたのがこのブログ
bitnami redmine と同じホストで git 連携する - criticablog
完全ではないが、動くところまではもっていくことができた。
以下にコピペな部分もあるが手順を書いておく。
fcgiwrapインストール
ユーザグループ設定
git.confを大改造。Subversionとかは使わないので自分用に多少アレンジ
モジュールの配置
そして
すると、無事clone/pushどちらも動いた。
先人の知恵さまさま・・・!
これで、http通信+password要求でgitが使える環境が完成。
redmineとgitの連携は
あたりをみながら設定してなんなく動いた。
で
ここからはうまくいっていなのでただの参考記事
どうもredmineで作ったID/PASSをgitの認証に使うことができるとのこと
これは便利と思って試そうとして死んだ。
先人様のサイトにあるこのconfigをgit.confに追加でぶちこむ。
なお、DbPassは
/opt/bitnami/apps/redmine/htdocs/config/database.yml
に書いてある。
これでclone実行するとこんな感じのエラー
Cloning into 'test'...
fatal: unable to access 'https://example.com/git/test.git/': The requested URL returned error: 500
/opt/bitnami/apache2/logs/error_logをみるとこんなことが書いてある
[Mon May 25 14:36:04.034645 2020] [perl:error] [pid 21399:tid 139890079483648] [client 118.2.90.3:54909] install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /opt/bitnami/git/lib/site_perl/5.16.3 /opt/bitnami/perl/lib/5.16.3/x86_64-linux-thread-multi /opt/bitnami/perl/lib/5.16.3 /opt/bitnami/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi /opt/bitnami/perl/lib/site_perl/5.16.3 /opt/bitnami/perl/lib/5.16.3/x86_64-linux-thread-multi /opt/bitnami/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi /bitnami/ruby25stack-linux-x64/output/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi /bitnami/ruby25stack-linux-x64/output/perl/lib/site_perl/5.16.3 /bitnami/ruby25stack-linux-x64/output/perl/lib/5.16.3/x86_64-linux-thread-multi /bitnami/ruby25stack-linux-x64/output/perl/lib/5.16.3 . /opt/bitnami/apache2) at (eval 6) line 3.\nPerhaps the DBD::mysql perl module hasn't been fully installed,\nor perhaps the capitalisation of 'mysql' isn't right.\nAvailable drivers: DBM, ExampleP, File, Gofer, Proxy, Sponge.\n at /opt/bitnami/perl/lib/site_perl/5.16.3/Apache/Authn/Redmine.pm line 557.\n
太字のところに着目
DBD/mysql.pmが見つからねーよ、と。
これが先に説明したbitnami特有のモジュール足りてないアレ。
これについて戦っている記事を2つ見つけた。
git - install_driver(mysql) failed: Can't locate DBD/mysql.pm - Stack Overflow
なんでこのエラーがでるかの仕組みがしっかりと書いてあるが、
悲しいかなこのサイトの結論は
「サポートに繰り返し言ってくしかないね!」
こっちは気合で解決しましたと書いてある
過去サーバから設定ファイルをコピーしてきて、config書き換えたらうまくいったんだと。
試しにファイルをいくつかそれっぽいコピーしてみたけど、
そこまで知識がないので泥沼化して諦めた。つら。
どうも昔のredmineにはちゃんと入ってたモジュールっぽいんだよなぁ。
現時点の最新(4.1.0-8)には含まれてないのは謎