网站建设资讯

NEWS

网站建设资讯

四、搭建git服务器、安装gitlab、使用gitlab、gitlab备份和恢复

一、搭建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文件里。

创建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  //粘贴到新机器上(服务端)刚才创建的文件中
[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

// 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

# chown -R git.git sample.git

以上操作是在git服务器上做的,平时git服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像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的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后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服务器的方法。

二、安装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,无密码,它会让我们去定义一个密码。

四、搭建git服务器、安装gitlab、使用gitlab、gitlab备份和恢复

设置好后就可以sign in了。

三、使用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。

四、搭建git服务器、安装gitlab、使用gitlab、gitlab备份和恢复

再创建一个项目,可以选择刚才创建的组,并设置项目名。

四、搭建git服务器、安装gitlab、使用gitlab、gitlab备份和恢复

创建完成后,最上面显示了一条“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,第一次登录时,会让你设置新密码。

四、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


当前文章:四、搭建git服务器、安装gitlab、使用gitlab、gitlab备份和恢复
URL分享:http://njwzjz.com/article/pscoej.html