GitLab安裝和使用
GitLab基本介紹
GitLab是利用Ruby on Rails一個開源的版本管理系統,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。
與Github類似,GitLab能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。
它還提供一個代碼片段收集功能可以輕松實現代碼復用,便於日后有需要的時候進行查找。
Git的家族成員
Git:是一種版本控制系統,是一個命令,是一種工具。
Gitlib:是用於實現Git功能的開發庫。
Github:是一個基於Git實現的在線代碼托管倉庫,包含一個網站界面,向互聯網開放。
GitLab:是一個基於Git實現的在線代碼倉庫托管軟件,你可以用gitlab自己搭建一個類似於Github一樣的系統,一般用於在企業、學校等內部網絡搭建git私服。
Gitlab的服務構成
Nginx:靜態web服務器。
gitlab-shell:用於處理Git命令和修改authorized keys列表。
gitlab-workhorse: 輕量級的反向代理服務器。
logrotate:日志文件管理工具。
postgresql:數據庫。
redis:緩存數據庫。
sidekiq:用於在后台執行隊列任務(異步執行)。
unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個服務器上面的。
GitLab工作流程
GitLab Shell
GitLab Shell有兩個作用:為GitLab處理Git命令、修改authorized keys列表。
當通過SSH訪問GitLab Server時,GitLab Shell會:
- 限制執行預定義好的Git命令(git push, git pull, git annex)
- 調用GitLab Rails API 檢查權限
- 執行pre-receive鈎子(在GitLab企業版中叫做Git鈎子)
- 執行你請求的動作 處理GitLab的post-receive動作
- 處理自定義的post-receive動作
當通過http(s)訪問GitLab Server時,工作流程取決於你是從Git倉庫拉取(pull)代碼還是向git倉庫推送(push)代碼。
如果你是從Git倉庫拉取(pull)代碼,GitLab Rails應用會全權負責處理用戶鑒權和執行Git命令的工作;
如果你是向Git倉庫推送(push)代碼,GitLab Rails應用既不會進行用戶鑒權也不會執行Git命令,它會把以下工作交由GitLab Shell進行處理:
- 調用GitLab Rails API 檢查權限
- 執行pre-receive鈎子(在GitLab企業版中叫做Git鈎子)
- 執行你請求的動作
- 處理GitLab的post-receive動作
- 處理自定義的post-receive動作
GitLab Workhorse
GitLab Workhorse是一個敏捷的反向代理。它會處理一些大的HTTP請求,比如文件上傳、文件下載、Git push/pull和Git包下載。其它請求會反向代理到GitLab Rails應用,即反向代理給后端的unicorn。
Gitlab環境部署
環境要求:內存不低於2G
1.方法一:通過yum源安裝:
1.1 配置yum源
復制代碼
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.key
1.2、更新本地yum緩存
復制代碼
sudo yum makecache

1.3、安裝GitLab社區版
復制代碼
sudo yum install gitlab-ce #自動安裝最新版
sudo yum install gitlab-ce-x.x.x #安裝指定版本

2.方法二:通過rpm包進行安裝
2.1 下載rpm包
gitlab通過下載rpm包集成了它所需要的軟件,簡化安裝步驟,rpm包可以從官網上或清華鏡像源獲取
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/.
下載最新的版本:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
[root@otrs004097 opt]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm [root@otrs004097 opt]# rpm -ivh gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm 或者 [root@otrs004097 opt]#yum localinstall -y gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
2.2 修改配置
[root@otrs004097 ~]# vim /etc/gitlab/gitlab.rb external_url 'http://192.168.4.97' [root@otrs004097 ~]# gitlab-ctl reconfigure #####重新加載配置
注意:要保留8080端口否則會報錯的。
[root@otrs004097 ~]# vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:8080", :tcp_nopush => true
[root@otrs004097 ~]# gitlab-ctl reconfigure #####重新加載配置
備注:gitlab的守護進程是會默認開啟nginx的,如果想要關閉,可以嘗試一下操作
gitlab-ctl stop nginx
gitlab-ctl restart nginx
如果想要釋放資源,關閉gitlab時,可以嘗試一下操作
gitlab-ctl stop
GitLab常用命令
復制代碼
sudo gitlab-ctl start # 啟動所有 gitlab 組件;
sudo gitlab-ctl stop # 停止所有 gitlab 組件;
sudo gitlab-ctl restart # 重啟所有 gitlab 組件;
sudo gitlab-ctl status # 查看服務狀態;
sudo gitlab-ctl reconfigure # 啟動服務;
sudo vim /etc/gitlab/gitlab.rb # 修改默認的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 檢查gitlab;
sudo gitlab-ctl tail # 查看日志;
GitLab使用
登錄GitLab
、在瀏覽器的地址欄中輸入ECS服務器的公網IP即可登錄GitLab的界面,第一次登錄使用的用戶名和密碼為 root 和 5iveL!fe。

2、首次登錄會強制用戶修改密碼。密碼修改成功后,輸入新密碼進行登錄。
創建Project
1、安裝Git工具
linux:安裝Git,使用自帶的源安裝。
復制代碼
yum install git

2、生成密鑰文件
使用ssh-keygen生成密鑰文件.ssh/id_rsa.pub。


3.在GitLab的主頁中新建一個Project


4.添加ssh key
導入步驟2中生成的密鑰文件內容:


ssh key添加完成:


7、點擊項目,查看ssh地址和http地址

項目地址,該地址在進行clone操作時需要用到:

簡單配置
1、配置使用Git倉庫的人員姓名
復制代碼
git config --global user.name "MyGit"
2、配置使用Git倉庫的人員email
填寫自己的公司郵箱
復制代碼
git config --global user.email "support@test.com"
3、克隆項目
在本地生成同名目錄,並且目錄中會有所有的項目文件
復制代碼
git clone git@iZbp1h7fx16gkr9u4gk8v3Z:root/test.git

上傳文件
1、創建目錄,並進入到項目目錄
mkdir /root/test
cd /root/test
2、創建需要上傳到GitLab中的目標文件
復制代碼
echo “test” > /root/test.sh
3、將目標文件或者目錄拷貝到項目目錄下
復制代碼
cp /root/test.sh ./

4、將test.sh文件加入到索引中
復制代碼
git add test.sh
5、將test.sh提交到本地倉庫
復制代碼
git commit -m “test.sh”
6、將文件同步到GitLab服務器上
復制代碼
git push -u origin master

7、查看代碼
在網頁中查看上傳的test.sh文件已經同步到GitLab中
