オンプレサーバでGitlabを構築したときの記録

サーバーが一台空いたので、UbuntuサーバーをインストールしてGitlabを立ち上げた。Githubなどの外部サービスにアップロードできない環境はそれなりに存在してるはずなので、こうして展開する機会は今後もありそう。

Ubuntu Serverのインストール直後から、Gitlabをセットアップし最初のリポジトリを作るまでの手順を残しておく。

[バージョン情報]
Ubuntu Server 18.04.1 LTS
GitLab Community Edition 11.8.1
Windows10(クライアント)
git 2.21.0.windows.1(クライアント)

ちなみに公式のインストール手順はこちら(https://about.gitlab.com/install/)

Ubuntuのインストール

公式サイトから落としたイメージでUbuntu Serverをセットアップする。立ち上がったらネットワークの設定を行い、Open SSHサーバをインストールする。

$sudo apt-get install curl openssh-server ca-certificates

Postfixをインストール

メールサーバのPostfixをインストールする。今回はメール機能は使わなかったが、公式のinstallationに書いてあるのでとりあえず入れた。インストール時のGeneral TypeではLocal Onlyを選んだ。

なお後から試したが、インストール後の設定で外部のメールサーバを利用することもできたので、その場合は特にPostfixをインストールする必要はない。

$sudo apt-get install postfix

Gitlabのインストール

Gitlabの公式リポジトリを登録し、インストールを実行する。

$curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
$sudo apt install gitlab-ce

Gitlab設定の変更

インストール後、Gitlabの設定ファイル(/etc/gitlab/gitlab.rb)を開いて修正する。設定は沢山あるが、最低限として次の二つを書き換えた。

タイムゾーンを日本に設定。

gitlab_rails['time_zone'] = 'Tokyo'

クライアントからGitlabへアクセスするときのドメインを設定。IPアドレスでアクセスする場合はそう設定する。しなくてもアクセスはできるが、画像などのパスに使われるためリンク切れが発生したりする。

EXTERNAL_URL="https://gitlab.example.com"

設定の反映と開始

以下のコマンドで運用を開始する。初回起動は数分かかる。

$sudo gitlab-ctl reconfigure

クライアントのブラウザからサーバへアクセスするとGitlabのログイン画面が表示される。初回アクセス時にrootユーザーのパスワード設定を求められる。

管理ユーザーのGitlabホーム画面。

最初にすること

ユーザーの追加

rootユーザーでサインインしたら、Add peopleからユーザーを登録する。

Nameは画面に表示される名称で、UsernameがログインID。メールアドレスも必須項目。

ユーザーの作成後、本来は入力したアドレスへ招待メールが送信され、記載されたURLから初期パスワード設定を行うと思われる。今回はメールサーバを設定していないため、事前に初期パスワードを割り当てておく必要がある。作成したユーザーの編集画面へ入りパスワードを入力して保存する。

rootからサインアウトし、作成したユーザーと初期パスワードでサインインする。なお初回ログイン時には初期パスワードの変更を要求される。

グループの追加

Gitlabのプロジェクトは特定のユーザーもしくはグループが所有者になる。個人利用でなければ、開発案件が特定ユーザーに紐づくのも変なのでグループを作る。

Gitlab画面ヘッダの[+]アイコンから New group を選択し、グループの追加画面に入る。

グループ名、説明、アクセス権限などを入力する。URLはグループ名がデフォルトで設定される。そのためグループ名はアルファベットにした方が多分無難。

グループを作成したらユーザーを割り当てる。左ペインのメニューから Members を選択し、Add new member to ~にユーザーを入力していく。

最初のプロジェクトとリポジトリの作成

GitlabはGithubと違いプロジェクトとリポジトリが1対1の関係になるため、プロジェクトを作成してその中のリポジトリにファイルを作成することになる。

プロジェクトの作成

まずWeb画面からプロジェクトを新規作成する。Gitlab画面ヘッダの[+]アイコンから New project を選択し、プロジェクトの追加画面に入る。

プロジェクト名を入力し、ProjectURL の欄で所有者となるユーザーまたはグループを選択する。プロジェクトのURLは「ドメイン/所有者名/プロジェクト名」で、リポジトリのパスもこれと同様になる。

プロジェクトを作成すると対応する空のリポジトリも同時に作成される。

プロジェクトを作成したらメンバーを登録する。プロジェクトのホームを開いて、左メニューの Settings>Members から開発ユーザーの権限を選び追加する。所有者ユーザー、または所有グループに属するユーザーは最初から登録されている。

開発フォルダの関連付け

クライアントPCで特定フォルダをリポジトリと関連付ける。

powershellを起動して、既存または新規の開発フォルダで以下のgit初期化コマンドを実行する。フォルダの配下にgit管理ファイル(.gitフォルダ)が作成される。

>git init

フォルダとリモートリポジトリを関連付ける。リポジトリのパスはプロジェクトホームのURLに.gitを付けたもの。

>git remote add origin https://gitlab.example.com/repositorie.git

対象外ファイル指定する

通常gitでは、頻繁に変更されるログやデータファイル、生成物である実行ファイル、画像などサイズの大きいバイナリファイルは管理対象外にする。そのためにはフォルダに.gitignoreファイルを作成する。

Windowsのエクスプローラでは拡張子のみのファイルは作成できないので、powershellからコマンドで作成する。

>Add-Content .gitignore ""

作成したファイルをテキストエディタで編集する。git対象外とするファイルのパスを記述していく形式。以下は.Netアプリの例。

.vs/
bin/
Bin/
obj/
log/
Log/
Dll/
Data/
Images/
*.pfx
*.wav
*.png
*.jpg
*.bmp
*.exe
*.dll
*.suo
*.user
*.db

gitignoreのテンプレートはいろいろ公開されてるけど、結構網羅的に書いてあるので、把握できるように必要なだけ自前で書くのもありだと思う。

ファイルのアップロード

初期ファイルをリモートリポジトリにアップロードする。これは通常のgitクライアントと同じ。

>git add -A
>git commit -m "initial commit"
>git push origin master

Web画面でリポジトリを見るとソースファイルができているはず。

以上

以上でgitlabのセットアップから初期リポジトリの作成は完了。gitの運用に入れる状態になった。

コメント