CentOS 7下GitLab搭建及配置

来源:https://www.cnblogs.com/dingxu/archive/2018/04/25/8934629.html
-Advertisement-
Play Games

由於公司業務,需要上Git版本控制。 * 目前市面上比較有名的Git服務提供商,國外有GitHub、BitBucket、GitLab,國內有碼雲,Coding。 * 現有的服務商,對於免費的套餐都有一定的限制。比如:GitHub只允許建立免費的開源repository,建立私有的倉庫需要收費。Bit ...


由於公司業務,需要上Git版本控制。
 * 目前市面上比較有名的Git服務提供商,國外有GitHub、BitBucket、GitLab,國內有碼雲,Coding。 * 現有的服務商,對於免費的套餐都有一定的限制。比如:GitHub只允許建立免費的開源repository,建立私有的倉庫需要收費。BitBucket允許建立無限制的私有項目,不過對於項目中參與的開發人員是有人數限制的,當團隊中開發者規模達到一定數量後,需要付費購買相應的套餐。
GitLab社區版是免費的,不但能建立免費的私有倉庫而且沒有數量上限,參與人員也沒有數量限制,還能設置成員的許可權,甚至細緻到具體某條分支的許可權,以及強大的工作流等等。 GitLab很適合中小型非開源項目公司。

 

 

一、GitLab 簡介

GitLab 是一個利用Ruby on Rails 開發的開源版本控制系統,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。 它擁有與GitHub類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程式(Wall)進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼復用,便於日後有需要的時候進行查找。 開源中國代碼托管平臺 碼雲 就是基於GitLab項目搭建。 GitLab 分為 GitLab Community Edition(CE) 社區版 和 GitLab Enterprise Edition(EE) 專業版。社區版免費,專業版收費,兩個版本在功能上的差異對比,可以參考官方對比說明

二、GitLab 安裝和配置

安裝社區版,GitLab CE 版本:9.2.6

1、GitLab安裝

通過GitLab官方提供的Omnibus安裝包來安裝,相對方便。Omnibus安裝包套件整合了大部分的套件(Nginx、ruby on rails、git、redis、postgresql等),再不用額外安裝這些軟體,減輕了絕大部分安裝量。 GitLab官方安裝文檔 :CentOS7.x系統

安裝依賴包,並配置postfix服務為GitLab郵件服務

  # yum install curl openssh-server openssh-clients postfix cronie # systemctl start postfix.service # systemctl enable postfix.service

    如果僅僅做測試,就關閉防火牆。

        systemctl stop firewalld.service #停止firewall

        systemctl start firewalld.service #開啟firewall         systemctl disable firewalld.service #禁止firewall開機啟動         systemctl enable firewalld.service # 開啟開機啟動

        firewall-cmd --state #查看預設防火牆狀態(關閉後顯示not  running,開啟後顯示running)

    如果正式搭建的話就打開HTTP和SSH埠

                 # iptables -I INPUT -m tcp -p tcp --dport 22 -j ACCEPT          # iptables -I INPUT -m tcp -p tcp --dport 80 -j ACCEPT             (這是centos6下的操作,centos7就自行百度,我這裡主要是搭建環境,讓gitlab跑起來,就關閉防火牆)  

兩種安裝源

  • 從官方鏡像源安裝
        添加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 # 安裝指定版本  
  • 從第三方鏡像源安裝
    官方鏡像源在國外,國內安裝會很慢,甚至有時因網路問題會無法安裝。
