溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

四、搭建git服務器、安裝gitlab、使用gitlab、gitlab備份和恢復

發(fā)布時間:2020-05-26 04:32:59 來源:網(wǎng)絡 閱讀:1176 作者:seventeen_ 欄目:系統(tǒng)運維

一、搭建git服務器

github畢竟是公開的,而私有倉庫又要花錢買。所以我們可以想辦法搭建一個私有的,只自己公司使用的。Gitlab是個不錯的選擇。在介紹它之前,先講述一下命令行的git服務器

找一臺服務器,首先要安裝git,這里新開了一臺機器安裝git。

#?yum?install?-y?git

添加git用戶,并且設置shell為/usr/bin/git-shell,目的是為了不讓git用戶遠程登陸

#?useradd?-s?/usr/bin/git-shell?git?
#?cd?/home/git

首先要把客戶端上的公鑰放到git服務器上/home/git/.ssh/authorized_keys文件里。

創(chuàng)建authorized_keys文件,并更改屬主、屬組和權限,用來存客戶端機器上的公鑰。

#?mkdir?.ssh
#?touch?.ssh/authorized_keys
#?chown?-R?git:git?.ssh
#?chmod?600?.ssh/authorized_keys
[root@MRX?~]#?cat?.ssh/id_rsa.pub??//將第一臺機器上的公鑰復制
[root@wbs?git]#?vi?.ssh/authorized_keys??//粘貼到新機器上(服務端)剛才創(chuàng)建的文件中
[root@MRX?~]#?ssh?git@192.168.197.133???到客戶端嘗試登陸一下,看到這樣的提示就代表沒問題了,說明驗證成功。
The?authenticity?of?host?'192.168.197.133?(192.168.197.133)'?can't?be?established.
ECDSA?key?fingerprint?is?SHA256:PZXNkWqC/6h5hUQYkfOM9AMj82OTskLMIB4qLkgeajU.
ECDSA?key?fingerprint?is?MD5:99:19:04:c5:11:8d:94:ad:9a:86:40:b9:ad:b9:d4:8f.
Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes
Warning:?Permanently?added?'192.168.197.133'?(ECDSA)?to?the?list?of?known?hosts.
fatal:?Interactive?git?shell?is?not?enabled.
hint:?~/git-shell-commands?should?exist?and?have?read?and?execute?access.
Connection?to?192.168.197.133?closed.


在服務端上定義存儲git倉庫的目錄,比如 /data/gitroot

#?mkdir?/data/gitroot
#?cd?/data/gitroot
#?git?init?--bare?sample.git

// 會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),因為服務器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務器上去改工作區(qū),并且服務器上的Git倉庫通常都以.git結尾。

#?chown?-R?git.git?sample.git

以上操作是在git服務器上做的,平時git服務器是不需要開發(fā)人員登錄修改代碼的,它僅僅是充當著一個服務器的角色,就像github一樣,平時操作都是在我們自己的pc上做的。

在客戶端上(自己pc)克隆遠程倉庫

git?clone?git@ip:/data/gitroot/sample.git
#?git?clone?git@192.168.197.133:/data/gitroot/sample.git
正克隆到?'sample'...
warning:?您似乎克隆了一個空版本庫。

此時就可以在當前目錄下生成一個sample的目錄,這個就是我們克隆的遠程倉庫了。進入到這里面,可以開發(fā)一些代碼,然后push到遠程。

#?cp?/etc/init.d/mysqld?.
[root@MRX?sample]#?ls
mysqld
[root@MRX?sample]#?git?add?.
[root@MRX?sample]#?git?commit?-m?"add?new?file"
[master(根提交)?1d1a5a0]?add?new?file
?1?file?changed,?378?insertions(+)
?create?mode?100755?mysqld
?
[root@MRX?sample]#?git?push???//由于是一個裸倉庫,里面沒有任何分支,直接推送,遠程不知道是哪一個分支,所以需要指定一個分支。
warning:?push.default?未設置,它的默認值將會在?Git?2.0?由?'matching'
修改為?'simple'。若要不再顯示本信息并在其默認值改變后維持當前使用習慣,
進行如下設置:

??git?config?--global?push.default?matching

若要不再顯示本信息并從現(xiàn)在開始采用新的使用習慣,設置:

