やはり本家のWikiを見て設定するのがいいと思います。
もはやバージョンコントロールといえばsubversionよりもGitらしい(参考)。
そしてGitといえばGitHub。
privateなプロジェクトで使用するために、GitHubの有料リポジトリを借りてもいいのだけど、まずはGitHubクローンのようなものを使って慣れていこうということで、一番人気の高そうなGitLabを使ってみた。
インストール
GitLabは開発がとても活発で変わる可能性が高いため、プロジェクトページの手順を見るのが一番だと思うけど、少し違う手順でインストールしたところもあるのでメモしておく。サーバーはさくらVPSのCentOS 6.2。
CentOS6にGitLabをインストールする方法
を主に参考にした。
Gitインストール
さくらVPSには最初から入っていたと思う。なければyumでインストール。sudo yum install git
ユーザーを作成
gitoliteとgitlabのユーザーを分けずにgitというユーザーだけ作って設定した。権限を気にするところが減って少し楽だった。
useradd git passwd gitパスワードを設定したら、gitでログイン。
su - gitgit configも必要になるようなので、設定しておく。
git config --global user.email "gitadmin@example.com" git config --global user.name "gitadmin"
Gitolite設定
以降だいたいgitユーザーで作業。ソースを持ってきて、
git clone git://github.com/sitaramc/gitoliteSSHキーを作成。
ssh-keygen -t rsa -P "" -f ~/.ssh/gitadminファイル名(-fで指定してる)は何でも。
gitolite/install gitolite/src/gitolite setup -pk ~/.ssh/gitadmin.pub
~/.gitolite.rc
のUMASKを0077→0007へ変更。
~/.ssh/configを
Host localhost HostName localhost IdentityFile ~/.ssh/gitadminのように作成し、保存。
chmod 600 ~/.ssh/configで権限を変更しておく。
Rubyインストール
1.9が必要。今回はrvmでインストールした。途中、readlineがないと言われたので、
rvm pkg install readlineでインストールした。
パッケージ
自分の環境ではこのあたりが必要だった。足りない場合はあとでbundle installするとき注意されるからわかるはず。
sudo yum install libxml2-devel libxslt-devel libicu-devel sqlite-devel redisredisをyumでインストールするにはEPELが必要。
yumじゃなくてもいいけど、yumの方が簡単。
redisを起動
一応、自動起動を設定しておく。sudo /sbin/chkconfig --level 2345 redis onサービス起動。
sudo /etc/init.d/redis start
GitLabをインストール
masterから入れたが、安定性を求めるならstableを入れたほうがいいだろう。git clone git://github.com/gitlabhq/gitlabhq.git移動して、bundle install。
cd gitlabhq bundle install --path vendor/bundle足りないパッケージがあるとここで注意されると思うので入れる。
DBはMySQLにした。
cp config/database.yml.mysql config/database.ymlして適切に編集。
cp config/gitlab.yml.example config/gitlab.ymlgitユーザーを作ったので、git_hostのところはそのままでよかった。
ユーザー名など違う場合は変更する。
web、emailのところを編集した。(emailは以下メール設定を参照)
bundle exec rake gitlab:app:setup RAILS_ENV=productionDBセットアップや初期データ作成が実行される。
bundle exec rake gitlab:app:status RAILS_ENV=productionで設定が正しいかどうか確認できる。
(ただし、UMASK for .gitolite.rc is 0007のところはチェックの方に問題があるようで、正しく設定されていてもエラーになった。)
passenger
passenger + apacheで動かした。apacheが入っていなければ、sudo yum install httpd-develで入れておく。
rvmでrubyをインストールしたので、
rvmsudo gem install passengerでpassnger gemをインストールして、cdでホームディレクトリに移動し、
rvmsudo passenger-install-apache2-moduleでpassengerをインストール。(ホームディレクトリじゃないとgemを見つけてくれなかった。)
あとは手順どおりにすればOK。
メール送信の設定
新しいissueが登録されたり、wallに書き込まれたりしたときはメールが飛ぶはずなのだけど、どうやって飛ばせばいいかわからず苦労した。
メール送信には、jobキューを処理するresqueが使われていた。resqueを起動していなくても
logにもどこにもエラーが出ないので気づかなかった。
GitLabのようなアプリにresqueを使うのはオーバーな気がするんだけど、なんで使ってるのだろう?
1.メール設定
メール送信にはGmailを使った。config/gitlab.yml
を以下のように編集。
(config.action_mailer.smtp_settingsなどを設定する必要はないみたい)
email: from: notify@local.host # なんでも。メールのFromに書かれるアドレス。 address: smtp.gmail.com port: 587 user_name: yourname@gmail.com # @gmail.comは省略できるはず password: yourpasswordauthenticationやdomainは指定しなくても動いた。
Gmailじゃなくて普通のメールでも同様に、通常Action Mailerで
config.action_mailer.smtp_settingsを設定するような項目を書けばOK。
2.resqueを起動
gitlabhqディレクトリで、./resque.shを実行。
resqueを起動したままでgitlab.ymlの設定を変えても反映されないので注意。
変更したあとresqueを起動し直す。
stopの仕方がわからないので、プロセスをkillしてから、./resque.shでまた起動しなおしたりした。
もうひとつ注意点。resqueを動かしていないと、未実行のキューがたまったままになっている。
Adminでユーザーの新規作成をしたとき、本来飛ぶはずのメールが飛ばないと、new_user_emailという名前でキューにたまっているのだけど、そこでパスワードが見えてしまう。(通常はメールに初期パスワードがメールに書かれて飛ぶ。)
初期パスワードは変えるようにということなのかもしれないが、知らないとちょっとこわい動作だ。ちなみにDBには、パスワードはちゃんとハッシュ化されて保存されている。
その他
プロジェクトごとのWikiで、「New Page」のようなボタンがないから新しいページを作れないんじゃないかと思ってしまったが、そんなことはなかった。編集画面に表示されるとおり、
[Link Title](page-slug)
の形で書けば新しいページが作れた。
[新しいページ](新しいページ)みたいに日本語でもいける。
まだ使い始めたばかりだが、軽快だし機能も充実していて、かなり好印象。
このあたりを見てGitの使い方を覚えつつ、使ってみようと思う。
resqueの起動issueにやり方が書いてありましたよ!
返信削除↓ここ
https://github.com/gitlabhq/gitlabhq/issues/1068#issuecomment-6923643
↓僕のブログの記事(Gitlabのメール設定)
http://yujiroarai.com/?p=64
araiさん、コメントありがとうございます。
返信削除参考になりました。
GitLabは進化が速くて面白いですね。
こんなレベルの開発ができるようになりたいものです。