RHEL7/CentOS7在線和離線安裝GitLab配置使用實(shí)踐

前言

GitLab Community Edition 新版本已經(jīng)集成了CI/CD的支持,從某種程度上來(lái)說(shuō)可以告別對(duì)于Jenkins的依賴(lài),我本來(lái)計(jì)劃是寫(xiě)基于Docker部署GitLab但感覺(jué)還是有點(diǎn)重,對(duì)于內(nèi)網(wǎng)離線環(huán)境來(lái)說(shuō)基于容器部署也未必是合理的方案,這里沿用傳統(tǒng)的部署方式介紹簡(jiǎn)單且長(zhǎng)期有效的GitLab部署方案供大家參考,或許未來(lái)會(huì)增加基于容器的部署方案和CI/CD的分享,因需而變。

RHEL7/CentOS7在線和離線安裝GitLab配置實(shí)踐,GitLab漢化配置使用小結(jié)

更新記錄

2018年04月10日 - 初稿

閱讀原文 - https://wsgzao.github.io/post/gitlab/

擴(kuò)展閱讀

GitLab Installation - https://about.gitlab.com/installation

GitLab簡(jiǎn)介

GitLab是利用Ruby On Rails開(kāi)發(fā)的一個(gè)開(kāi)源版本管理系統(tǒng),實(shí)現(xiàn)了一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),是集代碼托管,測(cè)試,部署于一體的開(kāi)源git倉(cāng)庫(kù)管理軟件,可通過(guò)web界面來(lái)進(jìn)行訪問(wèn)公開(kāi)的或私人項(xiàng)目。與Github類(lèi)似,GitLab能夠?yàn)g覽代碼,管理缺陷和注釋。可以管理團(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問(wèn),它非常易于瀏覽提交過(guò)的版本,并提供一個(gè)文件歷史庫(kù)。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后需要的時(shí)候查找。

Git的家族成員

  • Git:是一種版本控制系統(tǒng),是一個(gè)命令,是一種工具。
  • Gitlib:是用于實(shí)現(xiàn)Git功能的開(kāi)發(fā)庫(kù)。
  • Github:是一個(gè)基于Git實(shí)現(xiàn)的在線代碼托管倉(cāng)庫(kù),公開(kāi)項(xiàng)目是免費(fèi)的,也可以付費(fèi)創(chuàng)建私人項(xiàng)目。
  • GitLab:是一個(gè)基于Git實(shí)現(xiàn)的在線代碼倉(cāng)庫(kù)托管軟件,可以用GitLab搭建一套類(lèi)似Github的系統(tǒng)。

GitLab對(duì)硬件還是有一定要求的,1核心的CPU基本上可以滿足需求,大概支撐100個(gè)左右的用戶,不過(guò)在運(yùn)行GitLab網(wǎng)站的同時(shí)還需要運(yùn)行多個(gè)后臺(tái)job,就會(huì)顯得有點(diǎn)捉襟見(jiàn)肘了。需要至少4GB的可尋址內(nèi)存(RAM交換)來(lái)安裝和使用GitLab,操作系統(tǒng)和任何其他正在運(yùn)行的應(yīng)用程序也將使用內(nèi)存,因此請(qǐng)記住,在運(yùn)行GitLab之前,您至少需要4GB的可用空間。如果使用更少的內(nèi)存,GitLab將在重新配置運(yùn)行期間給出奇怪的錯(cuò)誤,我用虛擬機(jī)來(lái)分別新建1G,2G內(nèi)存的CentOS系統(tǒng)來(lái)裝GitLab,確實(shí)非常捉襟見(jiàn)肘啊,傷不起。

Gitlab的服務(wù)構(gòu)成

  • Nginx:靜態(tài)web服務(wù)器
  • gitlab-shell:用于處理Git命令和修改authorized keys列表
  • gitlab-workhorse: 輕量級(jí)的反向代理服務(wù)器
  • logrotate:日志文件管理工具
  • postgresql:數(shù)據(jù)庫(kù)
  • redis:緩存數(shù)據(jù)庫(kù)
  • sidekiq:用于在后臺(tái)執(zhí)行隊(duì)列任務(wù)(異步執(zhí)行)
  • unicorn:An HTTP server for Rack applications,GitLab Rails應(yīng)用是托管在這個(gè)服務(wù)器上面的

GitLab工作流程

[圖片上傳失敗...(image-fdb67f-1523359408993)]

GitLab安裝

在線安裝gitlab-ce

# 安裝必要的依賴(lài)包,如果不需要可以考慮跳過(guò)
yum install pygpgme yum-utils
# On CentOS 7 (and RedHat/Oracle/Scientific Linux 7), the commands below will also open HTTP and SSH access in the system firewall.
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
# Next, install Postfix to send notification emails. If you want to use another solution to send emails please skip this step and configure an external SMTP server after GitLab has been installed.
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

# 使用阿里云作加速
cd /etc/yum.repos.d/ && rm -f *.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 添加GitLab鏡像源并安裝,建議切換國(guó)內(nèi)資源加速訪問(wèn)
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

# 創(chuàng)建gitlab-ce的repo,使用清華大學(xué)加速
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

#配置并啟動(dòng) GitLab
gitlab-ctl reconfigure

# 第一次訪問(wèn)GitLab,系統(tǒng)會(huì)重定向頁(yè)面到重定向到重置密碼頁(yè)面,你需要輸入初始化管理員賬號(hào)的密碼,管理員的用戶名為root,重置密碼后新密碼即為剛輸入的密碼。
0.0.0.0:80

離線安裝gitlab-ce

# 使用阿里云作加速
cd /etc/yum.repos.d/ && rm -f *.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 添加GitLab鏡像源并安裝,建議切換國(guó)內(nèi)資源加速訪問(wèn)
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

# 創(chuàng)建gitlab-ce的repo,使用清華大學(xué)加速
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

#安裝yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly

# 下載gitlab-ce相關(guān)rpm到指定目錄
mkdir -p /tmp/repo/gitlab-ce/
yum install --downloadonly --downloaddir=/tmp/repo/gitlab-ce/ gitlab-ce

# 拷貝文件至內(nèi)網(wǎng)離線安裝
rpm -ivh /tmp/repo/gitlab-ce/*

#配置并啟動(dòng) GitLab
gitlab-ctl reconfigure

# 第一次訪問(wèn)GitLab,系統(tǒng)會(huì)重定向頁(yè)面到重定向到重置密碼頁(yè)面,你需要輸入初始化管理員賬號(hào)的密碼,管理員的用戶名為root,重置密碼后新密碼即為剛輸入的密碼。
0.0.0.0:80

GitLab漢化

如果團(tuán)隊(duì)里英文水平都不錯(cuò)的話,是沒(méi)必要漢化的,我個(gè)人的建議是堅(jiān)持使用原版不做漢化

GitLab中文社區(qū)的項(xiàng)目,v7-v8.8是由Larry Li發(fā)起的“GitLab中文社區(qū)版項(xiàng)目”
https://gitlab.com/larryli/gitlab

從v8.9之后由@xhang開(kāi)始繼續(xù)漢化項(xiàng)目
https://gitlab.com/xhang/gitlab

# 如沒(méi)安裝git,需提前安裝
yum install -y git

# 創(chuàng)建gitlba漢化包下載目錄
mkdir -p /tmp/gitlab
cd /tmp/gitlab

# 下載最新的漢化包
git clone https://gitlab.com/xhang/gitlab.git

# 如果是要下載老版本的漢化包,需要加上老版本的分支,如果想下載10.0.2,可以運(yùn)行如下語(yǔ)句
git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh

# 停止GitLab并執(zhí)行如下語(yǔ)句
gitlab-ctl stop
cp /tmp/gitlab/gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ -rf

# 復(fù)制時(shí)可能不斷提示是否要覆蓋,這時(shí)可能是系統(tǒng)每次執(zhí)行cp命令時(shí),其實(shí)是執(zhí)行了cp -i命令的別名。出現(xiàn)這種情況可以修改~/.bashrc,在“alias cp=’cp-i’”前加#注釋即可。使用命令或者注銷(xiāo)登錄即可
source ~/.bashrc

# 接下來(lái)可以重新配置和啟動(dòng)
gitlab-ctl reconfigure
gitlab-ctl restart

GitLab命令

# 語(yǔ)法
gitlab-ctl command (subcommand)

Service Management Commands

start # 啟動(dòng)所有服務(wù)
stop # 關(guān)閉所有服務(wù)
restart # 重啟所有服務(wù)
status # 查看所有服務(wù)狀態(tài)
tail # 查看日志信息
service-list # 列舉所有啟動(dòng)服務(wù)
graceful-kill # 平穩(wěn)停止一個(gè)服務(wù)

# 啟動(dòng)所有服務(wù)
gitlab-ctl start 
# 啟動(dòng)單獨(dú)一個(gè)服務(wù)
gitlab-ctl start nginx
#查看日志,查看所有日志
gitlab-ctl tail
#查看具體一個(gè)日志,類(lèi)似tail -f
gitlab-ctl tail nginx

General Commands

help # 幫助
reconfigure # 修改配置文件之后,需要重新加載下
show-config # 查看所有服務(wù)配置文件信息
uninstall # 卸載這個(gè)軟件
cleanse # 刪除gitlab數(shù)據(jù),重新白手起家

# 顯示所有服務(wù)配置文件
gitlab-ctl show-config

# 卸載gitlab
gitlab-ctl uninstall

QQ郵箱配置

默認(rèn)情況下,GitLab用qq郵箱注冊(cè)是發(fā)不出確認(rèn)郵件的。查看了網(wǎng)上很多郵箱配置的教程,大部分都是誤導(dǎo)的。像這類(lèi)軟件,歸根到底總結(jié)為一句話:一切以官網(wǎng)文檔為準(zhǔn)。QQ郵箱最好用企業(yè)郵箱,本人用個(gè)人郵箱進(jìn)行測(cè)試是有些小問(wèn)題的,正確配置如下:

# 編輯gitlab.rb
vim /etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'

GitLab使用

登錄GitLab

  1. 在瀏覽器的地址欄中輸入IP即可登錄GitLab的界面,老版本第一次登錄使用的用戶名和密碼為 root5iveL!fe
  2. 首次登錄會(huì)強(qiáng)制用戶修改密碼。密碼修改成功后,輸入新密碼進(jìn)行登錄

創(chuàng)建Project

1.安裝Git工具linux:安裝Git,使用自帶的源安裝

yum install git

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

ssh-keygen -t rsa

3.在GitLab的主頁(yè)中新建一個(gè)Project

4.添加ssh key導(dǎo)入步驟2中生成的密鑰文件內(nèi)容:

Profile Settings => SSH Keys => Add SSH key

簡(jiǎn)單配置

# 配置使用Git倉(cāng)庫(kù)的人員姓名
git config --global user.name "wangao" 
# 配置使用Git倉(cāng)庫(kù)的人員email,填寫(xiě)自己的公司郵箱
git config --global user.email "wangao@test.com" 
# 克隆項(xiàng)目,在本地生成同名目錄,并且目錄中會(huì)有所有的項(xiàng)目文件
git clone git@172.28.70.126:root/test.git
# 進(jìn)入到項(xiàng)目目錄
cd test/ 
# 創(chuàng)建需要上傳到GitLab中的目標(biāo)文件
echo "test" > test.sh
# 將test.sh文件加入到索引中
git add test.sh
# 將test.sh提交到本地倉(cāng)庫(kù)
git commit -m "test.sh"
# 將文件同步到GitLab服務(wù)器上
git push -u origin master
# 在網(wǎng)頁(yè)中查看上傳的test.sh文件已經(jīng)同步到GitLab中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容