介绍
介绍
前面福哥带着大家学会了使用k8s集群部署整套web服务(包括PHP环境和MySQL数据库等等)的方法。今天我们来学学Git的使用,Git是一款版本控制软件,用来管理项目文件的版本,是每一个研发人员每天都要使用的软件。
那么什么是版本控制呢?版本控制就是把你编写的程序文件的每个阶段都记录下来再打上一个编号,如果你在编写程序的时候发现走到了死胡同里出不来了,可以通过退回到历史的某一个时间点的版本重新来过!简单来说版本控制就是后悔药,当你发现“我错了”的时候可以选择“重来”!
GitLab是一款实现Git功能的管理软件,大部分团队都会选择使用GitLab来作为Git服务器端,今天我们就来学习GitLab软件的安装使用~
注意:涉及到在多个服务器上操作的情况,那些需要执行命令行命令的操作,福哥会附上操作截图,大家可以根据截图的主机名称判断是在哪个服务器操作的;那些需要在浏览器上面进行的操作,福哥会附上操作截图,大家可以根据浏览器上的IP地址判断是在哪个服务器操作的!!!
Git和GitLab
Git和GitLab有什么区别?
Git是一个开源公共软件,它支持最基础最基本最核心的版本控制功能,它是免费的!
GitLab是一个基于Git封装的、有用户界面的、功能丰富的版本控制管理软件,它除了可以提供Git的所有功能之外还增加很多CI/CD(持续集成)、用户管理等等的功能,它不是免费的!
GitLab本身不是免费的,但是我们可以用它的社区版本GitLab CE来体验它的功能~
环境
镜像版本 | gitlab/gitlab-ce:12.1.3-ce.0 |
操作系统 | CentOS 7 x86_64 2009 |
服务器 | TFCentOS7x64、TFCentOS7x64Node1 |
IP | 192.168.168.68、192.168.168.69 |
端口 | 1080、1022 |
安装
Dockerfile
镜像
福哥选择的是gitlab/gitlab-ce:12.1.3-ce.0这个基础镜像。
现在Docker Hub不能用了,福哥也不能给大家发链接了,唉~
拉取镜像gitlab/gitlab-ce:12.1.3-ce.0并且添加到registry.tongfu.net:5000私有仓库里面。
docker pull gitlab/gitlab-ce:12.1.3-ce.0 docker tag gitlab/gitlab-ce:12.1.3-ce.0 registry.tongfu.net:5000/gitlab/gitlab-ce:12.1.3-ce.0 docker rmi gitlab/gitlab-ce:12.1.3-ce.0 docker images | grep 'gitlab/gitlab-ce'
启动容器
因为端口80被nginx占用了,所以福哥选择的是1080这个端口!
因为端口22是SSH端口,所以福哥选择了1022这个端口!
docker run -tid \ --name tfgitlab \ -h tfgitlab \ --net tfnet \ -p 1080:80 \ -p 1022:22 \ registry.tongfu.net:5000/gitlab/gitlab-ce:12.1.3-ce.0
安装git客户端
这个git客户端直接通过yum安装就可以了。注意两台服务器都要操作哦~
yum -y install git git --version
使用
初始化
打开浏览器输入网址http://192.168.168.68:1080/,可以看到第一步就是让我们设置一个超级管理员密码!
如果看到是“502 Whoops, GitLab is taking too much time to respond.”错误就再等一会儿!
用root登录到gitlab。
登录后进入后台首页,可以看到四个操作Create a project(创建项目)、Create a group(创建分组)、Add people(添加用户)和Configure Gitlab(配置系统)。
我们先进入Settings里面把语言改成中文的!
改完之后点击左上角的“GitLab”菜单回到首页,发现原来只是部分内容变成了中文啊!就这样吧~
SSH授权
默认情况下我们操作gitlab里面的项目代码是需要账号和密码的。为了省去没完没了地输入密码,我们可以配置一个SSH授权,这样再操作gitlab的项目就不要输入密码了。注意两台服务器都要操作哦~
在服务器上输入如下命令创建一个公钥。
ssh-keygen -o -t ed25519 -b 4096
把公钥内容复制出来。
cat /root/.ssh/id_ed25519.pub
在用户 > 设置 > SSH密钥里,把刚刚的id_ed25519.pub的内容粘贴到密钥输入框里。
点击“添加密钥”完成SSH授权!
把TFCentOS7x64Node1也加进来吧~
设置时区
刚刚添加SSH授权的时候,发现添加时间居然是下午1点多,怎么可能?仔细一想,应该是默认UTC时区的问题。那么我们把时区改一下吧~
切入到tfgitlab容器里面,打开/etc/gitlab/gitlab.rb配置文件。
vi /etc/gitlab/gitlab.rb
搜索“gitlab_rails['time_zone']”项目,把“UTC”改成“Asia/Shanghai”并去掉前面的“#”。
gitlab_rails['time_zone'] = 'Asia/Shanghai'
重新配置gitlab服务。
gitlab-ctl reconfigure
重新启动gitlab服务 。
gitlab-ctl restart
等待gitlab起来之后,再回到SSH授权的界面查看一下时间,这次对了~
创建项目
点击左上角GitLab图标回到首页,点击“Create a project”进入创建项目界面。项目名称“tfphp”,勾选“Initialize repository with a README”选项。
点击“Create project”按钮创建项目。
代码管理
克隆项目代码
创建/tongfu.net/data/git目录并切进去。注意两台服务器都要操作哦~
mkdir /tongfu.net/data/git cd /tongfu.net/data/git
在tfphp项目首页,点击“克隆”按钮,点击“使用 SSH 克隆”下面的输入框右边的复制按钮复制克隆地址。
正常情况下把tfgitlab改成192.168.168.68,就可以克隆tfphp下面的代码了。
git clone git@192.168.168.68:root/tfphp.git
因为福哥使用的是1022这个端口作为tfgitlab的服务端口,所以克隆命令稍微有点不一样。
git clone ssh://git@192.168.168.68:1022/root/tfphp.git
切到tfphp项目里面可以看到只有一个文件。
cd tfphp/ ls
复制文件
现在可以把tfphp服务用到的文件全部复制过来了!
rsync -av /tongfu.net/data/docker/data/tfphp/ ./
添加文件
通过git add命令把这些文件都添加进项目里来。
git add config/ git add html/ git add res/
使用git status命令查看一共有多少文件被添加进来了。
git status
提交代码
现在使用git commit命令将改动提交,必须填写改动说明。
git commit -m "the first version"
推送代码
现在使用git push命令将改动推到gitlab上去。
git push
查看项目
现在回到gitlab上面,看看我们刚刚通过git客户端提交的改动是不是已经存到gitlab上面了!
没有问题,刚刚提交的文件已经在tfphp项目里了!
再次克隆项目代码
现在gitlab里的tfphp项目的代码是最新的了,它和TFCentOS7x64Node1上面的代码是一样的,但是TFCentOS7x64上面的代码还是docker-compose环境的旧版本的。
福哥现在去TFCentOS7x64上面把最新的tfphp项目的代码克隆下来,然后再复制到docker-compose环境里的tfphp服务的数据目录下。
git clone ssh://git@192.168.168.68:1022/root/tfphp.git
cd tfphp/ ls rsync -av --exclude=.git ./ /tongfu.net/data/docker/data/tfphp/
优化
内存占用
这个gitlab官方推荐的最小配置是双核+4G内存,这个也太难了!虽说内存便宜了。其实gitlab有非常强大的CI/CD(持续集成)能力,只不过我们只是想用它的最基本的git管理功能。为了减少它的内存占用过高的问题,只能去给gitlab减配了!
查看内存使用情况,现在可用内存是800M多,快用光了~
切入gitlab容器里面,打开/etc/gitlab/gitlab.rb配置文件。
vi /etc/gitlab/gitlab.rb
把配置文件/etc/gitlab/gitlab.rb里面的如下项目修改一下!注意项目前面有“#”的要把“#”去掉!
postgresql['shared_buffers'] = "64MB" # 256 to 64 postgresql['max_worker_processes'] = 1 # 8 to 1 nginx['worker_processes'] = 1 # 4 to 1 unicorn['worker_processes'] = 1 # 2 to 1 sidekiq['concurrency'] = 1 # 25 to 1 unicorn['worker_memory_limit_min'] = "120 * 1 << 20" # 400 to 120 unicorn['worker_memory_limit_max'] = "180 * 1 << 20" # 650 to 180 prometheus_monitoring['enable'] = false # true to false
重新配置gitlab。
gitlab-ctl reconfigure
重新启动gitlab。
gitlab-ctl restart
等待页面可以访问之后,再次查看内存占用情况,现在空闲内存1.6G,相比较减配之前的gitlab节省了大约800M左右,就这样吧!
总结
今天福哥带着大家学习了GitLab软件的安装使用,大家可以使用GitLab管理自己的项目文件了。
后面福哥会单独讲解如何使用Git来管理我们的项目文件我们的程序代码,包括分支的使用、标签的使用、合并代码、拉取代码、推送代码等等Git的操作,敬请期待~~