區域網內搭建git伺服器
A. linux如何搭建git
1、環境准備
伺服器:CentOS 7.3 + git (1.8.3.1)
客戶端:win10 + git (2.17.0.windows.1)
2、伺服器安裝git
yum install -y git
3、創建git用戶,管理 git服務
[root@localhost home]# useradd git
[root@localhost home]# passwd git
4、伺服器創建git 倉庫
設置/home/git/repository-git 為git 伺服器倉庫,然後把 git 倉庫的 owner 修改為 git 用戶。
復制代碼
[root@localhost git]# mkdir repository-git
[root@localhost git]# git init --bare repository-git/
Initialized empty Git repository in /home/git/repository-gt/
[root@localhost git]# chown -R git:git repository-git/
5、客戶端安裝git
下載 Git for Windows,地址:https://git-for-windows.github.io/
安裝完之後,可以使用 Git Bash 作為命令行客戶端。
5.1、選擇一個目錄 F:\project\sell 作為本地倉庫,右鍵進入Git Bash 命令行模式
初始化本地倉庫:git init
5.2、嘗試克隆一個伺服器的空倉庫到本地倉庫
git clone [email protected]:/home/git/repository-gt
第一次連接到目標 Git 伺服器時會得到一個提示:
The authenticity of host '192.168.116.129(192.168.116.129)' can't be established.
RSA key fingerprint is SHA256:Ve6WV/.
Are you sure you want to continue connecting (yes/no)?
選擇 yes:
Warning: Permanently added '192.168.116.129' (RSA) to the list of known hosts.
此時 C:\Users\用戶名\.ssh 下會多出一個文件 known_hosts,以後在這台電腦上再次連接目標 Git 伺服器時不會再提示上面的語句。
B. 搭建GitLab伺服器
GitLab是GitHub的免費私有庫替代方案,並且安裝與配置都很方便。
GitLab要求最少4GB內存,支持小團隊使用沒問題,實測2GB內存的VPS基本沒法用,開swapfile也不行,動不動就60秒超時。因此4GB內存是必須的。
關於這一點,內存大戶主要是Unicorn,基於ruby的http伺服器。Unicorn會在啟動後預先佔用大部分內存,內存會隨著使用逐漸增長,並且不會釋放。根據GitLab和Unicorn的官方文檔,這不是它們的鍋,那麼這個鍋可能是ruby和rails了。解決方法是unicorn-work-kill,會根據請求次數和內存佔用自動重啟Unicorn。Omnibus版的GitLab是默認開啟的。
GitLab分為社區版和企業版,在未付費的情況下,兩者的功能是一樣的。並且社區版整合了CI/CD,因此可以滿足絕大部分的開發需求。
安裝包主要包括Omnibus整合包,Docker、AWS等的雲鏡像,以及一些第三方維護的版本。其中Omnibus直接整合了所有服務端組件,適合自用和練手。
安裝以Omnibus整合包為例,操作系統為Ubuntu16.04。
Gitlab需要 curl,openSSH 和 ca-certificates 這幾個組件:
不過伺服器系統一般自帶,所以是可選的。
郵件服務,用於GitLab發送找回密碼的郵件:
不過如果伺服器沒有域名的話,大部分郵箱會拒收郵件,而管理員帳號可以直接重置其他賬號的密碼,所以是可選的。
官方提供的腳本:
這個腳本會自動添加源到apt 的source list,以及安全key。另外,如果自己伺服器在國內,腳本會自動添加清華的鏡像,速度還行。
先更新apt緩存:
推薦使用 apt 而不是 apt-get ,前者大多數情況下更簡單一點。
然後是安裝:
其中 EXTERNAL_URL ,改成自己的域名。沒有域名的話,可以直接設置成IP的形式: http://1.2.3.4 ,這個推測跟nginx服務以及GitLab中的項目地址有關,所以最好正確設置。當然也可以之後在配置文件里更改。
安裝完成後,可以在配置文件中修改配置 /etc/gitlab/gitlab.rb 。
比如之前的 EXTERNAL_URL :
官方還有一個關於 unicorn 的優化建議:
默認值是2,如果伺服器只用於GitLab的話,官方建議是CPU核心數加一,可以提高伺服器的響應速度。不過如果內存只有4G,或者伺服器同時承載其他服務,就不要改了,以免內存不足。另外,這個參數最小值是2,設為1,伺服器可能會卡死。
配置完成後,刷新配置:
每次修改完 gitlab.rb ,都要刷新配置。
如果沒有報錯的話,GitLab就配置完畢並且正常運行了。接下來可以打開瀏覽器開始訪問了。
C. GitLab搭建個人(或公司)版本控制系統
說明:Git,Github,GitLab三者關系。
Git - 是一款自由和開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。(svn是集中化的版本控制系統)。
GitHub - 是一個面向開源及私有軟體項目的託管平台(也就一個網站),提供給用戶空間創建git倉儲,保存用戶的一些數據文檔或者代碼等。它可以託管各種git庫,並提供一個web界面。被戲稱為「全世界最大的同性交流社區」。
GitLab - 基於Git的項目管理軟體。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
當然啦國內開源中國出的「碼雲」,第一次聽得人還以為是「馬雲」。我醬紫。它跟Github功能差不多,都能建立公有和私有的倉庫。不過嘛感覺有點封閉,社區沒有Github熱鬧。
有的人就說啦,我完全可以在Github或者GitLab上做遠端代碼倉庫,為啥還要倒騰GitLab自建代碼託管系統?就一個字: 「代碼安全性」(公司保密規定)。 對於公司來說,GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:
一、自建代碼託管系統都需要做些什麼工作?
1. 選擇開源軟體
Git 大家族的 GitLab ,它提供了完善的用戶許可權管理,除了涵蓋 Git 所有的功能,同時又提供方便的後台管理。分別有CE(社區版)、EE(企業版)、OM(RPM 包完整版)三個版本,目前市面上開發者們的普遍選擇是使用 CE 版的源碼,成本較低且相對方便。
2. 硬體設施方面
如果是對於中小型企業來講,自建機房一般成本較高,所以除非是大型集團企業。現在市面上存在太多的雲伺服器廠商,平均價格多在 5000元/年以上,都是不錯的選擇。
可能遇到的坑:
3.由於個人眼界以及信息不對稱,目前大部分公司都是在公司區域網內自行用GitLab搭建代碼託管系統。部署Gitlab 是對伺服器有配置要求的建議是CPU兩核,內存4G以上。個人經驗,勿噴啦。
二、搭建過程(這里僅是作者接觸的,其實還有很多更高級的盤法)
Gitlab的服務構成
1.搭建方法分為:傳統方式安裝GitLab和Docker安裝(推薦)。
2.傳統安裝過程(平台使用centos7安裝)
安裝和配置必要的依賴項:
安裝Postfix以發送通知郵件:
在安裝Postfix期間,可能會出現配置屏幕。選擇「Internet Site」並按enter鍵。使用您的伺服器的外部DNS以「mail name」並按enter。如果出現額外的屏幕,繼續按enter鍵接受默認值。
添加GitLab鏡像源並安裝gitlab伺服器:
注意這里設置的埠不能被佔用,默認是8080埠,如果8080已經使用,請自定義其它埠,並在防火牆設置開放相對應得埠。
重置並啟動GitLab:
訪問 GitLab頁面:如果沒有域名,直接輸入伺服器ip和指定埠進行訪問
獲取/修改超級管理員root的密碼:
最後我們使用默認的賬號:root 和剛剛設置好的密碼12345678進行登錄。
後面的步驟配置SSH key,git Bash的global config等初始化設置跟GitHub一樣。可是還有一點就是「漢化」。(英文不好的小夥伴)但是有一定風險,後面我打開報502錯誤。有兩種方法:用git比對出英文與中文的補丁,將英文打補丁。第二是直接下載中文版,替換英文。
3.Docker安裝(推薦)
(1)配置docker鏡像
直接從 docker hub 獲取的話速度非常慢,所以需要配置一個鏡像。我使用的是 cloud.io提供的加速器,速度很快。
(2)獲取 GitLab 鏡像
下載完成後,查看鏡像列表
(3)啟動容器
3個--publish指定容器與主機的埠映射,分別是 http、https、ssh
3個--volume指定數據卷的映射,分別是 gitlab 的 配置、日誌、數據
(4)配置外部訪問 URL
修改 gitlab 配置文件:
找到 external_url 這一項修改為自己伺服器的訪問地址:
保存後,重啟容器
(5)訪問
初次訪問時,gitlab 要求我們重置管理員密碼,修改完成後登錄。默認用戶root。
當然以上為個人實驗,公司裡面大部分為CTO等大佬已經搭建完畢,我們主要是折騰。
最後推薦個人用很順手的工具: SourceTree (可視化界面的Git),當然啦要想成為大牛或者裝13也好,還是從Git Bash里敲命令行。