GitLab搭建及配置

由于公司業(yè)務抑诸,需要上Git版本控制烂琴。

  • 目前市面上比較有名的Git服務提供商,國外有GitHub蜕乡、BitBucket奸绷、GitLab,國內(nèi)有Coding层玲。
  • 現(xiàn)有的服務商号醉,對于免費的套餐都有一定的限制。比如:GitHub只允許建立免費的開源repository辛块,建立私有的倉庫需要收費畔派。BitBucket允許建立無限制的私有項目,不過對于項目中參與的開發(fā)人員是有人數(shù)限制的润绵,當團隊中開發(fā)者規(guī)模達到一定數(shù)量后线椰,需要付費購買相應的套餐。

GitLab社區(qū)版是免費的尘盼,不但能建立免費的私有倉庫而且沒有數(shù)量上限憨愉,參與人員也沒有數(shù)量限制,還能設置成員的權限卿捎,甚至細致到具體某條分支的權限配紫,以及強大的工作流等等。

GitLab很適合中小型非開源項目公司娇澎。

一笨蚁、GitLab 簡介

GitLab 是一個利用Ruby on Rails 開發(fā)的開源版本控制系統(tǒng),實現(xiàn)一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目括细。

它擁有與GitHub類似的功能伪很,能夠瀏覽源代碼,管理缺陷和注釋奋单★笔裕可以管理團隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫览濒。團隊成員可以利用內(nèi)置的簡單聊天程序(Wall)進行交流呆盖。它還提供一個代碼片段收集功能可以輕松實現(xiàn)代碼復用,便于日后有需要的時候進行查找贷笛。

開源中國代碼托管平臺 碼云 就是基于GitLab項目搭建应又。

GitLab 分為 GitLab Community Edition(CE) 社區(qū)版 和 GitLab Enterprise Edition(EE) 專業(yè)版。社區(qū)版免費乏苦,專業(yè)版收費株扛,兩個版本在功能上的差異對比,可以參考官方對比說明

二汇荐、GitLab 安裝和配置

安裝社區(qū)版洞就,GitLab CE 版本:9.2.6

1、GitLab安裝

通過GitLab官方提供的Omnibus安裝包來安裝掀淘,相對方便旬蟋。Omnibus安裝包套件整合了大部分的套件(Nginx、ruby on rails革娄、git倾贰、redis、postgresql等)稠腊,再不用額外安裝這些軟件躁染,減輕了絕大部分安裝量。

GitLab官方安裝文檔 :CentOS6.x系統(tǒng)

安裝依賴包架忌,并配置postfix服務為GitLab郵件服務

# yum install curl openssh-server openssh-clients postfix cronie
# service postfix start
# chkconfig postfix on

打開HTTP和SSH端口

# iptables -I INPUT -m tcp -p tcp --dport 22 -j ACCEPT
# iptables -I INPUT -m tcp -p tcp --dport 80 -j ACCEPT

兩種安裝源

  • 從官方鏡像源安裝

添加GitLab倉庫并安裝到服務器上

# curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
# yum install gitlab-ce     # 自動安裝最新版本

# yum install gitlab-ce-9.2.1-ce.0.el6     # 安裝指定版本
  • 從第三方鏡像源安裝

官方鏡像源在國外,國內(nèi)安裝會很慢我衬,甚至有時因網(wǎng)絡問題會無法安裝叹放。

國內(nèi)推薦使用清華大學開源軟件鏡像源

新建 /etc/yum.repos.d/gitlab-ce.repo挠羔,內(nèi)容為:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

再執(zhí)行

# yum makecache   # 更新本地YUM緩存
# yum install gitlab-ce    # 自動安裝最新版本

修改配置文件/etc/gitlab/gitlab.rb井仰,綁定域名

external_url 'http://gitlab.xxx.com'

啟動GitLab,使得配置生效

# gitlab-ctl reconfigure

在Dnspod中添加解析記錄

使用瀏覽器訪問GitLab

首次訪問GitLab,系統(tǒng)會讓你重新設置管理員的密碼,設置成功后會返回登錄界面.
默認的管理員賬號是root,如果你想更改默認管理員賬號,請輸入上面設置的新密碼登錄系統(tǒng)后修改帳號名.

GitLab安裝細節(jié)

主配置文件: /etc/gitlab/gitlab.rb
GitLab 文檔根目錄: /opt/gitlab
默認存儲庫位置: /var/opt/gitlab/git-data/repositories
GitLab Nginx 配置文件路徑:  /var/opt/gitlab/nginx/conf/gitlab-http.conf
Postgresql 數(shù)據(jù)目錄: /var/opt/gitlab/postgresql/data

