gitlab知识点讲解

Gitlab的安装:

 

硬件要求:

至少2G内存,硬盘跟内核看着选

  1. gitlab有两个版本,gitlab-ee(商业版)、gitlab-ce(社区版)
  2. 一般都是rpm包,安装
  3. 修改gitlab配置文件/etc/gitlab/gitlab.rc的url路径,选择gitlab服务器地址,默认80端口,但是注意端口冲突,有冲突就修改成别的。
  4. Gitlab-ctl reconfigure 重载配置文件
  5. Gitlab-ctl restart 重启gitlab服务;注意关闭防火墙

到这里就安装完成了

 

下图是生成环境流程图:

 

 

 

Gitlab项目:

 

生成环境svn,将里面的镜像往gitlab上面迁移,但是考虑到项目经理是突然提出来的,先是将代码放到测试环境下,最后再转入用服务器搭建的gitlab生成环境中。

 

Svn服务器搭建:

 [root@localhost ~]#yum -y install subversion

 [root@localhost ~]#mkdir -p /application/svndata/crushlinux

[root@localhost ~]#mkdir -p /application/svnpasswd

创建代码项目的主分支,测试分支,开发分支。它是三个完全独立的项目

[root@localhost ~]#svnadmin create /application/svndata/crushlinux/master

[root@localhost ~]#svnadmin create /application/svndata/crushlinux/dev

[root@localhost ~]#svnadmin create /application/svndata/crushlinux/test

 

进入到master里面,将它里面的一个conf配置文件做备份,然后修改配置文件

[root@localhost ~]#cd /application/svndata/crushlinux/master

[root@localhost ~]#cp svnserve.conf svnserve.conf-$(date -F)

[root@localhost ~]#vim svnserve.conf

19 anon-access = none          ##是否允许匿名访问,none是不允许

20 auth-access = write          ##经过授权的是可以写的

27 password-db = /application/svnpasswd/passwd  ##密码存放文件路径

34 authz-db = /application/svnpasswd/authz       ##给项目文件做授权

 

将配置文件覆盖另外两个分支

[root@localhost ~]#/bin/cp svnserve.conf /application/svndata/crushlinux/dev/conf/

[root@localhost ~]#/bin/cp svnserve.conf /application/svndata/crushlinux/test/conf/

再将master里面的passwd跟authz文件copy一下

[root@localhost ~]#cp /application/svndata/crushlinux/master/conf/authz /application/svnpasswd

[root@localhost ~]#cp /application/svndata/crushlinux/master/conf/passwd /application/svnpasswd

修改passwd文件,里面是用来定义参加项目的人员的。

[root@localhost ~]#vim /application/svnpasswd/passwd

[users]

manager=123456       ##项目经理 ##格式:用户=密码

dev=123456           ##开发人员

tom=123              ##普通用户

bob=124              ##普通用户

 

[root@localhost ~]#vim /application/svnpasswd/authz

[groups]       ##申明组,

Testgroup = tom,bob     ##这个组里面有两个成员

 

[crushlinux/master:/]    ##master主分支的的使用成员,

manager = rw          ##manager(经理),拥有读和写的权限

dev = r                ##dev开发用户拥有读的权限

[crushlinux/dev:/]          ##dev分支的使用成员

dev = rw                  ##dev开发用户拥有读写权限

manager = r               ##manager拥有读的权限

[crushlinux/test:/]              ##test分支的使用成员

@testgroup = r                 ##testgroup这个组内成员有读的权限

manager = rw                  ##manager拥有读写权限

 

[root@localhost ~]#svnserve -d -r /application/svndata/

-d:代表后台

-r:指定项目的目录

到这一步svn就启动了。

[root@localhost ~]#ps aux|grep svn

如果能查看到,那就是没问题了,端口3690

 

在windows上搭建svn客户端

  1. 在windows上面安装两个软件。

 LanguagePack_1.8.8.25755-x64-zh_CN  ##svn中文包插件

 TortoiseSVN-1.8.8.25755-x64-svn-1.8.10

  1. 安装好以后在d盘(自定义)创建一个目录,右键——》TortoiseSVN——》设置——》最上面选择语言“中文”
  2. 再次右击新建目录——》svn检出——》版本库URL:svn//svn地址/crushlinux/master——》检出至目录:新建svn目录(输入路径)/master——》需要认证输入密码      
  3. 在各自的svn分支下面创建文档,右击分支目录选择提交,需要输入分支操作用户跟密码,这里就用manager用户来提交就可以了。然后就提交完成

 

利用git-svn克隆svn代码

提示:yum安装git没有git-svn功能,要编译安装较新版本的git

先安装git依赖包:

[root@localhost ~]#yum -y install crul-devel expat-devel gettext-devel openssl-devel zlib-devel

[root@localhost ~]#wget https://github.com/git/git/archive/v2.22.0.tar.gz

[root@localhost ~]#tar zxf git-2.22.0.tar.gz -C /usr/src

[root@localhost ~]#cd /usr/src/git-2.22.0/

[root@localhost ~]#make configure

[root@localhost ~]#./configure --prefix=/usr/local/git && make && make install

[root@localhost ~]#ln -sf /usr/local/git/ /usr/bin/

[root@localhost ~]#git --version

 

安装git-svn支持程序(没有这两个包git-svn报错)

[root@localhost ~]#cd /etc/yum.repos.d/

[root@localhost ~]#mv backup/CentOS-Base.repo ./

[root@localhost ~]#cd

[root@localhost ~]#yum -y install subversion-perl perl-Digest-MD5

 

创建git工作目录并克隆svn分支代码到本地

[root@localhost ~]#mkdir /backup

[root@localhost ~]#cd /backup

 