??git?config?--global?push.default?simple

參見?'git?help?config'?并查找?'push.default'?以獲取更多信息。
('simple'?模式由?Git?1.7.11?版本引入。如果您有時要使用老版本的?Git,
為保持兼容,請用?'current'?代替?'simple'?模式)

No?refs?in?common?and?none?specified;?doing?nothing.
Perhaps?you?should?specify?a?branch?such?as?'master'.
fatal:?The?remote?end?hung?up?unexpectedly
error:?無法推送一些引用到?'git@192.168.197.133:/data/gitroot/sample.git'

#?git?push?origin?master???//指定master分支,第二次再推送的時候就可以直接git?push了。
Counting?objects:?3,?done.
Delta?compression?using?up?to?2?threads.
Compressing?objects:?100%?(2/2),?done.
Writing?objects:?100%?(3/3),?3.84?KiB?|?0?bytes/s,?done.
Total?3?(delta?0),?reused?0?(delta?0)
To?git@192.168.197.133:/data/gitroot/sample.git
?*?[new?branch]??????master?->?master
?
?#?cd?/tmp
?#?git?clone?git@192.168.197.133:/data/gitroot/sample.git
?#?ls?sample/
1.txt??mysqld
[root@MRX?tmp]#?cd?sample/
[root@MRX?sample]#?vim?1.txt???//對文件內容更改
#?git?add?1.txt
#?git?commit?-m?"ch?1.txt"
#?git?push
#?cd?/root/sample???//假如另一個用戶也在連,就可以git?pull把更改拉下來
#?git?pull???//剛才更改的內容就拉下來了

這是一種很簡單的搭建git服務器的方法。


二、安裝gitlab

除了自建的服務器,也可以使用在線的代碼托管平臺,比如coding.net,碼市,碼云,都是國內比較好的代碼管理平臺,比較省心,不用維護。

除了這種方法,也可以自建一個web界面瀏覽管理控制的代碼管理平臺,首選使用gitlab。

gitlab官網(wǎng) https://about.gitlab.com/gitlab-com/

官方安裝文檔 https://about.gitlab.com/installation/?version=ce#centos-7 ? (ce/ee)

要求服務器內存不少于2g,由于官方鏡像下載比較慢,這里使用了國內的鏡像,這個鏡像是清華大學的一個服務器。

#?vim?/etc/yum.repos.d/gitlab.repo???//加入如下內容
[gitlab-ce]
name=Gitlab?CE?Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
#?yum?install?-y?gitlab-ce
#?gitlab-ctl?reconfigure????//這條命令會將所有gitlab牽扯到的服務啟動起來。
...
Chef?Client?finished,?524/1419?resources?updated?in?14?minutes?08?seconds
gitlab?Reconfigured!

至此,gitlab就安裝完了,雖然說安裝起來比較容易,但是如果出了問題,再去做更改維護的時候就有一定的難度了,所以說這臺gitlab的服務器建議不要做其他的應用,僅僅是跑git服務器就行了。平時做好數(shù)據(jù)的備份,gitlab有官方提供的工具用來備份數(shù)據(jù)。

安裝gitlab之前,先把Nginx停掉。

