個人的な開発サーバを建てる
Preface
次のような機能が欲しい.
- フロントエンドのあるGitのリモートリポジトリ
- BTS
- ToDo管理ツール
どれもサービスとして提供されているものなので,それを使えばいい話ではあるのだが,好き勝手絶頂に使いたいので,自分でホストすることにする.
具体的には,以下のプロダクトを使うことにした.
- Rhodecode
- Redmine
- Tracs
Products
1. Rhodecode
Pythonで実装されたSCMで,WebUIを備えている.
元々はMercurial専用だったが,後にGitにも対応した.
以前所属していた会社で,SCMをGitに置き換える際,Githubのような事が実現可能でLDAP連携機能を備えているものを探しているときにたどり着いた.GitoliteやGitlabなども候補にあったが,WebUIとLDAPの2つを満たしていたのは当時Rhodecodeだけだった記憶がある.(GitoliteはWebUIがない.GitlabはLDAP対応がまだされていなかったと記憶している)
また,Rhodecodeの利点として,リポジトリグループという機能がある.これはあるプロジェクトの構成要素であるような複数のリポジトリをグループに所属させることで,リポジトリの関係に見通しを立てやすくするという点で役にたった.さらに,Rhodecodeのグループは階層構造を持つことができ,その階層はURLにも反映される.
今日に至っては,Gitだけを扱うのであればGitlabのほうがいいような気がするが,それは今後試すとして,まずはRhodecodeを導入しよう.
2. Redmine
説明不要のBTSだろう.RoRで実装されている.
issueはチケットとして,ここで管理する.また,markdown記法が使えるWikiを求めた.
上の要件だけであれば,それこそRhodecodeをGitlabにすれば全部付いてくるのだが,仕事や個人プロジェクトで使う以外にも,友人と情報共有したり大人数でやる飲み会の予定調整をするときなどにも使っているので,Redmineを導入する.
3. Tracs
GTDで利用できるタスク管理ツールで,RoRで実装されている.
ToDo管理はToodledoを使っていて,大変気に入っているのだが,RoRで実装されたオープンソースのToDo管理プロダクトがあったのでとりあえず入れてみたくなった.コラボレーション機能がついていれば良いのだが,サイトを流し読みした限り,ついていないようだ.
Architecture
RhodecodeはPaste,RedmineとTracksはUnicornで動作させるが,同一サーバでの実行となるので,名前ベースのバーチャルホストを利用してHTTP/HTTPSアクセスができるようにしたい.
用途的にApacheは重すぎるので,Nginxを使うことにした.
具体的には,以下のような構成をとる.
導入した際の手順は,ここにまとめて書くと長くなるので,個別の記事に分けることにした.
書き終えたものから,ここに参照を追加していく.