2012年7月26日木曜日

GitLabをインストールしてGmailでメール送信まで はてなブックマーク

[2012/12/1 記] 4ヶ月ほど前の記事ですが、既にかなり進化していますので、
やはり本家の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 - git
git configも必要になるようなので、設定しておく。
git config --global user.email "gitadmin@example.com"
git config --global user.name "gitadmin"

Gitolite設定

以降だいたいgitユーザーで作業。
ソースを持ってきて、
git clone git://github.com/sitaramc/gitolite
SSHキーを作成。
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 redis
redisを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.yml
gitユーザーを作ったので、git_hostのところはそのままでよかった。
ユーザー名など違う場合は変更する。
web、emailのところを編集した。(emailは以下メール設定を参照)

bundle exec rake gitlab:app:setup RAILS_ENV=production
DBセットアップや初期データ作成が実行される。

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: yourpassword
authenticationや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の使い方を覚えつつ、使ってみようと思う。

2012年7月19日木曜日

最近読んだ本、読んでいる本 はてなブックマーク

グーグル ネット覇者の真実



600ページを超える大作。ものすごく面白かった。

ラリー・ペイジやサーゲイ・ブリンの天才ぶりと、常識にとらわれない自由な発想が印象に残った。
2人とも子どもの自主性を重んじる「モンテッソーリ教育」を受けたそうで、その影響が大きいのではないかと。

Don't be Evilという標語の誕生と、その標語で苦しむことになるいくつかのエピソード(中国、ブックサーチ、プライバシーの問題など)も書かれているが、基本的には善意の会社なのだと思う。ラリー・ペイジが外部の批判に苛立つ気持ちは少しわかるような気がした。

Googleってやっぱり特別な会社なんだなと改めて感じていると、この本にも何度も名前の出てくるマリッサ・メイヤーが、米ヤフーのCEOになるという。日本では考えられない人事。
この特別な会社で、エンジニア至上主義の中でリーダーとしてやってきたマリッサ・メイヤーが、CEOとしてヤフーを立て直せるのかどうか、とても興味深い。


スターバックス再生物語


これも面白かった。

この前の本(~成功物語)も少し読んだのだけど、こちらのほうが読みやすかった。
なんとなくはじめたわけでもお金のためだけにはじめたわけでもなくて、コーヒーや「サードプレイス」というビジョンに情熱を持っていたからこそ、世界規模の企業になれたんだろうなと思った。
ただスタバは食べ物の品質に向上の余地があると思わなくもない。


「週4時間」だけ働く。


これも600ページを超える分厚い本。
少し俗っぽい気もするが、仕事の取り組み方を考えるきっかけになるかも。

インドなどに個人的な用事をアウトソースすることで時間を浮かすというのは、検討してみたいと思った。

Webのサービスのような知的労働は世界のどこでもできるわけで、うまく新興国の力を使えるように仕組み化できたら、みんなハッピーになれるのではないか。
機会があれば化けるはずの眠れる才能があると思うともったいない。


情報検索の基礎



PDFが公開されているIntroduction to Information Retrievalの日本語訳。
自分で検索エンジンを作りながら検索技術を勉強しようかと。
章を進むにしたがって難しくなるが、なんとか読み切りたい。
学生時代にもう少し勉強しておけば…と思ってしまうが、今からでもがんばろう。