Git講座でGitLabの名前を紹介しているのでブログでもご紹介

Git講座の中で授業では扱わないものの、閉じたネットワークでGitHubサーバーのようなサーバーを構築される方もいますよ、ということでGitLabをご紹介していたりすることがあります。
口頭だけで授業ではあまり触れないので、今更ですが、こちらでどんなものかだけ軽くご紹介させていただきます。
今回はインストールまでになります。

GitLabとは

GitLabは、GitHubをもとに作られたMITライセンスのオープンソースのソフトウェアです。
大きく分けるとGitLab CE(Community Edition)とGitLab EE(Enterprise Edition)があり、
機能的にはほぼ同じものですが、CEは無料で使用することができます。
まずは試しに利用してみたいという形であればCEでも充分です。
公式サイト:https://about.gitlab.com/

GitHubを普通に利用しようとすると、GitHubのサービス上(クラウド上)でファイルなどをバージョン管理することになりますが、中には自分たちの閉じたネットワーク内で利用したいという方もいるかと思います。

そんな要望に、割と簡単に閉じたネットワーク内でGitHubのようなサービスを構築できるのがこのGitLabです。
閉じたネットワーク内にサーバーがあれば、そちらにこのGitLabをインストールすることで利用することができるようになります。
※AWSやGoogle Cloud Platformに構築することも可能です。

インストール方法

ではどうやって構築すればいいのか、基本的な構築方法は公式サイトに掲載されているので簡単に構築することができます。

https環境で利用したり、メールサーバーは外部のものを利用したりと組み合わせて利用する場合は別途追加作業が必要です。
また、v9.4より前のバージョンでは日本語設定ができないので、日本語パッチが必要となります。

インストール方法は公式サイトの以下を参考にコマンドを実行すれば構築できます。
今回は社内にCentOS7の環境があったので、そちらで試しに構築しています。

GitLabインストール 公式参考
https://about.gitlab.com/install/
上記からCentOS7を選択しています。
※今回は簡単にご紹介することが目的なので、rootユーザーで作業しちゃってます。

手順に従って、openssh-serverやsshd、postfixなど事前に必要なものなどをインストールしてサービスを起動して、ファイアウォールにhttpを追加して、など実施していきます。
[bash] yum install -y curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd

firewall-cmd –permanent –add-service=http
systemctl reload firewalld

yum install postfix
systemctl enable postfix
systemctl start postfix
[/bash] そのあとリポジトリ追加を行います。
公式ではgitlab-eeとなっていてエンタープライズ版になっているので、gitlab-ceに変えて実行します。
[bash] curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
[/bash] その後GitLabのインストールですが、同時にコンフィグにGitLabサーバのアドレスを指定しています。
今回は他に利用が無いため単純にhttp://localhostとしましたが、すでに他にも利用しているなどの場合はポート番号を変えるなどします。
[bash] EXTERNAL_URL=”https://xxx.xxx.xxx” yum install -y gitlab-ce
[/bash]

ここまででインストールは終了です。
ちゃんとやる場合はセキュリティ設定などしてあげてください。

この後環境に応じてコンフィグファイルを編集します。

送受信用のメールやメールサーバーの設定をgmailにされている方が多いので参考にいたしますと、コンフィグファイル内の以下箇所を有効にして値を変えていきます。ファイルはかなり長いので検索したほうがよいです。編集はviで!

[bash] cp -p /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org
vi /etc/gitlab/gitlab.rb

gitlab_rails[‘gitlab_email_enabled’] = true
gitlab_rails[‘gitlab_email_from’] = ‘xxxx@gmail.com’
gitlab_rails[‘gitlab_email_display_name’] = ‘xxxx(表示する名称)’
gitlab_rails[‘gitlab_email_reply_to’] = ‘xxxx@gmail.com’
gitlab_rails[‘gitlab_email_subject_suffix’] = ”

gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.gmail.com”
gitlab_rails[‘smtp_port’] = 587
gitlab_rails[‘smtp_user_name’] = “xxxx@gmail.com”
gitlab_rails[‘smtp_password’] = “パスワード”
gitlab_rails[‘smtp_domain’] = “smtp.gmail.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_tls’] = false

gitlab_rails[‘time_zone’] = ‘Asia/Tokyo’
[/bash]

