88.搭建git服務器 安裝與使用gitlab gitlab備份與恢復

22.13 搭建git服務器html

22.14/22.15 安裝gitlabnode

22.16 使用gitlabpython

22.17 gitlab備份和恢復mysql

svn的鉤子  http://coolnull.com/1716.htmllinux

gitlab修改端口  http://blog.csdn.net/arybd/article/details/54635295nginx

修改主機名 http://www.mamicode.com/info-detail-1316828.htmlgit

第三方郵件 http://blog.csdn.net/liuruiqun/article/details/50000213github

server ssh 端口並非22   http://www.cnblogs.com/limx/p/5709101.html   http://www.linuxidc.com/Linux/2017-02/141043.htm redis

應該修改  /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.ymlsql

# If you use non-standard ssh port you need to specify it

ssh_port: xxxxx

gitlab的鉤子相關配置 http://fighter.blog.51cto.com/1318618/1670667

 

 

 

22.13 搭建git服務器(私有倉庫)

 

 

 

1.github畢竟是公開的,而私有倉庫又得花錢買。因此咱們能夠想辦法搭建一個私有的,只本身公司使用的。Gitlab是個不錯的選擇。

#git雖然是分佈式的,能夠在本身的電腦上工做,但仍是須要有一箇中心的控制服務器。那這臺git服務器就是做爲咱們中心

#可是沒有辦法更多的去控制用戶的權限,和很快捷很高效的管理用戶名和密碼或者租之類的東西

#應用場景在開發人員不多的狀況下(好比一兩個)或者項目代碼量不是很大的。平時維護成本很容易,這時候能夠選擇這種方案去作。

在介紹它以前,先講述一下命令行的git服務器

2.找一臺服務器,首先要安裝git,yum install git

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

#也就是不須要他登陸咱們的系統

useradd -s /usr/bin/git-shell git

cd /home/git

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

#也就是讓另一臺機器能和他通訊。經過ssh祕鑰的形式

mkdir .ssh

touch .ssh/authorized_keys

chown -R git.git .ssh

chmod 600 .ssh/authorized_keys

5.定好存儲git倉庫的目錄,好比 /data/gitroot

mkdir /data/gitroot

cd /data/gitroot

6.git init --bare sample.git

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

#不須要作git add或commit的操做

chown -R git.git sample.git

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

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

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

git clone git@ip:/data/gitroot/sample.git

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

 

 

 

 

實例:

在開一臺虛擬機做爲咱們的這臺服務器

[root@axinlinux-02 ~]# yum install -y git #也要安裝git

[root@axinlinux-02 ~]# useradd -s /usr/bin/git-shell git #建立git用戶。不需藥他遠程登陸

[root@axinlinux-02 ~]# cd /home/git/ #進入家目錄的git目錄

[root@axinlinux-02 git]# ls

[root@axinlinux-02 git]# mkdir .ssh #建立.ssh目錄

[root@axinlinux-02 git]# touch .ssh/authorized_keys #在.ssh目錄下建立authorized_keys文件

[root@axinlinux-02 git]# chmod 600 .ssh/authorized_keys #賦予這個文件600的權限

[root@axinlinux-02 git]# chown -R git:git .ssh #.ssh目錄下全部的屬主屬組爲git

以上的目的是讓另一臺機器能和他通訊,經過ssh祕鑰的形式

[root@axinlinux-01 ~]# cat .ssh/id_rsa.pub #把01機器上的公鑰複製下來(此處爲上一張在github添加祕鑰認證時生成的公鑰)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXXjoeyXRbpHSwxJa8kvnGev9HV7xqHfQxxVL711ypsMMaKGlpcRVGhRWNkfzS37W0jAfnVZJX3/nSD2BEcrmqmPAxRG48+OZMBhEqh6g6KeCe0JgOA0azm/gpujrrcRNLxbVsT6dTGiRzxfvAG2OPqwOCWN/a3QMPXpdd2IDVTSAw0GMDBYUpr+tHu1DzeVogt5wvdkcBAtb9+caDAAWM0uZLLlG/mZ+Zm2FqX7j8J9LPpy2LIeJF0OBbzeFHMHT1zdUkpLBL5FQSmQ2hrwweT3iqcBXB/A7MNQNan7SFAW4vj7LiUWuxA301RBHuY8e9sS74nLb9lJZds1yle5Hz root@axinlinux-01

[root@axinlinux-02 git]# vim .ssh/authorized_keys #複製的公鑰放到這個剛建立的文件裏來。其實這一步操做給在github上添加公鑰是一個道理

