Gitlab的安装:
硬件要求:
至少2G内存,硬盘跟内核看着选
- gitlab有两个版本,gitlab-ee(商业版)、gitlab-ce(社区版)
- 一般都是rpm包,安装
- 修改gitlab配置文件/etc/gitlab/gitlab.rc的url路径,选择gitlab服务器地址,默认80端口,但是注意端口冲突,有冲突就修改成别的。
- Gitlab-ctl reconfigure 重载配置文件
- 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客户端
- 在windows上面安装两个软件。
LanguagePack_1.8.8.25755-x64-zh_CN ##svn中文包插件
TortoiseSVN-1.8.8.25755-x64-svn-1.8.10
- 安装好以后在d盘(自定义)创建一个目录,右键——》TortoiseSVN——》设置——》最上面选择语言“中文”
- 再次右击新建目录——》svn检出——》版本库URL:svn//svn地址/crushlinux/master——》检出至目录:新建svn目录(输入路径)/master——》需要认证输入密码
- 在各自的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服务器。
- 进入gitlab的web界面创建一个项目。
- 将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
- 项目背景:
公司为了更换版本软件搭建了gitlab环境,并且开发组的同事都陆陆续续把代码从svn迁移到gitlab上,但是之前的服务器并不是搭建在公司的生产环境,而是搭建在办公室的某台闲置的电脑上,因此为了保证数据的安全性及gitlab服务的性能,领导要求将之前的gitlab数据全部重新迁移到公司生产的服务器上面去。
- 环境就不说了。
- 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