では実際に起動させてみます。

[bash] gitlab-ctl reconfigure
[/bash]

すべてのサービスがrunになっていれば起動完了です。
[bash] gitlab-ctl status

run: alertmanager: (pid 15974) 18349s; run: log: (pid 15658) 18373s
run: gitaly: (pid 15819) 18352s; run: log: (pid 13971) 18516s
run: gitlab-monitor: (pid 15889) 18351s; run: log: (pid 15361) 18391s
run: gitlab-workhorse: (pid 15856) 18352s; run: log: (pid 14895) 18414s
run: logrotate: (pid 13038) 405s; run: log: (pid 15076) 18404s
run: nginx: (pid 14978) 18412s; run: log: (pid 15032) 18411s
run: node-exporter: (pid 15877) 18352s; run: log: (pid 15250) 18399s
run: postgres-exporter: (pid 16076) 18349s; run: log: (pid 15756) 18367s
run: postgresql: (pid 14172) 18506s; run: log: (pid 14234) 18505s
run: prometheus: (pid 15935) 18350s; run: log: (pid 15549) 18379s
run: redis: (pid 13798) 18523s; run: log: (pid 13879) 18521s
run: redis-exporter: (pid 15916) 18352s; run: log: (pid 15457) 18386s
run: sidekiq: (pid 14751) 18425s; run: log: (pid 14798) 18424s
run: unicorn: (pid 14648) 18431s; run: log: (pid 14728) 18428s
[/bash]

もしかしたら起動の途中で、「ruby_block[supervise_redis_sleep] action run」というところで止まってしまう場合がありますが、この場合は別途「gitlab-runsvdir」を起動させてあげるなどすると動き出しますので、インストールする際はCentOSをGUIモードで立ち上げ、端末を利用する形でインストール作業を行うと、
複数端末画面を立ち上げられるので作業がしやすいかもしれません。
この時は別端末で
[bash] systemctl start gitlab-runsvdir
[/bash] を実行してgitlab-runsvdirを起動させて続きを実施していきました。

実際にブラウザでURL(今回はhttp://localhost)を入力すると
GitLabの初期画面が起動し、初期ID(root)、PASS(5iveL!fe)を入力すると、
変更用パスワードの入力を促され、変更後に正式にログインして利用できるようになります。

日本語パッチを入れる場合もパッチのサイトを参考に導入できます。
今回は未実施です。
日本語パッチサイト
https://github.com/ksoichiro/gitlab-i18n-patch

[bash] yum install patch unzip wget
cd /usr/local/src
wget https://github.com/ksoichiro/gitlab-i18n-patch/archive/master.zip
unzip master.zip
cd /opt/gitlab/embedded/service/gitlab-rails
patch -p1 < /usr/local/src/gitlab-i18n-patch-master/patches/v11.7.0/app_ja.patch
[/bash] ※パッチのバージョンはGitLabのバージョンと一緒のものを入れてください。
GitLab本体のバージョンまでパッチの開発バージョンが届いていない場合がありますので、
その場合はGitLab本体のバージョンをダウングレードするなどしてバージョンを合わせます。

プリコンパイル
[bash] cd /opt/gitlab/embedded/service/gitlab-rails
rm -rf public/assets
export PATH=/opt/gitlab/embedded/bin:$PATH
bundle exec rake assets:precompile RAILS_ENV=production
[/bash]

設定反映
[bash] gitlab-ctl reconfigure
[/bash]

ということで、Git講座で軽く触れるGitLabについて、インストール方法のご紹介でした。
GitLabの画面についてはまた次回にでもご紹介いたします。

GitやGitHubをまだ利用したことがない方、これから利用してみようと考えている方はAkrosの短期講座のGit講座からご受講してみてはいかがでしょうか。
また、他のスキルと併せてマンツーマンのプロ講座の中でももちろん学べます。

※Git講座をご受講された方からお礼のご連絡とともに、講義後に自ら調査して行った作業を記事にしてご報告いただきました。
講義の内容とは被らないためご紹介させて頂きます。
https://qiita.com/nkojima/items/239fdc3a48ef1b0a4da0
自ら取り組む姿勢は大変すばらしいですね!
ぜひ皆さんもご参考ください。