[root@axinlinux-01 ~]# ssh git@192.168.208.130 #在客戶端測試一下,看可否登陸服務端

fatal: Interactive git shell is not enabled. #出現這樣的提示則沒問題,驗證成功。只不過不容許你直接登陸

hint: ~/git-shell-commands should exist and have read and execute access.

Connection to 192.168.208.130 closed.

[root@axinlinux-02 git]# cd /data/

[root@axinlinux-02 data]# mkdir gitroot

[root@axinlinux-02 data]# cd gitroot/

[root@axinlinux-02 gitroot]# ls

[root@axinlinux-02 gitroot]# git init --bare sample.git #初始化,產生sample的文件

初始化空的 Git 版本庫於 /data/gitroot/sample.git/

[root@axinlinux-02 gitroot]# chown -R git:git sample.git #屬主屬組

[root@axinlinux-01 ~]# git clone git@192.168.208.130:/data/gitroot/sample.git #把這個項目克隆到本地

正克隆到 'sample'...

warning: 您彷佛克隆了一個空版本庫。

[root@axinlinux-01 ~]# cd sample/

[root@axinlinux-01 sample]# cp /etc/init.d/mysqld ./ #作一個文件,推到遠程

[root@axinlinux-01 sample]# git add mysqld

[root@axinlinux-01 sample]# git commit -m "add mysql"

[root@axinlinux-01 sample]# git push #推到遠程,阿銘作的時候要origin master(指定分支),阿鑫作的時候沒有提示。多是版本的問題

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.208.130:/data/gitroot/sample.git

* [new branch] master -> master

[root@axinlinux-01 sample]# echo "asfsasafsafasf" > 22.txt #能夠多推幾個

[root@axinlinux-01 sample]# git add 22.txt

[root@axinlinux-01 sample]# git commit -m "add 22.txt"

[root@axinlinux-01 sample]# git push

caec0d6..f3ff75c master -> master

[root@axinlinux-01 sample]# cd /tmp/ #咱們cd到tmp下。將遠程的這個項目在把它克隆到新的目錄下(僞裝另外一臺服務器)

[root@axinlinux-01 tmp]# git clone git@192.168.208.130:/data/gitroot/sample.git #直接克隆服務器下的sample文件(項目)

正克隆到 'sample'...

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 6 (delta 0), reused 0 (delta 0)

接收對象中: 100% (6/6), 4.08 KiB | 0 bytes/s, done.

[root@axinlinux-01 tmp]# cd sample/

[root@axinlinux-01 sample]# ls #就有了

22.txt mysqld

[root@axinlinux-01 sample]# pwd #咱們也能夠作pull(拉取的動做)

/tmp/sample

[root@axinlinux-01 sample]# vim 22.txt #從新變動一些文件,在提交,在push

[root@axinlinux-01 sample]# git add 22.txt

[root@axinlinux-01 sample]# git commit -m "again 22.txt"

[root@axinlinux-01 sample]# cd /root/sample/ #能夠回到剛纔的目錄下

[root@axinlinux-01 sample]# git pull #直接拉取

[root@axinlinux-01 sample]# ls

22.txt mysqld

[root@axinlinux-01 sample]# cat 22.txt #能夠看到咱們剛纔對22.txt作的變動

asfsasafsafasf

243141341231231

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

 

22.14/22.15 安裝gitlab

 

 

 

1.以上咱們使用了自建服務器。本節咱們將gitlab這種解決方案(算是比較完美的)

咱們可使用在線的託管的管理平臺。好比給github,可是github在美國有點慢。

也可使用國內的coding.net,還有一個付費的碼市,還有一個碼雲

咱們能夠把咱們的代碼放到他們那裏,比較省心不用維護

2.除了以上這種方案,還能夠自檢一個lab界面瀏覽管理控制的代碼管理平臺。首先方案就是gitlab軟件。咱們能夠去下載這個軟件,在咱們本身的服務器上搭建這樣的平臺出來

3.這臺跑gitlab的服務器儘可能不要放其餘的東西。使用官方的一些備份工具,能備份所有的數據

 

1.gitlab官網 https://about.gitlab.com/gitlab-com/

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

#詳見實例

3.要求服務器內存很多於2g

4.vim /etc/yum.repos.d/gitlab.repo//加入以下內容 (官方提供的源比較慢,咱們使用另外一個鏡像)

!!!這種方式執行起來並不成功(gpgkey驗證起來不成功)。只能按照官方文檔去安裝,有幾部不須要體現,詳細見實例!!!

[gitlab-ce]

name=gitlab-ce

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7

Repo_gpgcheck=0