GitLab由以下服務構成

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

2、配置SMTP服務

如果你不想用服務器自帶的postfix服務來發(fā)郵件,可以改用SMTP服務合是。

修改GitLab郵件服務配置(gitlab.rb文件)了罪,使用騰訊企業(yè)郵箱的SMTP服務器,填寫賬號和密碼

gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxx"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = 'plain'
gitlab_rails['smtp_enable_starttls_auto'] = true

使配置生效

# gitlab-ctl reconfigure
# gitlab-rake cache:clear RAILS_ENV=production      # 清除緩存

3聪全、GitLab配置HTTPS

GitLab默認是使用HTTP的泊藕,可以手動配置為HTTPS

上傳SSL證書

創(chuàng)建ssl目錄,用于存放SSL證書

# mkdir -p /etc/gitlab/ssl
# chmod 0700 /etc/gitlab/ssl

上傳證書并修改證書權限

# chmod 600 /etc/gitlab/ssl/*

修改GitLab的配置文件

修改配置文件/etc/gitlab/gitlab.rb

external_url "https://gitlab.xxx.com"
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.xxx.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.xxx.com.key"

重建配置难礼,使其生效

# gitlab-ctl reconfigure

以上操作后娃圆,GitLab自帶的Nginx服務的配置文件 /var/opt/gitlab/nginx/conf/gitlab-http.conf 會被重新修改:

server {
  listen *:80;
  server_name gitlab.xxx.com;
  server_tokens off; ## Don't show the nginx version number, a security best practice
  return 301 https://gitlab.xxx.com:443$request_uri;
  access_log  /var/log/gitlab/nginx/gitlab_access.log gitlab_access;
  error_log   /var/log/gitlab/nginx/gitlab_error.log;
}

不用額外再配置,HTTP 會自動跳轉(zhuǎn)到 HTTPS 蛾茉。

開放443端口

在防火墻上開放443端口讼呢,用于HTTPS

# iptables -I INPUT -m tcp -p tcp --dport 443 -j ACCEPT

4、修改root用戶密碼

對于普通用戶而言谦炬,可通過系統(tǒng)重置密碼悦屏,接收郵件即可“伤拢可是GitLab管理員賬號窜管,缺省郵箱 admin@example.com 是個不存在的郵箱地址,無法通過郵箱修改密碼稚机。
官方修改密碼文檔幕帆,根據(jù)文檔,修改root密碼的方法如下:

打開與Rails程序交互的控制臺

在root權限下赖条,執(zhí)行:

# gitlab-rails console production

等待一會失乾,直到控制臺加載成功。

獲取用戶信息并修改root用戶密碼

# gitlab-rails console production
Loading production environment (Rails 4.2.8)
irb(main):001:0> user = User.where(id: 1).first
=> #<User id: 1, email: "admin@example.com"......
irb(main):009:0> user.password = '12345678'
=> "12345678"
irb(main):010:0> user.password_confirmation = '12345678'
=> "12345678"
irb(main):011:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 510bb5be-a156-4522-9983-44d8a895e92a) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):011:0> exit

三纬乍、GitLab 常用命令

運維管理排查

# 查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

# 檢查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace

# 實時查看日志
gitlab-ctl tail

# 數(shù)據(jù)庫關系升級
gitlab-rake db:migrate

# 清理redis緩存
gitlab-rake cache:clear

# 升級GitLab-ce 版本
yum update gitlab-ce

# 升級PostgreSQL最新版本
gitlab-ctl pg-upgrade

服務管理

# 啟動所有 gitlab 組件:
gitlab-ctl start

# 停止所有 gitlab 組件:
gitlab-ctl stop

# 停止所有 gitlab postgresql 組件:
gitlab-ctl stop postgresql

# 停止相關數(shù)據(jù)連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 重啟所有 gitlab 組件:
gitlab-ctl restart

# 重啟所有 gitlab gitlab-workhorse 組件:
gitlab-ctl restart  gitlab-workhorse

# 查看服務狀態(tài)
gitlab-ctl status

# 生成配置并啟動服務
gitlab-ctl reconfigure

日志

# 實時查看所有日志
gitlab-ctl tail

# 實時檢查redis的日志
gitlab-ctl tail redis
 
# 實時檢查postgresql的日志
gitlab-ctl tail postgresql
 
# 檢查gitlab-workhorse的日志
gitlab-ctl tail gitlab-workhorse
 
# 檢查logrotate的日志
gitlab-ctl tail logrotate
 
# 檢查nginx的日志
gitlab-ctl tail nginx
 
# 檢查sidekiq的日志
gitlab-ctl tail sidekiq
 