将svn服务器master分支代码克隆到本地git工作目录。

[root@localhost ~]#git svn clone --no-metadata svn://svn服务器地址/crushlinux/master /backup/master

登录以后需要输入svn服务器的root登录密码,然后再输入svn的master分支的授权用户及密码,比如说manager跟密码,然后就克隆下来了。

以同样的方式将dev和test都克隆过来

 

 

将svn克隆到本地的代码推送到测试环境的gitlab服务器。

  1. 进入gitlab的web界面创建一个项目。
  2. 将master目录代码推送到gitlab仓库的项目中。

[root@localhost ~]#cd /backup/master

[root@localhost ~]#git branch linux

[root@localhost ~]#git checkout linux

[root@localhost ~]#git add *

[root@localhost ~]#git commit -m “master分支代码提交”

[root@localhost ~]#git remote rm origin       ##先情况远程仓库

[root@localhost ~]#git remote add origin http://gitlab服务器地址/root/项目.git

[root@localhost ~]#git push -u origin linux   ##做合并,输入对方的root跟密码

以同样的方式将其他两个也一起合并上去

 

 

项目二:测试环境迁移到生产环境gitlab   

  1. 项目背景:

公司为了更换版本软件搭建了gitlab环境,并且开发组的同事都陆陆续续把代码从svn迁移到gitlab上,但是之前的服务器并不是搭建在公司的生产环境,而是搭建在办公室的某台闲置的电脑上,因此为了保证数据的安全性及gitlab服务的性能,领导要求将之前的gitlab数据全部重新迁移到公司生产的服务器上面去。

  1. 环境就不说了。
  2. Gitlab的数据备份。

首先,我们得把老服务器上得gitlab整体备份,使用gitlab一键安装包安装gitlab非常简单,同样的备份恢复与迁移数据也非常简单,使用一条命令即可创建完整的gitlab备份。

  gitlab-rake gitlab:backup:create

进入/var/opt/gitlab/backups执行命令

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1562305744_2019_07__08_11.11.3_gitlab_backup.tar的压缩包,这个压缩包是gitlab整个的完整部分,其中开头1562305744_2019_07__08是备份创建的日期,11.11.3是gitlab的版本号。

 

创建服务配置文件备份。

l  /etc/gitlab/gitlab.rb           //gitlab配置文件

l  /var/opt/gitlab/nginx/conf      //nginx配置文件

l  /etc/postfix/main.cf           //postfix配置文件

[root@localhost ~]#cp /etc/gitlab/gitlab.rb{,.bak}

[root@localhost ~]#/var/opt/gitlab/nginx/conf{,.bak}

[root@localhost ~]#/etc/postfix/main.cf{,.bak}

 

执行命令生成备份压缩包

[root@localhost ~]#cd /var/opt/gitlab/backups

[root@localhost ~]#gitlab-rake gitlab:backup:create

查看备份包

[root@localhost ~]#ls

 

 

更改gitlab备份目录

修改/etc/gitlab/gitlab.rb配置文件并重新加载

[root@localhost ~]#mkdir /backup

[root@localhost ~]#vim +334 /etc/gitlab/gitlab.rb

334 gitlab_rails[“backup_path”] = “/backup”

[root@localhost ~]#gitlab-ctl reconfigure

[root@localhost ~]#cd /backup

[root@localhost ~]#gitlab-rake gitlab:backup:create

[root@localhost ~]#ls   //查看

 

 

Gitlab的自动备份

将命令写成定时任务,每天凌晨两点执行一次备份操作

[root@localhost ~]#crontab -e

*       2   *  *  *   cd /backup && gitlab-rake gitlab:backup:create

[root@localhost ~]#systemctl restart crond

 

设置备份过期时间

设置保存最近7天的备份,编辑/etc/gitlab/gitlab.rb配置文件,找到如下配置并修改

[root@localhost ~]#vim /etc/gitlab/gitlab.rb

342 gitlab_rails[‘backup_keep_time’] = 604800    ##这个时间是根据604800/86400来算的,刚好7天。

[root@localhost ~]#gitlab-ctl reconfigure

 

将备份文件上传到新服务器

 

确保新gitlab服务器和老gitlab服务器版本相同

[root@localhost ~]#scp /backup/1562305744_2019_07__08_11.11.3_gitlab_backup.tar 新版本IP:/root

 

从备份数据中恢复gitlab数据

 

将拷贝过来的备份文件移动到新gitlab的备份目录下

[root@localhost ~]#mv /backup/1562305744_2019_07__08_11.11.3_gitlab_backup.tar /var/opt/gitlab/backups/

[root@localhost ~]#cd /var/opt/gitlab/backups/

[root@localhost ~]#ls

/backup/1562305744_2019_07__08_11.11.3_gitlab_backup.tar

 

给备份文件增加777权限,不然可能恢复的时候会出现权限不够,不能解压的问题。

[root@localhost ~]#chmod 777 /backup/1562305744_2019_07__08_11.11.3_gitlab_backup.tar

 

停止相关数据连接服务

[root@localhost ~]#gitlab-ctl stop unicorn

[root@localhost ~]#gitlab-ctl stop sidekiq

 

执行命令从备份文件中恢复gitlab

Gitlab-rake gitlab:backup:restore BACKUP=备份文件编号(如:1562305744_2019_07__08_11.11.3)

[root@localhost ~]# Gitlab-rake gitlab:backup:restore 1562305744_2019_07__08_11.11.3

说明:恢复过程过会出现两个(yes/no),输入两个yes即可

 

重新启动gitlab

[root@localhost ~]#gitlab-ctl start

转载于:https://www.cnblogs.com/JIAlinux/p/11217499.html

你可能感兴趣的:(git,操作系统,运维)