您好,登錄后才能下訂單哦!
一、搭建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,無密碼,它會讓我們去定義一個密碼。
設置好后就可以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。
再創(chuàng)建一個項目,可以選擇剛才創(chuàng)建的組,并設置項目名。
創(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
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。