標籤:

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

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

來自專欄 HelloDog

前言

GitLab Community Edition 新版本已經集成了CI/CD的支持,從某種程度上來說可以告別對於Jenkins的依賴,我本來計劃是寫基於Docker部署GitLab但感覺還是有點重,對於內網離線環境來說基於容器部署也未必是合理的方案,這裡沿用傳統的部署方式介紹簡單且長期有效的GitLab部署方案供大家參考,或許未來會增加基於容器的部署方案和CI/CD的分享,因需而變。

RHEL7/CentOS7在線和離線安裝GitLab配置實踐,GitLab漢化配置使用小結

更新記錄

2018年04月10日 - 初稿

閱讀原文 - wsgzao.github.io/post/g

擴展閱讀

GitLab Installation - about.gitlab.com/instal

GitLab簡介

GitLab是利用Ruby On Rails開發的一個開源版本管理系統,實現了一個自託管的Git項目倉庫,是集代碼託管,測試,部署於一體的開源git倉庫管理軟體,可通過web界面來進行訪問公開的或私人項目。與Github類似,GitLab能夠瀏覽代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本,並提供一個文件歷史庫。它還提供一個代碼片段收集功能可以輕鬆實現代碼復用,便於日後需要的時候查找。

Git的家族成員

  • Git:是一種版本控制系統,是一個命令,是一種工具。
  • Gitlib:是用於實現Git功能的開發庫。
  • Github:是一個基於Git實現的在線代碼託管倉庫,公開項目是免費的,也可以付費創建私人項目。
  • GitLab:是一個基於Git實現的在線代碼倉庫託管軟體,可以用GitLab搭建一套類似Github的系統。

GitLab對硬體還是有一定要求的,1核心的CPU基本上可以滿足需求,大概支撐100個左右的用戶,不過在運行GitLab網站的同時還需要運行多個後台job,就會顯得有點捉襟見肘了。需要至少4GB的可定址內存(RAM交換)來安裝和使用GitLab,操作系統和任何其他正在運行的應用程序也將使用內存,因此請記住,在運行GitLab之前,您至少需要4GB的可用空間。如果使用更少的內存,GitLab將在重新配置運行期間給出奇怪的錯誤,我用虛擬機來分別新建1G,2G內存的CentOS系統來裝GitLab,確實非常捉襟見肘啊,傷不起。

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安裝

在線安裝gitlab-ce

# 安裝必要的依賴包,如果不需要可以考慮跳過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-serversudo systemctl enable sshdsudo systemctl start sshdsudo firewall-cmd --permanent --add-service=httpsudo 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 postfixsudo systemctl enable postfixsudo systemctl start postfix# 使用阿里雲作加速cd /etc/yum.repos.d/ && rm -f *.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repowget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 添加GitLab鏡像源並安裝,建議切換國內資源加速訪問curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash# 創建gitlab-ce的repo,使用清華大學加速vim /etc/yum.repos.d/gitlab_gitlab-ce.repo[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7repo_gpgcheck=0gpgcheck=0enabled=1gpgkey=https://packages.gitlab.com/gpg.key#配置並啟動 GitLabgitlab-ctl reconfigure# 第一次訪問GitLab,系統會重定向頁面到重定向到重置密碼頁面,你需要輸入初始化管理員賬號的密碼,管理員的用戶名為root,重置密碼後新密碼即為剛輸入的密碼。0.0.0.0:80

離線安裝gitlab-ce

# 使用阿里雲作加速cd /etc/yum.repos.d/ && rm -f *.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repowget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 添加GitLab鏡像源並安裝,建議切換國內資源加速訪問curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash# 創建gitlab-ce的repo,使用清華大學加速vim /etc/yum.repos.d/gitlab_gitlab-ce.repo[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7repo_gpgcheck=0gpgcheck=0enabled=1gpgkey=https://packages.gitlab.com/gpg.key#安裝yum-plugin-downloadonly插件yum install -y yum-plugin-downloadonly# 下載gitlab-ce相關rpm到指定目錄mkdir -p /tmp/repo/gitlab-ce/yum install --downloadonly --downloaddir=/tmp/repo/gitlab-ce/ gitlab-ce# 拷貝文件至內網離線安裝rpm -ivh /tmp/repo/gitlab-ce/*#配置並啟動 GitLabgitlab-ctl reconfigure# 第一次訪問GitLab,系統會重定向頁面到重定向到重置密碼頁面,你需要輸入初始化管理員賬號的密碼,管理員的用戶名為root,重置密碼後新密碼即為剛輸入的密碼。0.0.0.0:80