#?netstat?-lntp??//查看監(jiān)聽端口,這兩行都是gitlab產(chǎn)生的。
tcp????????0??????0?127.0.0.1:8080??????????0.0.0.0:*???????????????LISTEN??????1621/unicorn?master?
tcp????????0??????0?127.0.0.1:9168??????????0.0.0.0:*???????????????LISTEN??????1439/puma?3.12.0?(t

# gitlab-ctl stop/restart/start/status ? ?//status,查看狀態(tài)

#?gitlab-ctl??status
run:?alertmanager:?(pid?2563)?10476s;?run:?log:?(pid?1448)?10585s
run:?gitaly:?(pid?1407)?10586s;?run:?log:?(pid?1406)?10586s
run:?gitlab-exporter:?(pid?1439)?10585s;?run:?log:?(pid?1438)?10585s
run:?gitlab-workhorse:?(pid?1426)?10585s;?run:?log:?(pid?1425)?10585s
run:?grafana:?(pid?1446)?10585s;?run:?log:?(pid?1445)?10585s
run:?logrotate:?(pid?18743)?3379s;?run:?log:?(pid?1434)?10585s
run:?nginx:?(pid?25804)?1s;?run:?log:?(pid?1423)?10585s
run:?node-exporter:?(pid?1433)?10585s;?run:?log:?(pid?1432)?10585s
run:?postgres-exporter:?(pid?1452)?10585s;?run:?log:?(pid?1451)?10585s
run:?postgresql:?(pid?1409)?10586s;?run:?log:?(pid?1408)?10586s?????????????????//postgresql,數(shù)據(jù)庫
run:?prometheus:?(pid?1450)?10585s;?run:?log:?(pid?1447)?10585s
run:?redis:?(pid?1405)?10586s;?run:?log:?(pid?1404)?10586s
run:?redis-exporter:?(pid?1442)?10585s;?run:?log:?(pid?1441)?10585s
run:?sidekiq:?(pid?1415)?10586s;?run:?log:?(pid?1414)?10586s
run:?unicorn:?(pid?1413)?10586s;?run:?log:?(pid?1412)?10586s


瀏覽器訪問gitlab,輸入ip訪問即可,訪問之前,先看看有沒有iptables規(guī)則,如果有,加一個80端口。

默認管理員root,無密碼,它會讓我們去定義一個密碼。

四、搭建git服務器、安裝gitlab、使用gitlab、gitlab備份和恢復

設置好后就可以sign in了。


三、使用gitlab

也可以是用域名訪問,如果想用域名訪問,首先要搞清楚這臺服務器上是誰提供的web服務,比如Nginx,Nginx的配置文件位置在/var/opt/gitlab/nginx/conf/,里面有nginx.conf,這是主配置文件;gitlab-http.conf就是對應的gitlab相關的配置文件,如果想綁定一個域名,或者更改監(jiān)聽端口,可以編輯這個配置文件。

#?vim?/var/opt/gitlab/nginx/conf/gitlab-http.conf
server?{
??listen?*:80;??????????//定義監(jiān)聽端口

??server_name?gitlab.example.com;??????//定于域名

這個服務器如果不用跑別的服務,僅僅只一個gitlab,那完全不用動。

先用瀏覽器進入gitlab,先創(chuàng)建一個組,自定義組名,并設置權限為私有的Private。

四、搭建git服務器、安裝gitlab、使用gitlab、gitlab備份和恢復

再創(chuàng)建一個項目,可以選擇剛才創(chuàng)建的組,并設置項目名。

四、搭建git服務器、安裝gitlab、使用gitlab、gitlab備份和恢復

創(chuàng)建完成后,最上面顯示了一條“You won't be able to pull or push project code via SSH until you?add an SSH key?to your profile”,說沒有創(chuàng)建任何的ssh key。

創(chuàng)建ssh key:在頭像出點settings,左邊可以看到ssh keys,將公鑰(/root/.ssh/id_rsa.pub)放進去就可以創(chuàng)建了。

創(chuàng)建用戶:點擊上方的小扳手(Admin Area),new user,用戶名zhangsan,email:zhangsan@111.com,密碼設置提示會將設置密碼的鏈接發(fā)送給用戶郵箱,創(chuàng)建。創(chuàng)建完成后,點擊右上方的Edit可以編輯設置password,設置完保存。然后登陸zhangsan,第一次登錄時,會讓你設置新密碼。


四、gitlab備份和恢復

gitlab備份

#?gitlab-rake?gitlab:backup:create

備份目錄在/var/opt/gitlab/backups

Creating backup archive: 1569829062_2019_09_30_12.3.1_gitlab_backup.tar ... done

備份完后可以從這一句看到文件名字,時間戳+日期+版本號。


gitlab 恢復 ?先停服務 ? 恢復數(shù)據(jù)時,數(shù)據(jù)的版本需要和當前gitlab的版本一致。

#?gitlab-ctl?stop?unicorn?;?gitlab-ctl?stop?sidekiq

unicorn是ruby相關的一個webserver,sidekiq是一個消息隊列,也是基于ruby的。停這兩個服務的目的是為了暫時不要做數(shù)據(jù)的變更。

#?gitlab-rake?gitlab:backup:restore?BACKUP=1569829062_2019_09_30_12.3.1??(這里是一個編號,即備份文件的前綴)

再啟動服務 gitlab-ctl star

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI