バージョン管理システムにGitを使い始めて早1年強。研究室にGitHub風なGitのフロントエンドが欲しいなと思っているところに以下の記事を見かけたのでインストールしてみる。
環境
- Cent OS 6.5
GitLabのインストール
GitLab Omnibus project: README.mdのインストール手順は以下のとおり。
sudo yum install openssh-server sudo yum install postfix # sendmail or exim is also OK sudo rpm -i gitlab-x.y.z_omnibus-x.el6.x86_64.rpm # this is the .rpm you downloaded sudo gitlab-ctl reconfigure sudo lokkit -s http -s ssh # open up the firewall for HTTP and SSH requests
当該パッケージがインストール済みかどうかは以下のコマンドで探す。
% yum list installed | grep パッケージ名
GitLab:DownloadからCent OS用のパッケージをダウンロードする。
% wget https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-6.9.2_omnibus-1.el6.x86_64.rpm
インストールする。
% sudo rpm -i gitlab-6.9.2_omnibus-1.el6.x86_64.rpm % sudo gitlab-ctl reconfigure % sudo lokkit -s http -s ssh
「Chefすげぇー。」と眺めているうちにインストール&設定終了。http://FQDN/にアクセスしたらGitLab動いている。
GitLab関連のデーモンの起動状況の確認。
sudo gitlab-ctl status run: nginx: (pid 22377) 234s; run: log: (pid 22376) 234s run: postgresql: (pid 22221) 267s; run: log: (pid 22220) 267s run: redis: (pid 22123) 273s; run: log: (pid 22122) 273s run: sidekiq: (pid 22332) 240s; run: log: (pid 22331) 240s run: unicorn: (pid 22303) 246s; run: log: (pid 22302) 246s
- nginx: httpサーバ
- postgresql: データベース管理システム
- redis: Key-value ストア
- sidekiq: Railsで非同期処理をする仕組み
- unicorn: Railsを動かすためのフロントエンド
デフォルトのアカウントでGitLabにブラウザ越しにログインする。すると、パスワードの変更が求められるのでパスワードを変更する。
- ID: root
- パスワード: 5iveL!fe
インストール後の設定
設定ファイルは /etc/gitlab/gitlab.rb。作成する。
% cd /etc/gitlab % sudo touch gitlab.rb % sudo chmod 600 gitlab.rb
gitlab.rbを編集した後は、設定を反映させる。
% sudo gitlab-ctl reconfigure
アルパカDiary:続・GitHubクローンのGitLabを5分でインストールしたに従い設定ファイルを編集する。
注意:SELinuxの設定が原因で公開鍵認証ができない件
GitLabでGitリポジトリからデータをやりとりする場合は、ユーザごとに公開鍵を登録する必要がある。登録した公開鍵は /var/opt/gitlab/.ssh/authorized_keys に格納され、公開鍵認証ができるはずなのだが、CentOS 6.5の場合、SELinuxの設定が原因で、公開鍵認証できない。具体的には/var/opt/gitlab/.ssh/がSSHの公開鍵置き場として認められていない。
SSHの公開鍵置き場として認めらている場合、ls -laZで見える属性にssh_home_tという属性が表示される。たとえば、/home/john/.sshを調べると以下のような結果となる。
% ls -laZ /home/john/.ssh drwx------. john john unconfined_u:object_r:ssh_home_t:s0 . drwx------. john john unconfined_u:object_r:user_home_dir_t:s0 .. -rw-------. john john unconfined_u:object_r:ssh_home_t:s0 authorized_keys
しかし、/var/opt/gitlab/.ssh/はこうなる。
% ls -laZ /var/opt/gitlab/.ssh drwx------. git git unconfined_u:object_r:ssh_home_t:s0 . drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 .. -rw-r--r--. git git unconfined_u:object_r:var_t:s0 authorized_keys
そこで、/var/opt/gitlab/.ssh/authorized_keysにssh_home_tを付与する。SELinux で restorecon してあうあう。によるとsemanageコマンドで恒久的にタイプを付与することができるとのこと。でも、私の環境にはsemanageコマンドがない。
SELinux semanageの導入にしたがってなんのパッケージに含まれているのか調べる。
% yum provides *bin/semanage 〜中略〜 policycoreutils-python-2.0.83-19.39.el6.x86_64 : SELinux policy core python : utilities Repo : base Matched from: Filename : /usr/sbin/semanage
policycoreutils-python-2.0.83-19.39.el6.x86_64をインストールする。
% sudo yum install policycoreutils-python-2.0.83-19.39.el6.x86_64
付与する。
% sudo semanage fcontext -a -t ssh_home_t "/var/opt/gitlab/.ssh" % sudo semanage fcontext -a -t ssh_home_t "/var/opt/gitlab/.ssh/authorized_keys" % sudo restorecon -R -v /var/opt/gitlab/.ssh restorecon reset /var/opt/gitlab/.ssh context system_u:object_r:var_t:s0->system_u:object_r:ssh_home_t:s0 restorecon reset /var/opt/gitlab/.ssh/authorized_keys context system_u:object_r:var_t:s0->system_u:object_r:ssh_home_t:s0 % ls -laZ /var/opt/gitlab/.ssh drwx------. git git system_u:object_r:ssh_home_t:s0 . drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 .. -rw-r--r--. git git system_u:object_r:ssh_home_t:s0 authorized_keys
以上で無事成功。
GitLabの使い方
サブディレクトリで動くように設定を変更(未処理)
デフォルトはルートパスで動くので http://FQDN/gitlab というようにサブディレクトリで動かしたい。やり方は以下のようにみつかった。
でも、 omnibus-gitlab の場合、gitlab-ctl reconfigureの度に設定ファイルが/etc/gitlab/gitlab.rbに基づき変更されるので、上の方法だとうまくいかなそう。