2012年6月7日

【AWS】GitLabをEC2のCentOS6.0へインストール


環境
サーバAmazon EC2 Tokyo Region micro instance
OSCentOS 6.0 (rightimage_centos_6.0_x86_64_20110810.1_ebs)


自分用のメモなのであしからず
まずは、rootになって、以前の記事から、
Apache2.4.2、MySQL5.5.25、Redis2.4.14、Ruby1.9.3をインストールして下さい。
あと、sshのパスワード認証は面倒なので切る。鍵認証のみに設定する。
こちらは/etc/ssh/sshd_configを編集し、/etc/init.d/sshd restartでなんとかする。

必要そうなモジュールのインストール
yum install libxml2-devel libxslt-devel libicu-devel
SQLiteをソースからインストールします。
wget http://www.sqlite.org/sqlite-autoconf-3071201.tar.gz
tar zxvf sqlite-autoconf-3071201.tar.gz
cd sqlite-autoconf-3071201
./configure
make
make install

ユーザの準備
・gitレポジトリを管理するgit
・GtiLabの管理をするgitlabhq
useradd git
useradd gitlabhq
usermod -G git gitlabhq
chmod g+rx /home/git # gitlabhqからgitレポジトリを参照出来るようにする
su - gitlabhq
ssh-keygen -t rsa -P "" -f ~/.ssh/gitadmin # gitlabhqの鍵を生成
git config --global user.name "gitadmin"
git config --global user.email "gitadmin@localhost"
exit
mv /home/gitlabhq/.ssh/gitadmin.pub /home/git #鍵をgitのディレクトリへ移動

gitolite(g3)のインストール
su - git
git clone git://github.com/sitaramc/gitolite
exit
/home/git/gitolite/install -ln /usr/local/bin/ # インストール先のディレクトリを指定
su - git
gitolite setup -pk /home/git/gitadmin.pub # gitoliteへ

.gitolite.rcの編集
***
なんでここにこのファイルがあるのか忘れたが、
移動させたらエラーが出たので必要そうだ。
***
# UMASK                       =>  0077,
↓
UMASK                       =>  0007,

gitlabhqになる
su - gitlabhq
vi .ssh/config

SSHの設定
Host localhost
    HostName localhost
    User git
    IdentityFile ~/.ssh/gitadmin
:wqで終了
config権限を600に変更しておくこと。

ここまでで確認。
まず、gitlabhqユーザからgit cloneが出来る事
su - gitlabhq
git clone git@localhost:gitolite-admin.git

失敗したら、sshでgit@localhostへ接続
ssh git@localhost #失敗したら次
ssh -v git@localhost #失敗したら次
ssh -vvv git@localhost 
ログを見つつ、原因を探る。だいたい.sshや鍵の権限の問題。
700や600になっているか見直す事。

gitlabhqのインストール
git clone git://github.com/gitlabhq/gitlabhq.git
cp /home/gitlabhq/gitlabhq/config/database.yml.sqlite /home/gitlabhq/gitlabhq/database.yml #MySQLを使う場合は別のファイル
cp /home/gitlabhq/gitlabhq/config/gitlab.yml.example /home/gitlabhq/gitlabhq/config/gitlab.yml
# それぞれのファイルを編集する。特にgitlab.ymlのhostをIPに、portを22に変更
exit # rootになる
gem install rails bundler
cd /home/gitlabhq/gitlabhq
bundle # 警告がいっぱい出るはずなので、その都度、gem installやyum installを繰り返す
su - gitlabhq # gitlabhqで作業する
bundle exec rake db:setup RAILS_ENV=production # dbの作成
bundle exec rake db:seed_fu RAILS_ENV=production # 管理者の登録
exit

Passengerのインストール(rootでやる)
gem install passenger
passenger-install-apache2-module
警告が出たら、httpdのパスとかが通ってないので、
PATHに追加して、再度インストールする。

httpd.confと同じディレクトリにpassenger.confを作成し、
httpd.confからincludeする。
# 追加
Include conf/passenger.conf

passengerをインストールすると出てくるので、
そのままコピー。
VirtualHostもどっかに作っておく
LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/bin/ruby

<VirtualHost *:80>
  DocumentRoot "/home/gitlabhq/gitlabhq/public"
  ErrorLog "logs/gitlab_error_log"
  CustomLog "logs/gitlab_access_log" common
  <Directory "/home/gitlabhq/gitlabhq/public">
    AllowOverride all
    Options -MultiViews
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>

これでApacheを起動すれば、アクセス出来るはず。
→出来ない場合はapacheの起動ユーザからgitlabhqが見えていないので、起動ユーザをgitlabhqグループに追加
usermod -G gitlabhq apache # apacheを起動ユーザ名に変える
アクセスしたら、まずユーザをadmin権限で作成し、admin@local.hostは消す。
→ユーザ登録が出来無い場合はdbの権限関係。
→rootユーザでdbの作成をしていないか確認。
→gitlabhqでdbの作成はすること
登録したユーザで鍵を登録する。
→出来無い場合はgitlabhqユーザからgitへの書き込み権限が無い。
→グループと/home/git等の権限を確認する事。
登録した鍵を使いサーバにgitユーザとしてアクセスする
ssh -vvv git@example.com
できたらgit clone git@example.com:gitolite-admin.gitする。
→出来なければ鍵がおかしい。

経験したエラーはこんなところ。
あとは聞いてもらえれば思い出すかもしれない。