GitのWebインターフェースを探している中で、GitWeb、Ginatraを試したのですが、イマイチでした。
そこで今回、GitLabを試してみました。
GitLabは、単にGitのGUIインターフェースのみならず、ユーザー管理、グループ管理、リポジトリのバックアップなどを行うユーザーインターフェースを備え、いわばリポジトリの管理システムとなっています。
GitLab (ギットラボ) とは
GitLab (公式サイト: https://about.gitlab.com/ ) は、
wikiとバグ管理機能(Issue Tracking System)を備えたGitのリポジトリ管理システムです。
GitLabの読み方は、ギットラボです。
クラウドサービスである GitHubと似ていますが、GitLabの場合、オンプレミスな自社サーバーに導入出来ます。
GitLabには以下の二つのエディションが存在します。
GitLab CE : Community Edition
GitLab EE : Enterprise Edition
この中でGitLab CEがフリーでオープンソースなパッケージでMITライセンスで提供されています。
GitLab EEは、プロプライエタリなライセンスでGitLab CEにない機能を備えているようです。
GitLab CEを2分でインストール
GitLabの公式サイト
をブラウザで開きます。
「Download and install the open source GitLab CE in 2 minutes」
(オープンソースのGitLab CEを2分でダウンロードしてインストール)
を押します。
以下の画面が表示されます。
ロゴがちょっとキモいですが、気にせずに
「Select Operating System」
のところから自分の環境にあったオペレーティングシステムを選択します。
私の場合「CentOS 7」を選択しました。
GitLabではデフォルトでWebサーバーNginxがインストールされます。
よって、Apacheを動作させている場合は停止しておきます。
1 2 |
# systemctl stop httpd.service # systemctl disable httpd.service |
以下は
からの引用ですが、日本語でコメントしておきました。
1. Install and configure the necessary dependencies
If you install Postfix to send email please select ‘Internet Site’ during setup. Instead of using Postfix you can also use Sendmail or configure a custom SMTP server. Do not use Exim to send email from GitLab.
On Centos 6 and 7, the commands below will also open HTTP and SSH access in the system firewall.
以下をコマンドから入力します。
openssh-serverのインストールと自動設定、postfixのインストールと自動設定、ファイアウォールとしてhttp(ポート80)を開けておく設定です。
1 2 3 4 5 6 7 8 |
sudo yum install openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld |
2. Download the Omnibus package and install everything
以下をコマンドから入力します。
rpmパッケージのダウンロードとインストールです。
1 2 |
curl -O https://downloads-packages.s3.amazonaws.com/centos-7.0.1406/gitlab-7.7.2_omnibus.5.4.2.ci-1.el7.x86_64.rpm sudo rpm -i gitlab-7.7.2_omnibus.5.4.2.ci-1.el7.x86_64.rpm |
3. Configure and start GitLab
以下をコマンドから入力します。
GitLabのコンフィギュレーションを行います。
1 |
sudo gitlab-ctl reconfigure |
少し時間がかかります。
4. Browse to the hostname and login
ブラウザで開いてみて以下のユーザーでログインします。
Username: root
Password: 5iveL!fe
初回ログイン時のみパスワードの変更が要求されるのでパスワードを変更しておきます。
そのままログイン出来ます。 以下の画面に遷移します。
誇大広告ではなかったです。
本当に2分でダウンロードしてインストール出来ました!
gitlab-ctl reconfigure
というコマンドが非常に優秀なようです。
自動起動設定
GitLabはNginxを同梱していて、インストールするとデフォルトで自動起動設定になっているようです。
以下のファイルが関係しています。
1 |
/etc/systemd/system/default.target.wants/gitlab-runsvdir.service -> /opt/gitlab/embedded/cookbooks/runit/files/default/gitlab-runsvdir.service |
中身は以下の通りです。
1 2 3 4 5 6 |
[Unit] Description=GitLab Runit supervision process [Service] ExecStart=/opt/gitlab/embedded/bin/runsvdir-start Restart=always |
以下のコマンドのようにサービスで起動することも出来るようです。
1 |
# systemctl start gitlab-runsvdir.service |
ただ、通常は、Linuxのサービスで起動したり停止したりせず、
gitlab-ctlコマンドを使うようです。
gitlab-ctlには以下のオプションが存在します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
cleanse Delete *all* gitlab data, and start from scratch. deploy-page Put up the deploy page graceful-kill Attempt a graceful stop, then SIGKILL the entire process group. help Print this help message. hup Send the services a HUP. int Send the services an INT. kill Send the services a KILL. once Start the services if they are down. Do not restart them if they stop. reconfigure Reconfigure the application. remove_users Delete *all* users and groups used by gitlab restart Stop the services if they are running, then start them again. service-list List all the services (enabled services appear with a *.) show-config Show the configuration that would be generated by reconfigure. start Start services if they are down, and restart them if they stop. status Show the status of all the services. stop Stop the services, and do not restart them. tail Watch the service logs of all enabled services. term Send the services a TERM. uninstall Kill all processes and uninstall the process supervisor (data will be preserved). |
リポジトリの設定など
GitLabのデフォルトのリポジトリの場所は以下のディレクトリです。
1 |
/var/opt/gitlab/git-data |
/var/opt/gitlab/git-data/gitlab-satellites
は、マージリクエストのために存在するフォルダのようです。
また、リポジトリは、
/var/opt/gitlab/git-data/repositories/root
のように名前空間(namespace)を持つようになっています。
私の環境では、すでに、ローカルの
/var/lib/git/
にすでにbareリポジトリが存在していたので、そのbareリポジトリを丸ごと以下にコピーしました。
1 |
/var/opt/gitlab/git-data/repositories/root |
その後、以下のコマンドを実行してリポジトリをGitLabに取り込みます。
1 |
# gitlab-rake gitlab:import:repos |
GitLabのデフォルトのリポジトリの場所は設定ファイル
/etc/gitlab/gitrab.rb
の中で、
git_data_dir
により変更することも可能です。
GitLabのユーザーインターフェースを見る限り、
リポジトリのフォルダ名には必ず.gitという拡張子が必要なようです。
Gitでbareリポジトリを作る際には、
.gitを付けるのは慣習があることは知っていましたが、
GitLabの場合、仕様上、.gitを付けることが必要なようです。
ユーザーの移行方法は?
GitLabはリポジトリのアクセス制御なども行うことが可能です。
そのために、GitLabにユーザーの登録画面が存在します。
これまで、Linuxの/homeにあるユーザーとgitグループでリポジトリを使っていたので、一括でGitLabにユーザーを登録する方法が見つからないのでちょっと困っています。
2015.02.20 追記
その後、Stack Overflowで質問したらアドバイスがありました。
以下の記事にまとめています。
まとめ
以下の記事の通り、Ginatraを使ってみてイマイチだったので、GitLabはいい感じだと思っています。
GitLabは単なるGitのWebインターフェースに留まらず、リポジトリのアクセス権限やユーザー登録も備えたGitの管理システムと言えるでしょう。
Gitについてのおすすめの本
↓Gitについてのおすすめの本はコチラ
コメント
[…] CentOS 7にGitHubライクなオンプレミス GitLab CE (community edition) を2分でインスト… […]
[…] CentOS 7にGitHubライクなオンプレミス GitLab CE (community edition) を2分でインスト… […]