Enabled=1

Gpgkey=https://packages.gitlab.com/gpg.key

5.yum install -y gitlab-ce(ce爲社區版本免費)

6.gitlab-ctl reconfigure

#gitlab的核心命令

7.netstat -lnpt //查看監聽端口

8.gitlab-ctl stop/restart/start/status

#gitlab-ctl 這個命令能夠中止/重啓/開啓/狀態

9.瀏覽器訪問gitlab,輸入ip便可

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

 

 

 

 

實例:

按照官方文檔那個來安裝的

[root@axinlinux-01 ~]# yum install -y curl policycoreutils-python openssh-server openssh-clients

[root@axinlinux-01 ~]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash #生成yum的倉庫

[root@axinlinux-01 ~]# EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce #yum安裝ce版本(社區版本)

[root@axinlinux-01 ~]# gitlab-ctl reconfigure

Running handlers:

Running handlers complete

Chef Client finished, 454/648 resources updated in 04 minutes 59 seconds

gitlab Reconfigured! #最後會告訴你講gitla先關的服務給你啓動起來

[root@axinlinux-01 ~]# ps aux |grep gitlab #能夠看到有不少gitlab相關的服務。能夠說這個系統很複雜

他會內置一個nginx。若是機器上有安裝過nginx,在安裝gitlab以前先把nginx關掉,以避免衝突

[root@axinlinux-01 ~]# gitlab-ctl stop

[root@axinlinux-01 ~]# killall redis-server #redis若是安裝了,也要關掉

redis-server: no process found

[root@axinlinux-01 ~]# gitlab-ctl start

ok: run: alertmanager: (pid 6407) 0s

ok: run: gitaly: (pid 6418) 0s

ok: run: gitlab-monitor: (pid 6428) 0s

ok: run: gitlab-workhorse: (pid 6432) 1s

ok: run: logrotate: (pid 6452) 0s

ok: run: nginx: (pid 6462) 1s

ok: run: node-exporter: (pid 6470) 0s

ok: run: postgres-exporter: (pid 6475) 1s

ok: run: postgresql: (pid 6481) 0s #他用的是這個數據庫。

ok: run: prometheus: (pid 6483) 0s

ok: run: redis: (pid 6499) 0s #他也會內置一個redis。因此也要將以前的redis關掉

ok: run: redis-exporter: (pid 6503) 0s

ok: run: sidekiq: (pid 6509) 1s

ok: run: unicorn: (pid 6516) 0s

 

而後登錄便可,默認爲root用戶

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

22.16 使用gitlab

 

 

nginx相關:

由於在內網裏,直接輸入內網ip就能夠了。

若是想用公網去訪問他,那麼在公網服務器上用nginx作個代理就能夠了,也能夠設置域名去訪問他

1./var/opt/gitlab/nginx/conf/nginx.conf #主配置文件

2./var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab相關的配置文件。修改端口或綁定域名能夠在這裏更改

server {

listen *:80; #更改端口

 

 

server_name gitlab.example.com; #更改域名

若是這臺服務器不須要跑別的服務,僅僅一個gitlab。那就不用動他

 

進入gitlab:

gitlab經常使用命令 https://www.cnyunwei.cc/archives/1204

 

 

實例:

建一個新的項目

咱們在建立新的項目以前先在建立一個新的組

 

接下來,咱們在組裏面建立用戶>project

接下來添加ssh key

 

接下來咱們在建立一個用戶

 

 

 

 

新的密碼爲 wx123456789

 

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

22.17 gitlab備份和恢復

 

 

1.gitlab備份 gitlab-rake gitlab:backup:create

#若是數據量很大的話,確定會耗費不短的時間。在線備份,服務要是開啓的狀態

#會備份你建立的project(項目)、group、user、固然還有project裏的代碼

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

#1543236441_2018_11_26_11.5.0_gitlab_backup.tar,#11.5.0爲版本號。

#假如你用的是9.幾的gitlab作的備份,想把9.幾的tar文件恢復到10.幾版本的gitlab裏邊去,那麼就會遇到問題:

要麼裝一個9.幾的版本。

要麼就把老的版本升級,而後再作本分。完成以後,在把它搞到10.幾版本的gitlab上來。也就是隻要是版本一致就能恢復過來

3.gitlab 恢復 先停服務 gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq

#停掉這兩個數據的目的是暫時不要變動數據了

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

#1543236441_2018_11_26_11.5.0_gitlab_backup.tar。紅色部分就是BACKUP=後面的編號

再啓動服務 gitlab-ctl start

相關文章
相關標籤/搜索