Gitlab的安装部署和介绍
在devops工具链中有一个最重要代码托管环节,代码托管一般公司采用gitlab和svn结合的方式进行代码托管。今天我们来介绍一下如何进行gitlab的安装部署。
1.安装环境建议
Gitlab 不建议用太新版本,可能会有bag还有汉化不太好。还有用虚拟机做实验的时候内存不要低于2G,不然很多服务起不来报错。
Gitlab推荐配置 8C 32G 磁盘IO 越高越好,最好物理机+SSD
环境配置
1、OS:RHEL7.6
2、CPU:尽量使用四核以上
3、MEM:官方建议4GB以上
这个对配置的要求确实高,如果太低的话,安装完成后服务真的会跑不起来
2.解决依赖
GitLab 10.x版本后多了一些依赖,我们现在来解决一下环境的依赖,我们是以最小化服务器来进行环境的配置。
[root@centos7 ~]# yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y
[root@centos7 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix -y #下面这标红的是我们做实验时为了图方便关闭了防火墙,已防止防火墙问题给我们带来的不便。
[root@centos7 ~]# systemctl disable firewalld [root@centos7 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux #启动ssh服务&设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
#设置postfix开机自启,并启动,postfix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
#上面关闭防火墙,在生产环境中的,是不建议的,所以在生产环境中,我们部署gitlab,需要开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
[root@centos7 ~]# hostnamectl set-hostname gitlab.example.com
[root@centos7 ~]# reboot
安装包下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
rpm 包国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
ubuntu 国内下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/
由于我们这次的部署环境是centos的所以我们采用rpm包的方式进行部署。
点进去之后选择我们需要的rpm包进行安装,直接下载,通过xftp传到服务器上,也可以复制链接地址通过服务器直接下载,这里我们用第二个方法。
3.安装过程
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm [root@gitlab ~]# yum localinstall gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm #用yum localinstall 安装本地rpm包并解决依赖关系
#这里需要我们到配置文件中修改external_url,将url中的域名换成本机ip ,如果有需要的话,我们可以在此配置文件中,修改默认的80端口
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
[root@gitlab ~]# grep "^[a-Z]" /etc/gitlab/gitlab.rb
external_url 'http://192.168.195.166'
#把端口添加到防火墙 ,我们这里是默认的80端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
1.gitlab邮件配置
到这里基本的gitlab配置已经做完了,不过一般我们还需要做一项基本配置就是gitlab的邮件配置,可以让gitlab向外发送通知邮件,比如创建账号或者修改了什么配置都可以给管理源发送邮件。配置方法也是修改配置文件/etc/gitlab/gitlab.rb里的一些配置。配置如下
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "632328143@qq.com" gitlab_rails['smtp_password'] = "这里填入自己的授权码" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = :login gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "632328143@qq.com" user["git_user_email"] = "632328143@qq.com"
2.初始化服务
这里需要注意的是我们在安装配置gitlab的之前,我们在服务器不要装任何类似tomcat的服务,因为它会导致端口被占用。
[root@gitlab ~]# gitlab-ctl reconfigure #修改完配置文件要执行此操作,然后继续等待服务启动完成。
完成后,我们就可以在浏览器中输入本机ip进入gitlab界面了
第一次进入会提示你修改管理员密码,按照提示修改就行
密码修改完之后我们会到下面的页面,这里我们可以用root加你刚刚修改的密码进行登陆了,这里我们会看到还有一个注册的页面,这里一般后面我们建议关掉,因为可能会导致产生一堆垃圾账号。
设置:取消勾选
点击保存:
验证是否关闭账号注册:
4.Gitlab的汉化
虽然不推荐,但是有需求, 基于第三方开发爱好者实现
1.下载语言包替换
https://gitlab.com/xhang/gitlab
2.变更过程
[root@centos7 ~]# head -1 /opt/gitlab/version-manifest.txt #查看当前gitlab的版本 gitlab-ce 11.11.5 [root@centos7 ~]# wget https://gitlab.com/xhang/gitlab/-/archive/v11.11.5-zh/gitlab-v11.11.5-zh.tar.gz #这里注意下载-zh的包,别下错了 [root@centos7 ~]# tar -zxvf gitlab-v11.11.5-zh.tar.gz #解压包 [root@centos7 ~]# gitlab-ctl stop #停gitlab服务,如果没有第一次安装,就不用执行这一步 [root@centos7 ~]# cp -rp /opt/gitlab/embedded/service/gitlab-rails /opt/gitlab-rails.bak #备份原目录 [root@centos7 ~]# \cp -rf gitlab-v11.11.5-zh/* /opt/gitlab/embedded/service/gitlab-rails/ #替换文件,复制过程中提示,以下信息是正常的:
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-v11.11.5-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-v11.11.5-zh/tmp’ [root@centos7 ~]# gitlab-ctl reconfigure #重新加载配置 [root@centos7 ~]# gitlab-ctl start #启动
Web 界面更改语言:
右上角的账户下拉框选 Settings 然后左侧 Preferences 设置项,然后语言选择中文
保存后刷新界面,可以看到汉化成功
5.gitlab迁移版本库(保留原版本库的所有内容)
在生产中有时候我们会遇到需要跨主机迁移Gitlab里某个库的里面的内容,但是又不能影响原版本库里的内容,下面我来演示一下实现方法。
1.从原地址克隆一份裸版本库
[root@github-no ~]# ll total 16 -rw-------. 1 root root 6706 Sep 13 2017 anaconda-ks.cfg -rw-------. 1 root root 6556 Sep 13 2017 original-ks.cfg [root@github-no ~]# git clone --bare http://pl.git.iflytek.com/EvidenceGroup-SH/marking-module-server.git #这里需要我们输入项目的具有clone代码的用户
和密码,如果需要迁移的版本库多,可以通过公私钥ssh的方式克隆代码
[root@github-no ~]# ll total 20 -rw-------. 1 root root 6706 Sep 13 2017 anaconda-ks.cfg drwxr-xr-x. 7 root root 4096 May 13 10:05 marking-module-server.git -rw-------. 1 root root 6556 Sep 13 2017 original-ks.cfg
2.然后到新的 Git 服务器上创建一个新项目,比如test_46_38
3.以镜像推送的方式上传代码到 test_46_38 服务器上。
[root@github-no ~]# cd marking-module-server.git/ [root@github-no marking-module-server.git]# git push --mirror http://172.31.46.38/root/test_46_38.git #这里输入test_46_38项目的具有提交代码权限的用户和密码
这个时候新Gitlab上就有了信息了
4.删除本地代码
[root@github-no marking-module-server.git]# cd .. [root@github-no ~]# ll -h total 20K -rw-------. 1 root root 6.6K Sep 13 2017 anaconda-ks.cfg drwxr-xr-x. 7 root root 4.0K May 13 10:05 marking-module-server.git -rw-------. 1 root root 6.5K Sep 13 2017 original-ks.cfg [root@github-no ~]# rm -rf marking-module-server.git [root@github-no ~]# ll -h total 16K -rw-------. 1 root root 6.6K Sep 13 2017 anaconda-ks.cfg -rw-------. 1 root root 6.5K Sep 13 2017 original-ks.cfg
5.到新gitlab服务器上找到clone地址,直接clone到本地就可以了
[root@2-no test]# ll total 0 [root@2-no test]# git clone http://172.31.46.38/root/test_46_38.git [root@2-no test]# ll total 0 [root@2-no test]# git clone http://172.31.46.38/root/test_46_38.git
6.让开发改本地远程地址
远程库地址变了,这个时候还需要开发,改本地远程地址,不然一切都白费。
以下均以项目git_test为例: 老地址:http://192.168.1.12:9797/john/git_test.git 新地址:http://192.168.100.235:9797/john/git_test.git 远程仓库名称: origin 方法一 通过命令直接修改远程地址 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote set-url origin http://192.168.100.235:9797/john/git_test.git 方法二 通过命令先删除再添加远程仓库 进入git_test根目录 git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址 git remote rm origin git remote add origin http://192.168.100.235:9797/john/git_test.git 方法三 直接修改配置文件 进入git_test/.git vim config [core] repositoryformatversion = 0 filemode = true logallrefupdates = true precomposeunicode = true [remote "origin"] url = http://192.168.100.235:9797/shimanqiang/assistant.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 修改 [remote “origin”]下面的url即可 方法四 通过第三方git客户端修改。 以SourceTree为例,点击 仓库 -> 仓库配置 -> 远程仓库 即可管理此项目中配置的所有远程仓库, 而且这个界面最下方还可以点击编辑配置文件,同样可以完成方法三。