Gitlabを使ってみた
やたらキモイロゴの Gitlab
githubのオープンソースクローンと呼ばれている。
用途はたぶん以下に当てはまる場合
- githubでプライベートリポジトリ作るのにお金がかかるのがイヤ
- 社内の開発リポジトリを外部に出すのに抵抗がある
正直メンテを考えたらgithubのプライベートリポジトリを使った方がいいような気もする。それか Bitbucket
入れ方は gitlabのgithubのところに書いてある (2013/04/25現在は5.0が推奨)
インストールはDebian系で書かれているけど、CentOS※でも必要なものを入れれば動いた
※CentOS5系
自分が入れた際のメモ
必要なパッケージを用意
Debian系のパッケージ名 | Redhat系のパッケージ名 |
---|---|
build-essential | ?(たぶんgcc gcc-c++ kernel-develあたり) |
zlib-dev | zlib-devel |
libyaml-dev | libyaml-devel |
libssl-dev | openssl-devel |
libgdbm-dev | gdbm-devel |
libreadline-dev | readline-devel |
libncurses5-dev | ncurses-devel |
libffi-dev | libffi-devel |
git-core | git-core |
openssh-server | openssh-server |
redis-server | redis |
postfix | postfix |
checkinstall | ないので手動 |
libxml2-dev | libxml-devel |
libxslt-dev | libxslt-devel |
libcurl4-openssl-dev | libcurl-devel |
libicu-dev | libicu-devel |
checkinstallだけは手動でいれる ここ参照
wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
tar xvf checkinstall-1.6.2.tar.gz
cd checkinstall-1.6.2/
make && make insatll
RPM化
checkinstall
rubyのインストール(1.9.3)
自分の環境には1.8が入っていたのでいったんアンインストール
yum remove ruby
1.9.3インストール
curl --progress http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz | tar xz
cd ruby-1.9.3-p327/
./configure
make && make install
BundlerGemのインストール
sudo gem install bundler
Gitlabのユーザ作成
# 手順では以下だがCentOSなので
# sudo adduser --disabled-login --gecos 'GitLab' git
# こっち
adduser -c 'GitLab' git
Gitlab shellのインストール
su git
cd /home/git
git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
cp config.yml.example config.yml
# Edit config and replace gitlab_url
# with something like 'http://domain.com/'
vim config.yml
'http://domain.com/'の部分を自分の環境に合わせて変更(自分の場合ポートも変えたのでそれを含め変更http://xxx.com:XXXXみたいに)
あとsshポートを変更している人は'ssh_port'の部分を変更する
./bin/install
データベースのセットアップ
postgreでもいいみたいだけど、自分の場合はmysqlを利用
インストール
yum install mysql-server mysql-devel
データベースのセットアップ
mysql -u root -p
mysql > CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'パスワード';
mysql > CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql > GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
mysql > \q
sudo -u git -H mysql -u gitlab -p -D gitlabhq_production
Gitlabのソースの取得
# gitにsu権限
usermod -G wheel git
cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
Gitlabの設定
cd /home/git/gitlab
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
sudo -u git -H vim config/gitlab.yml
# 自分の場合はlocalhostを変更した
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX log/
sudo chmod -R u+rwX tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo -u git -H mkdir tmp/pids/
sudo chmod -R u+rwX tmp/pids/
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
vim config/unicorn.rb
# 自分の場合はlistenポート変更
Gitlabの データベースの設定
sudo -u git cp config/database.yml.mysql config/database.yml
# データベースで設定したユーザとパスワードを指定
vim config/database.yml
rubyパッケージの取得
# reademeでは
# sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
# 自分はこっち(権限の関係かな)
bundle exec rake gitlab:setup RAILS_ENV=production
Administrator account created:
仮のアカウントが表示されるはず
初期化スクリプト
sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
起動時に動くようにする
sudo /sbin/chkconfig --level 2345 gitlab on
色々チェック
bundle exec rake gitlab:env:info RAILS_ENV=production
上記で
Git configured for git user? ... no
Try fixing it:
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
と言われたので
git config --global user.name "GitLab"
git config --global user.email "gitlab@localhost"
Gitlabの起動
bundle exec rake sidekiq:start RAILS_ENV=production
Gitlabのインストールガイドだとnginxだけど、自分はApacheなので特に何もせず
設定したURL:ポートにアクセスするとログイン画面が出てくる
あとは ここ を参考にユーザの設定を行う
補足
自分の場合コミット時にsshの権限まわりでエラーが出ていたので以下の対処を実施
su git
cd
chmod 755 .ssh
chmod 600 .ssh/authroized_keys
感想
普通はgithubでいいと思う。わざわざ構築したのはいつか会社とかでgitが主流になった時にgithubのプライベート案がけられた時に使いたいなーと思ったから。