今更ながらGitLabのインストールから最低限の使い方までを記載してみました。
探してみると超初心者にもわかるGitLabの情報って意外と少ないのかなって感じました。
筆者が今回GitLabに触れるまでは「Gitでプッシュ」って言われてもさっぱりわからずいつもGoogle博士に聞いてました。
その状態でいきなり使って!って言われて泣きそうになりました。
ズバリ今回の目標はGITについて何にも知らない人がとりあえず使えるようになるまでを考えて投稿しました。
願わくば筆者と同じ局面に至った人の蜘蛛の糸になるように!
#####■環境説明
RHEL7を使って作業をします。サーバ1台にクライアント1台構成になります。これも元々Windowsばっかりだった筆者が地獄見た経験からです(泣)
6と7変わりすぎ!!!!
| マシン | Server | Client |
|:-:|:-:|:-:|:-:|
| OS | RHEL7 | RHEL7
| hostname | gitserver | gitclient
※はじめはAWSで「t2.micro」でやってみたんですがインストールはできてもまともに動いてくれませんでした。どうやらメモリー2GB以上が推奨みたいです。しかし悲しいかな。。。Smartは有料orz
ってことで今回はAWSは使ってません!!
■用語説明
名称 | 内容 |
---|---|
マスターデータ | 一番重要なファイル。 |
リモートリポジトリ | ファイルやディレクトリの変更の状態を記録する場所 |
ローカルリポジトリ | ローカル(作業端末)上のリポジトリ |
プッシュ | ローカルリポジトリで変更した内容をリモートリポジトリへあげる(要はアップする) |
プル | プッシュの逆。リモートリポジトリの変更内容をローカルリポジトリへ反映させる(要はダウンロード) |
ブランチ | マスターデータから枝分かれさせ開発を行う(こいつのおかげでローカルリポジトリとリモートリポジトリがぶつからなくなる) |
マージ | 複数のブランチを結合しマスターデータに反映させる |
#####■事前準備----------------------------------------
◇yumリポジトリにGitlabを追加
# vi /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[gitlab-ce-source]
name=gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
◇Postfix,Opensshの設定
[Postfix][Openssh]はGitlabの前提ソフトウェアになります。
RHEL7の場合、標準で入っています。またOpensshのサービスも標準で起動しています。よって確認はpostfixの起動のみとなります。
# systemctl enable postfix
# systemctl start postfix
######■導入----------------------------------------
◇Gitlab-ceのインストール
yumでやった方が楽です
# yum -y install gitlab-ce
猫が出てきた!!
yum終了後ブラウザを起動させてhttp://<IP>
にアクセス!!
・・・・・・・つながらん...(TT)
なぜと思い調べてみると・・・
Firewall
。。。
こんなんで30分悩んだ自分に腹が立って停止しました!!!
◇Firewalldをいらない派
# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld
◇Firewalldいる派
# firewall-cmd --permanent --add-service=http
# systemctl reload firewalld
してしてFirewallを停止させた後気を取り直して
http://<ip>
にアクセス!!・・・・つながった!!
ってことで次!!
◇Git インストール
マスターデータを格納しているサーバで実行します。ファイルのアップロードとかに必要になります。
今回はマスターデータを格納している「gitserver」とマスターデータに編集を加えるローカルリポジトリ用の「gitclient」の1台に入れます。手順は以下のコマンドを2台のサーバで実行します。
# yum -y install git
◇WEBブラウザよりパスワード変更
Username: root
Password: 5iveL!fe
![02A.png](https://qiita-image-store.s3.amazonaws.com/0/150678/28f2a264-3415-70b7-42b0-ea4d32300071.png)
◇変更したパスワードでログイン
Username: root
Password: <password>
◇ログイン画面確認
######■設定----------------------------------------
◇プロジェクト作成
前回の「◇ログイン画面確認」から引き続きます
1.[New Project]を押す。
1.プロジェクト名入力・・・・・・「testproject」
2.説明文入力・・・・・・・・・・「テスト用のプロジェクト」
3.Visibility Level・・・・・・「Private」
4.「Create Project」をクリック
Pribate : アクセス権を明示的に指定
Internal : ログイン済みのユーザのみ閲覧可能
Public : だれでもアクセス可能
◇プロジェクト確認
現段階ではプロジェクトができただけでまだ何もありません。
◇作成したプロジェクトにリポジトリ作成
マスターデータが存在しているサーバにて作業を行います
今回は以下のコマンドを実行しマスターデータの作成をしています。
# mkdir -p testproject/test1/test11
# mkdir -p /work/testproject/test1/test12
# mkdir -p /work/testproject/test1/test13
# echo def_input >> /work/testproject/test1/test11/file111
# echo def_input >> /work/testproject/test1/test11/file112
# echo def_input >> /work/testproject/test1/test12/file121
# echo def_input >> /work/testproject/test1/test12/file122
◇Git初回設定
「~/.gitconfig」に接続するユーザとメールアドレスを記載します。
ユーザはGitLab上に存在するユーザになります。またメールアドレスですがこれは必要なければ適当な名前で平気です。必要な場合はちゃんと使えるメールアドレスを指定してください。(今回は適当にやってます)
# git config --global user.name "root"
# git config --global user.email "root@hoge"
# cat ~/.gitconfig
[user]
name = root // user.nameで指定したアカウント
email = root@hoge // user.emailで指定したアカウント
#
◇Git Clone
現時点では空状態のプロジェクトに管理するファイルとかディレクトリをアップします。(今回は「/work/testproject」になります)
作業端末 : gitserver
# cd /work/testproject //アップするディレクトリへ移動
# git init //gitリポジトリの作成
# git remote add origin <GitURL> //リモートリポジトリの指定
# git add . //変更対象のファイル等を指定する
# git commit -m "1st push" //変更状態の保存
# git push -u origin master //リポジトリアップロード
※gitURLはブラウザ上の「project」にあります
ブラウザの[Repository]にファイルの確認ができる
◇ローカルリポジトリの作成(Clone)
ファイルの編集を行うサーバにリモートリポジトリからダウンロードしてリモートリポジトリのクローンをします。
対象サーバは「gitclient」になります。
作業端末 : gitclient
# ls /work
#
# git config --global user.name "root"
# git config --global user.email "root@hoge"
# cd /work //ローカルリポジトリを作るパスに移動
# git clone <gitURL> // リモートリポジトリからクローン
Username for 'http://hostname': root
Password for 'http://root@hostname':<パスワード>
# ls /work
testproject
# 作業端末サーバのプロジェクトのリモートリポジトリがダウンロードされる
◇ローカルリポジトリにて編集したファイルをサーバにアップロードする
クローンしたローカルリポジトリで編集したファイルをサーバにアップロード(Push)します。
今回はローカルリポジトリにファイル(readme)を追加してreadmeをプッシュします。
作業端末 : gitclient
# ls -la
合計 19
drwxr-xr-x. 6 root root 93 11月 30 14:50 .
drwxr-xr-x. 4 root root 4096 11月 30 14:49 ..
drwxr-xr-x. 8 root root 4096 11月 30 14:38 .git
-rw-r--r--. 1 root root 10 11月 30 14:38 file01
-rw-r--r--. 1 root root 10 11月 30 14:38 file02
drwxr-xr-x. 4 root root 32 11月 30 14:38 test1
drwxr-xr-x. 4 root root 32 11月 30 14:38 test2
drwxr-xr-x. 4 root root 32 11月 30 14:38 test3
#
# echo Clientmessage >> /work/testproject/readme
# ls -la
合計 20
drwxr-xr-x. 6 root root 93 11月 30 14:50 .
drwxr-xr-x. 4 root root 4096 11月 30 14:49 ..
drwxr-xr-x. 8 root root 4096 11月 30 14:38 .git
-rw-r--r--. 1 root root 14 11月 30 14:50 readme // 追加ファイル
-rw-r--r--. 1 root root 10 11月 30 14:38 file01
-rw-r--r--. 1 root root 10 11月 30 14:38 file02
drwxr-xr-x. 4 root root 32 11月 30 14:38 test1
drwxr-xr-x. 4 root root 32 11月 30 14:38 test2
drwxr-xr-x. 4 root root 32 11月 30 14:38 test3
#
# git add .
# git commit -m "2nd push"
# git push origin master
Username for 'http://hostname': root
Password for 'http://root@hostname':
#
ローカルリポジトリの編集結果がGitLabにアップロードされる
◇GitLabの最新状態のリモートリポジトリをマスターデータに反映させる
「GitClient」で編集し、プッシュした最新のリモートリポジトリを「GitServer」に反映させます(Pull)
作業端末 : gitserver
# ls -la /work/testproject
合計 32
drwxr-xr-x 6 root root 4096 11月 30 14:28 .
drwxr-xr-x. 5 root root 4096 11月 30 12:36 ..
drwxr-xr-x 8 root root 4096 11月 30 14:30 .git
-rw-r--r-- 1 root root 10 11月 30 12:04 file01
-rw-r--r-- 1 root root 10 11月 30 12:04 file02
drwxr-xr-x 5 root root 4096 11月 30 12:02 test1
drwxr-xr-x 5 root root 4096 11月 30 12:03 test2
drwxr-xr-x 5 root root 4096 11月 30 12:03 test3
#
現時点では先ほどGitLabにプッシュした「readme」が反映されていません
# git pull origin master
Username for 'http://hostname': root
Password for 'http://root@hostname':<パスワード>
#
# ls -la /work/testproject
合計 33
drwxr-xr-x 6 root root 4096 11月 30 14:28 .
drwxr-xr-x. 5 root root 4096 11月 30 12:36 ..
drwxr-xr-x 8 root root 4096 11月 30 14:30 .git
-rw-r--r-- 1 root root 10 11月 30 12:04 file01
-rw-r--r-- 1 root root 10 11月 30 12:04 file02
-rw-r--r-- 1 root root 14 11月 30 15:04 readme //ファイルが追加されている
drwxr-xr-x 5 root root 4096 11月 30 12:02 test1
drwxr-xr-x 5 root root 4096 11月 30 12:03 test2
drwxr-xr-x 5 root root 4096 11月 30 12:03 test3
#
マスターデータに「readme」が反映された
######■まとめ
今回はGitLabのインストールからシンプルな使い方を記載しました。今回は何も知らない状態からとりあえず使える状態になるまでを目標においてやっていましたが実際にはもっと複雑な作業がたくさんあるんですよね。。。そこは筆者も勉強中です。