あっちに行ったりこっちに来たりしているので、外部からアクセスできる Redmine を立てる事にした。
構成は次のようにしたい。
[既存SSLありWebサーバ(nginx) — Reverse Proxy] — [Redmine(apache+passenger)]
Redmineの導入方法はググれば沢山出てくるのだが、とにかく最初に引っかかるのが SELinux を無効に、という一文。それだけは避けたい。
apache は自分ではビルドしない。自分でビルドするとアップデートに手間がかかってしまう。
一方 Redmine はパッケージではなく、普通に(?)導入する。
SSLありのnginxを有効に使うために、名前による仮想ホストを構成するのではなく、Redmineのパスを別に切る事で他のサービスと同居させたい。
一応できたのだが、次のところでハマった。
1. Redmineの実行ユーザーが nobody だった。
Redmineの各ファイル・ディレクトリの owner を root のままにして、ファイル格納場所・作業ディレクトリ・プラグインキャッシュの3カ所だけ apache にしたら上手く動かない。nobody に変えたら上手く動作した。
2. 1MBを越えるファイルがアップロードできない。
nginxの設定ファイルに次の行必須(Redmineがデフォルト設定の場合)
client_max_body_size 5m;
ちょっと多めの6mでも良いかも。
3. Reverse Proxy の設定をちゃんとしないとPOSTするときURLが化ける
ちゃんと設定を保存していないのでこれが原因かどうか自信がないが、次の設定が nginx にないと
proxy_buffering off;
POST先が
https://ssl.example.com/redmine/login
のはずが
https://ssl.example.com%2C%20ssl.example.com/redmine/login
になってしまう。
ログインしようとすると「そんなサイトはありません」と言われる。ログイン自体は完了していて、ホスト名を手で直すと参照は自由にできるが、POSTする度にエラーになる。