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

1、搭建git服務器node

github畢竟是公開的,而私有倉庫又要花錢買。因此咱們能夠想辦法搭建一個私有的,只本身公司使用的。Gitlab是個不錯的選擇。在介紹它以前,先講述一下命令行的git服務器mysql

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

# yum install -y git

添加git用戶,而且設置shell爲/usr/bin/git-shell,目的是爲了避免讓git用戶遠程登錄git

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

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

建立authorized_keys文件,並更改屬主、屬組和權限,用來存客戶端機器上的公鑰。web

# 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  //粘貼到新機器上(服務端)剛纔建立的文件中
[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/6h4hUQYkfOM9AMj82OTskLMIB4qLkgeajU.
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/gitrootredis

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

// 會建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的Git倉庫純粹是爲了共享,因此不讓用戶直接登陸到服務器上去改工做區,而且服務器上的Git倉庫一般都以.git結尾。sql

# chown -R git.git sample.git

以上操做是在git服務器上作的,平時git服務器是不須要開發人員登陸修改代碼的,它僅僅是充當着一個服務器的角色,就像github同樣,平時操做都是在咱們本身的pc上作的。shell

在客戶端上(本身pc)克隆遠程倉庫數據庫

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

此時就能夠在當前目錄下生成一個sample的目錄,這個就是咱們克隆的遠程倉庫了。進入到這裏面,能夠開發一些代碼,而後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

若要再也不顯示本信息並從如今開始採用新的使用習慣,設置:

  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服務器的方法。


2、安裝gitlab

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

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

gitlab官網 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服務器就好了。平時作好數據的備份,gitlab有官方提供的工具用來備份數據。

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

# netstat -lntp  //查看監聽端口,這兩行都是gitlab產生的。
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,查看狀態

# 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,數據庫
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規則,若是有,加一個80端口。

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

1.png

設置好後就能夠sign in了。


3、使用gitlab

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

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

  server_name gitlab.example.com;      //定於域名

這個服務器若是不用跑別的服務,僅僅只一個gitlab,那徹底不用動。

先用瀏覽器進入gitlab,先建立一個組,自定義組名,並設置權限爲私有的Private。

2.png

再建立一個項目,能夠選擇剛纔建立的組,並設置項目名。

3.png

建立完成後,最上面顯示了一條「You won't be able to pull or push project code via SSH until you add an SSH key to your profile」,說沒有建立任何的ssh key。

建立ssh key:在頭像出點settings,左邊能夠看到ssh keys,將公鑰(/root/.ssh/id_rsa.pub)放進去就能夠建立了。

建立用戶:點擊上方的小扳手(Admin Area),new user,用戶名zhangsan,email:zhangsan@111.com,密碼設置提示會將設置密碼的連接發送給用戶郵箱,建立。建立完成後,點擊右上方的Edit能夠編輯設置password,設置完保存。而後登錄zhangsan,第一次登陸時,會讓你設置新密碼。


4、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 恢復  先停服務   恢復數據時,數據的版本須要和當前gitlab的版本一致。

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

unicorn是ruby相關的一個webserver,sidekiq是一個消息隊列,也是基於ruby的。停這兩個服務的目的是爲了暫時不要作數據的變動。

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

再啓動服務 gitlab-ctl star

相關文章
相關標籤/搜索