# 檢查unicorn的日志
gitlab-ctl tail unicorn

四碱茁、GitLab備份和恢復

備份

GitLab作為公司項目代碼的版本管理系統(tǒng),數(shù)據(jù)非常重要仿贬,必須做好備份纽竣。

修改備份目錄

GitLab備份的默認目錄是 /var/opt/gitlab/backups ,如果想改備份目錄茧泪,可修改/etc/gitlab/gitlab.rb:

gitlab_rails['backup_path'] = '/data/backups' 

修改配置后蜓氨,記得:

gitlab-ctl reconfigure

備份命令

gitlab-rake gitlab:backup:create

該命令會在備份目錄(默認:/var/opt/gitlab/backups/)下創(chuàng)建一個tar壓縮包xxxxxxxx_gitlab_backup.tar,其中開頭的xxxxxx是備份創(chuàng)建的時間戳队伟,這個壓縮包包括GitLab整個的完整部分穴吹。

自動備份

通過任務計劃crontab 實現(xiàn)自動備份

# 每天2點備份gitlab數(shù)據(jù)
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

備份保留7天

可設置只保留最近7天的備份,編輯配置文件 /etc/gitlab/gitlab.rb

# 數(shù)值單位:秒
gitlab_rails['backup_keep_time'] = 604800 

重新加載gitlab配置文件

gitlab-ctl reconfigure

恢復

備份文件:

/var/opt/gitlab/backups/1499244722_2017_07_05_9.2.6_gitlab_backup.tar

停止 unicorn 和 sidekiq 嗜侮,保證數(shù)據(jù)庫沒有新的連接港令,不會有寫數(shù)據(jù)情況啥容。

# 停止相關數(shù)據(jù)連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 指定恢復文件,會自動去備份目錄找顷霹。確保備份目錄中有這個文件咪惠。
# 指定文件名的格式類似:1499242399_2017_07_05_9.2.6,程序會自動在文件名后補上:“_gitlab_backup.tar”
# 一定按這樣的格式指定泼返,否則會出現(xiàn) The backup file does not exist! 的錯誤
gitlab-rake gitlab:backup:restore BACKUP=1499242399_2017_07_05_9.2.6

# 啟動Gitlab
gitlab-ctl start 
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硝逢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绅喉,更是在濱河造成了極大的恐慌渠鸽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柴罐,死亡現(xiàn)場離奇詭異徽缚,居然都是意外死亡,警方通過查閱死者的電腦和手機革屠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門凿试,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人似芝,你說我怎么就攤上這事那婉。” “怎么了党瓮?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵详炬,是天一觀的道長。 經(jīng)常有香客問我寞奸,道長呛谜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任枪萄,我火速辦了婚禮隐岛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓷翻。我一直安慰自己聚凹,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布齐帚。 她就那樣靜靜地躺著元践,像睡著了一般。 火紅的嫁衣襯著肌膚如雪童谒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天沪羔,我揣著相機與錄音饥伊,去河邊找鬼象浑。 笑死,一個胖子當著我的面吹牛琅豆,可吹牛的內(nèi)容都是我干的愉豺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茫因,長吁一口氣:“原來是場噩夢啊……” “哼蚪拦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冻押,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤驰贷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洛巢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體括袒,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年稿茉,在試婚紗的時候發(fā)現(xiàn)自己被綠了锹锰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡漓库,死狀恐怖恃慧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渺蒿,我是刑警寧澤痢士,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站蘸嘶,受9級特大地震影響良瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜训唱,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一褥蚯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧况增,春花似錦赞庶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至为肮,卻和暖如春摊册,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颊艳。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工茅特, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留忘分,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓白修,卻偏偏與公主長得像妒峦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兵睛,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 選擇將用來搭建 GitLab CE 的操作系統(tǒng): CentOS 7 (and RedHat/Oracle/Scie...
    一瞬即_永恒閱讀 4,652評論 1 21
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理肯骇,服務發(fā)現(xiàn),斷路器祖很,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 之前我的一篇文章已經(jīng)敘述過為什么選擇了GitLab笛丙,下面來說一下GitLab在Centos6下的安裝過程 一、開始...
    Karma1026閱讀 2,250評論 0 9
  • 一突琳、系統(tǒng)環(huán)境 服務器:阿里云主機 操作系統(tǒng):Centos7.0 64位 已裝軟件:Nginx(80端口)若债、Apac...
    tsyeyuanfeng閱讀 77,765評論 18 92
  • 一, 服務器快速搭建gitlab方法可以參考gitlab中文社區(qū) 的教程centos7安裝gitlab:https...
    彩虹之夢閱讀 3,579評論 0 8