GitLab インストール手順 (CentOS7)
はじめに
プロジェクト、ソースコードの管理ツールとしてGitLabを使う機会があったので、インストール手順を検証してみました。
前提条件
以下の前提条件で検証しています。
- ハードウェア: VirtualBox上の仮想マシン
- OS: CentOS 7.6 (1810) (Vagrantのcentos/7 boxを使用)
- アプリケーション: GitLab Community Edition 12.6.1
- 構築対象サーバはインターネットと疎通が取れること
- 各手順はroot権限を持つユーザで実施
パッケージインストール
GitLabの動作に必要となる関連パッケージをインストールします。
# yum install -y curl policycoreutils-python
GitLabのリポジトリ設定スクリプトをダウンロードし、実行します。インストール後に、GitLabのリポジトリ設定ファイルが作成されていることを確認します。
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
# ls -l /etc/yum.repos.d/gitlab_gitlab-ce.repo
-rw-r--r--. 1 root root 773 Jan 2 06:12 /etc/yum.repos.d/gitlab_gitlab-ce.repo
登録したリポジトリからGitLabをインストールします。パッケージのサイズが700MB近くあるので、回線帯域が狭い場合は少し時間がかかります。
# yum install -y gitlab-ce
設定ファイルの変更
viなどのテキストエディタで、GitLabの設定ファイルを開きます。
# vi /etc/gitlab/gitlab.rb
設定変更内容は以下の通りです。
最低限の設定として、クライアント端末がGitLabにアクセスするときのURLを設定します。
クライアント端末がサーバの名前を解決できる場合はホスト名、そうでない場合はクライアント端末と疎通の取れるNICのIPアドレスを設定します。
external_url 'http://gitlab.example.com'
↓
external_url 'http://<GitLabサーバのホスト名 or IPアドレス>'
初期化処理
以下のコマンドを実行し、初期化処理を行います。コマンドは内部的に構成管理ツールのChefを呼び出しているようで、画面に出力されるログを確認すると、処理内容を見ることができます。この処理は数分ほどかかります。
なお、検証中にgitlab-ctl reconfigure
のみ実行したところ、処理中にエラーが発生しました。(本記事末尾、参考情報を参照) そのため、最初の2行でLC_ALL
とLC_CTYPE
の変数にロケールを指定しています。
今回、OSのプロビションにVagrant Cloudに公開されているboxを使用しているので、インストールDVDからインストールしたCentOSの場合はロケール指定は不要かもしれません。
# LC_ALL="en_US.UTF-8"
# LC_CTYPE="en_US.UTF-8"
# gitlab-ctl reconfigure
ファイアウォールの設定
firewalldを使用している場合は、ファイアウォールのルールを追加し、外部からの通信を許可します。許可対象の通信は以下の通りです。
- http : クライアント → GitLabのHTTP通信
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success
WebUIの設定
WebUIの初期設定を行うため、作業端末のWebブラウザを起動して以下のURLにアクセスします。
http://<GitLabサーバのホスト名 or IPアドレス>
(GitLabの)rootユーザのパスワードを設定します。「New password」と「Confirm new password」に同じパスワードを入力し、「Change your password」を押下します。
「User name or email」にrootと入力します。「Password」に、先ほど設定したパスワードを入力します。「Sign in」を押下します。
ログインが完了し、プロジェクト作成のチュートリアル画面が表示されればインストールは完了です。
参考情報
今回検証した際、GitLabの初期化処理の最中に以下のエラーが表示されました。メッセージを辿ると、initdb: invalid locale settings; check LANG and LC_* environment variables
の箇所が根本原因で、ロケール変数がシェルに存在しないためPostgreSQLのDB初期化コマンドが失敗しているようです。
ネット上の記事でGitLabインストール情報をいくつか調べましたが、このエラーが出ているものはそこまで多くないようなので、今回OSのプロビショニングにVagrantを使用したことが原因かもしれません。
There was an error running gitlab-ctl reconfigure:
execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8] (postgresql::enable line 85) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
STDOUT: The files belonging to this database system will be owned by user "gitlab-psql".
This user must also own the server process.
STDERR: initdb: invalid locale settings; check LANG and LC_* environment variables
---- End output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
Ran /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 returned 1