GitLabサーバーを構築してみる【AlmaLinux8】
最近、初心者エンジニアの方のgitに関するツイートを拝見し、この記事を書こうかなと思い立った次第です。
これを読んでくれている皆さんは、バージョン管理システムの事はすでにだいたい把握されているかもしれませんが、Gitについて少し。GitHubは皆さんご存知と思いますが、Gitが利用出来るWEBサービスです。アトラシアン社のBitbucketなんかもそうですね。
GitLabというのはgitリポジトリを自分でホスティング出来るオープンソースだと思ってください。今回はこのGitLabのサーバーを構築してみようと思います。
まず最初にGitとは?
Gitをシンプルに言えば、バージョン管理システムです。何のバージョンを管理するかと言うと、イメージしやすいのは、主にプログラムのソースコードです。
Gitがメジャーになる前は、CVSであるとかSVNなんていうバージョン管理システムを利用していましたが、もう今はGitを使わない理由がないほどでしょう。
Gitが先程あげたCVSやSVNと一番大きく異なることは、「分散型」と表現される部分にあります。リモートリポジトリ(リポジトリ本体と思ってください)をクローン(git clone)することにより、作業者は各自のローカル環境に、リモートリポジトリのコピーを保持します。これによって、作業者はオフラインの状態で合っても、過去の履歴と照らし合わせたり、開発中のソースコードをコミットしたりすることが出来ます。開発場所や環境によらず、作業が行えるという意味で、当時は非常に大きな進化だと感じました。(今は当たり前になりましたが)
他にも利点をいろいろと挙げ連ねたいのですが、とんでもない文章量になってしまいそうなので、これだけにしておきます
GitLab
早速構築してみたいと思います。今回もAlmaLinux8上で作業してみます。
環境
AWS t3-medium(CPU2コア Mem4GB)
構築手順
# update
dnf -y update
# install
dnf -y install epel-release
dnf -y install git firewalld curl policycoreutils openssh-server perl openssh-clients postfix
# 念の為swapfileを4GB分確保
dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -m
vi /etc/fstab
-----
/swapfile swap swap defaults 0 0
-----
# firewalld
systemctl start firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewalld
# sshd
systemctl enable sshd
systemctl start sshd
# postfix
systemctl enable postfix
systemctl start postfix
# gitlab CE
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
EXTERNAL_URL="https://gitlab.supisupi.com" dnf install -y gitlab-ce
※EXTERNAL_URLにはご自身のドメインを指定してください!
確認
EXTERNAL_URLで指定したURLにアクセスします
繋がりました。早速rootでログインしてみましょう。root用の初期パスワードは、以下に記載されている。
/etc/gitlab/initial_root_password
ログインできました。
少し使ってみる
個人ユーザーでログイン
個人ユーザーを作成し、rootで承認してあげます。作成したユーザーでログインしてみる。
プロジェクトを作成してみる
おっと・・プロジェクト作成とは、gitリポジトリの作成だったようだ。
気になるのはプロジェクトURLがプロジェクト名によって決められていて、そのURLが下記のようになっている。
https://gitlab.supisupi.com/[ユーザー名]/[プロジェクト名].git
むむむ。レポジトリがユーザーに依存する形になってしまうのか?
あーー分かりました。なるほどなるほど。グループ所有のリポジトリを作成するには、グループを先に作成すれば良いみたいでした。そうすると無事に、
https://gitlab.supisupi.com/[グループ名]/[プロジェクト名].git
というリポジトリを作成することが可能!ひと安心w
git init から git push まで
一通り、動作を確認してみます。
ここであらかじめSSH公開鍵を登録しておきました。(手順省略)
登録し終わると、この初期画面に記載されてある初期手順のURLがSSH用に変わってます。
# mac(ローカル環境にて)
cd /tmp
composer create-project laravel/laravel:^8.0 sandbox
cd sandbox
git init
git branch -M main
git remote add origin git@gitlab.supisupi.com:sample/sandbox.git
git add --all
git commit -m "init"
git push -u origin main
無事にpushできました!
まとめ
いかがでしたでしょうか。そこまで複雑な手順ではありませんでしたね。
ただし、1コアのCPUでは、動作がきつい印象でした。メモリは使用される人数にもよりますが、4GB以上が推奨されているようです。環境については試してみることが大事かと思います。
gitは初心者の方には、ハードルがやや高めです。ただ、必須のスキルなので、こればっかり練習をして体で覚えるのが一番良いです。
まずは、いきなり会社などで無茶苦茶やってしまわないように、Githubで個人リポジトリを作って練習したり、今回みたいにGitLabのリポジトリを作ってみるのも良いと思います。