GitLab漢化

如果團隊里英文水平都不錯的話,是沒必要漢化的,我個人的建議是堅持使用原版不做漢化

GitLab中文社區的項目,v7-v8.8是由Larry Li發起的「GitLab中文社區版項目」

gitlab.com/larryli/gitl

從v8.9之後由@xhang開始繼續漢化項目

gitlab.com/xhang/gitlab

# 如沒安裝git,需提前安裝yum install -y git# 創建gitlba漢化包下載目錄mkdir -p /tmp/gitlabcd /tmp/gitlab# 下載最新的漢化包git clone https://gitlab.com/xhang/gitlab.git# 如果是要下載老版本的漢化包,需要加上老版本的分支,如果想下載10.0.2,可以運行如下語句git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh# 停止GitLab並執行如下語句gitlab-ctl stopcp /tmp/gitlab/gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ -rf# 複製時可能不斷提示是否要覆蓋,這時可能是系統每次執行cp命令時,其實是執行了cp -i命令的別名。出現這種情況可以修改~/.bashrc,在「alias cp=』cp-i』」前加#注釋即可。使用命令或者註銷登錄即可source ~/.bashrc# 接下來可以重新配置和啟動gitlab-ctl reconfiguregitlab-ctl restart

GitLab命令

# 語法gitlab-ctl command (subcommand)Service Management Commandsstart # 啟動所有服務stop # 關閉所有服務restart # 重啟所有服務status # 查看所有服務狀態tail # 查看日誌信息service-list # 列舉所有啟動服務graceful-kill # 平穩停止一個服務# 啟動所有服務gitlab-ctl start # 啟動單獨一個服務gitlab-ctl start nginx#查看日誌,查看所有日誌gitlab-ctl tail#查看具體一個日誌,類似tail -fgitlab-ctl tail nginxGeneral Commandshelp # 幫助reconfigure # 修改配置文件之後,需要重新載入下show-config # 查看所有服務配置文件信息uninstall # 卸載這個軟體cleanse # 刪除gitlab數據,重新白手起家# 顯示所有服務配置文件gitlab-ctl show-config# 卸載gitlabgitlab-ctl uninstall

QQ郵箱配置

默認情況下,GitLab用qq郵箱註冊是發不出確認郵件的。查看了網上很多郵箱配置的教程,大部分都是誤導的。像這類軟體,歸根到底總結為一句話:一切以官網文檔為準。QQ郵箱最好用企業郵箱,本人用個人郵箱進行測試是有些小問題的,正確配置如下:

# 編輯gitlab.rbvim /etc/gitlab/gitlab.rbgitlab_rails[smtp_enable] = truegitlab_rails[smtp_address] = "smtp.exmail.qq.com"gitlab_rails[smtp_port] = 465gitlab_rails[smtp_user_name] = "xxxx@xx.com"gitlab_rails[smtp_password] = "password"gitlab_rails[smtp_authentication] = "login"gitlab_rails[smtp_enable_starttls_auto] = truegitlab_rails[smtp_tls] = truegitlab_rails[gitlab_email_from] = xxxx@xx.com

GitLab使用

登錄GitLab

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

創建Project

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

yum install git

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

ssh-keygen -t rsa

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

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

Profile Settings => SSH Keys => Add SSH key

簡單配置

# 配置使用Git倉庫的人員姓名git config --global user.name "wangao" # 配置使用Git倉庫的人員email,填寫自己的公司郵箱git config --global user.email "wangao@test.com" # 克隆項目,在本地生成同名目錄,並且目錄中會有所有的項目文件git clone git@172.28.70.126:root/test.git# 進入到項目目錄cd test/ # 創建需要上傳到GitLab中的目標文件echo "test" > test.sh# 將test.sh文件加入到索引中git add test.sh# 將test.sh提交到本地倉庫git commit -m "test.sh"# 將文件同步到GitLab伺服器上git push -u origin master# 在網頁中查看上傳的test.sh文件已經同步到GitLab中

推薦閱讀:

Linux-CentOs7-svn安裝
Linux(CentOS7)下使用mono+ArchiSteamFarm掛卡
CentOS7區域設置
VPS上安裝centos7合適么?怎麼配置優化lnmp環境?
企業用哪個版本的 Linux?

TAG:Git | GitHub | CentOS |