國內推薦使用清華大學開源軟體鏡像源
新建 /etc/yum.repos.d/gitlab-ce.repo,內容為:   [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1   再執行 # yum makecache             # 更新本地YUM緩存   # yum install gitlab-ce     # 自動安裝最新版本

 

修改配置文件/etc/gitlab/gitlab.rb,綁定功能變數名稱

  external_url 'http://gitlab.xxx.com'        //如果沒有功能變數名稱就用ip地址即可

 

啟動GitLab,使得配置生效

  # gitlab-ctl reconfigure                //此過程可能會等待很長時間

在Dnspod中添加解析記錄

使用瀏覽器訪問GitLab,就訪問填寫上面external_url的值

首次訪問GitLab,系統會讓你重新設置管理員的密碼,設置成功後會返回登錄界面.//新版本可能會讓你登錄,自己註冊個賬號再登錄就行。如下圖:  

 

  登錄成功後出現下麵頁面:

 

如果你還想要配置更多的細節,可以參考https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

 

GitLab安裝細節

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

GitLab由以下服務構成

  • nginx: 靜態web伺服器
  • gitlab-shell: 用於處理Git命令和修改authorized keys列表
  • gitlab-workhorse: 輕量級的反向代理伺服器
  • logrotate:日誌文件管理工具
  • postgresql:資料庫
  • redis:緩存資料庫
  • sidekiq:用於在後臺執行隊列任務(非同步執行)
  • unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個伺服器上面的。

2、配置SMTP服務

如果你不想用伺服器自帶的postfix服務來發郵件,可以改用SMTP服務。 修改GitLab郵件服務配置(gitlab.rb文件),使用騰訊企業郵箱的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證書

創建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 會自動跳轉到 HTTPS 。

開放443埠

在防火牆上開放443埠,用於HTTPS   # iptables -I INPUT -m tcp -p tcp --dport 443 -j ACCEPT

4、修改root用戶密碼

對於普通用戶而言,可通過系統重置密碼,接收郵件即可。可是GitLab管理員賬號,預設郵箱 [email protected] 是個不存在的郵箱地址,無法通過郵箱修改密碼。 官方修改密碼文檔,根據文檔,修改root密碼的方法如下:

打開與Rails程式交互的控制台

在root許可權下,執行:   # 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    取出第一個用戶即root

=> #<User id: 1, email: "[email protected]"......

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   # 資料庫關係升級 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   # 停止相關數據連接服務 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq   # 重啟所有 gitlab 組件: gitlab-ctl restart   # 重啟所有 gitlab gitlab-workhorse 組件: gitlab-ctl restart gitlab-workhorse   # 查看服務狀態 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作為公司項目代碼的版本管理系統,數據非常重要,必須做好備份。

修改備份目錄

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/)下創建一個tar壓縮包xxxxxxxx_gitlab_backup.tar,其中開頭的xxxxxx是備份創建的時間戳,這個壓縮包包括GitLab整個的完整部分。

自動備份

通過任務計劃crontab 實現自動備份 # 每天2點備份gitlab數據 0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

備份保留7天

可設置只保留最近7天的備份,編輯配置文件 /etc/gitlab/gitlab.rb # 數值單位:秒 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 ,保證資料庫沒有新的連接,不會有寫數據情況。 # 停止相關數據連接服務 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq   # 指定恢覆文件,會自動去備份目錄找。確保備份目錄中有這個文件。 # 指定文件名的格式類似:1499242399_2017_07_05_9.2.6,程式會自動在文件名後補上:“_gitlab_backup.tar” # 一定按這樣的格式指定,否則會出現 The backup file does not exist! 的錯誤 gitlab-rake gitlab:backup:restore BACKUP=1499242399_2017_07_05_9.2.6   # 啟動Gitlab gitlab-ctl start     原文鏈接:https://www.jianshu.com/p/56541f6c01a5    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文是一篇介紹net同步非同步的文章,是為張四火同學原創的。請張四活同學及廣大讀者指出,文章不通順的地方。後續應當還有兩篇文章敬請期待 ...
  • 最近有個統計分佈的需求,需要按統計本周,上周,本月,上月,本季度,上季度,本年度,上年度等時間統計分佈趨勢,所以這裡就涉及到計算周,月,季度,年度等的起止時間了,下麵總結一下C#中關於根據當前時間獲取周,月,季度,年度等時間段的起止時間的方法,廢話不多說,直接貼代碼,如果你覺得有用,請多多推薦。 ...
  • 本文的概念性內容來自深入淺出設計模式一書 項目需求 這是一個糖果機的需求圖. 它有四種狀態, 分別是圖中的四個圓圈: No Quarter: 無硬幣 Has Quater 有硬幣 Gumball Sold 糖果賣出 Out of Gumball 沒有糖果了 這個圖很像一個狀態圖. 每個圓圈就是一個狀 ...
  • 原文鏈接 一.Has方法: 二.With方法: ...
  • 基於Ubuntu安裝redis, 我找的一個很好的網站: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04設置redis密碼登錄, 編輯redis.c ...
  • MVC也好,WebAPI也好,據我所知,有部分人是因為複雜的路由,而不想去學的。曾經見過一位程式猿,在他MVC程式中,一切皆路由,url中是完全拒絕"?"和“&”。對此,我也不好說什麼,搞不好是個人風格。路由雖然重要,但其實也只是實現MVC的一種手段,並非你用的路由越多,你的url完全不使用參數,你 ...
  • 一、課程介紹 曾經有一位不知名的講師說過這麼一句名言: 一門RPC技術不會,那麼千萬萬門RPC技術將都不會!在今天移動互聯網的時代,作為攻城師的我們,誰不想著只寫一套API就可以讓我們的Web, Android APP, IOS APP, iPad APP, Hybired APP, H5 Web共 ...
  • Linux和Unix系統一樣對文件有如下的解釋:一切皆為文件;若非文件,則為進程。 Linux將文件和目錄視如同物,因為目錄只是一個包含了其他文件名的文件而已。程式、服務、文本、圖片等等,都是文件。對於系統來說,輸入和輸出設備,基本上所有的設備,都被當做是文件。 如上圖所示,Linux系統的文件系統... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...