gitlab服务部署及使用
一、什么是gitlib
Gitlab 是一个基于Git实现的在线代码仓库托管软件,你可以用Gitlab自己搭建一个类似于Github一样的系统平台,一般搭建gitlab私服就是用在公司的内部
Gitlab 功能就是能够对代码的提交审核和问题跟踪,这个对于软件工程质量的管理是至关重要的
Gitlab分为社区版(CE) 和 企业版(EE) 我感觉大多数的公司还是会选择社区版,反正我们公司是要用社区版的
部署Gitlab 是对服务器有配置要求的 建议是CPU两核,内存4G以上(其实这就是废话了,谁家公司还没这样配置的服务器呀,主要还是给虚拟机玩的朋友们提示一下)
二、实现的原理
其实gitlab的原理就是git的原理,GitHub不是也是基于Git的呀,所有简单说一下Git的原理吧
上面的就是整个Git的工作流程:
其实上面的都是一些GIt的命令,先不管命令是做什么的,这里面有四个大块的东西,他们分别是
- Remote:远程仓库
- Repository:本地仓库
- index:暂存区
- workspace:工作区
- Remote远程仓库:
- 远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的
- Repository本地仓库:
- 这里面保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些
- git commit 后同步index的目录树到本地仓库,方便下一步通过git push同步本地仓库与远程仓库的同步
- index暂存区:
- .git目录下的index文件,暂存区会记录git add 添加文件的相关信息(文件名、大小),不保存文件实体,通过id指向每个文件的实体,可以使用git status查看暂存区的状态,暂存区标记了你当前工作区中那些内容是被git管理的
- 当你完成某个需求或者功能后需要提交代码,那么第一步就是通过git add 先提交到暂存区,被git管理
- workspace工作区:
- 程序员进行开发改动的地方,是你当前看到的,内容也是最新的
- 平常我们开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作
- 总结:
- 任何对象都是在工作区中诞生和修改的
- 任何修改都是从进入index区才开始被版本控制的
- 只有把修改的代码提交到本地仓库,该修改才能在仓库中留下痕迹
- 与协助者分享本地的修改,可以push到远程仓库来共享
下面这张图很明确的表现了他们的关系
三、Gitlab的服务构成
Gitlab有好多个东西一起构成的,分别是:
- Nginx:静态Web服务器
- gitlab-shell:用于处理Git命令和修改authorized keys列表
- gitlab-workhorse:轻量级的反向代理服务器(这个是个敏捷的反向代理,它会处理一些大的HTTP请求,比如文件的上传下载,其他的请求会反向代理给Gitlab Rails应用)
- logrotate:日志文件管理工具
- postgresql:数据库
- redis:缓存数据库
- sidekiq:用于在后台执行队列的任务
- unicorn:Gitlab Rails应用是托管在这个服务器上面的
四、Gitlab的优点
- git是分布式的,svn不是
git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。 - GIT分支和SVN的分支不同
分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。 - git有一个强大的代码仓库管理系统 - gitlab
可以很方便的管理权限、代码review,创建、管理project
五、安装配置gitlab
5.1. 安装依赖包
- [root@web1134 ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
5.2. 启动postfix,并设置开机自启
- [root@web1134 ~]# systemctl start postfix
- [root@web1134 ~]# systemctl enable postfix
5.3. 设置防火墙
- firewall-cmd --add-service=http --permanent
- firewall-cmd --reload
- 或者
- 关闭防火墙
- systemctl stop firewalld.service #停止firewall
- systemctl disable firewalld.service #禁止firewall开机启动
5.4. 下载安装gitlab rpm包
清华开源镜像站 :https://mirrors.tuna.tsinghua.edu.cn/
- [root@web1134 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.1.6-ce.0.el7.x86_64.rpm
- [root@web1134 ~]# rpm -i gitlab-ce-11.1.6-ce.0.el7.x86_64.rpm
5.5. 修改配置文件gitlab.rb
- ## GitLab configuration settings
- ##! This file is generated during initial installation and **is not** modified
- ##! during upgrades.
- ##! Check out the latest version of this file to know about the different
- ##! settings that can be configured by this file, which may be found at:
- ##! https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/files/gitlab-config-template/gitlab.rb.template
- ## GitLab URL
- ##! URL on which GitLab will be reachable.
- ##! For more details on configuring external_url see:
- ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
- #external_url 'http://gitlab.example.com'
- external_url 'http://192.168.73.134' # 修改这个地方
5.6. 重新加载配置文件
- [root@web1134 ~]# gitlab-ctl reconfigure
- [root@web1134 ~]# gitlab-ctl restart
5.7. 查看gitlab版本
- [root@web1134 ~]# head -1 /opt/gitlab/version-manifest.txt
六、汉化配置
6.1.下载最新汉化包
- [root@web1134 ~]# git clone https://gitlab.com/xhang/gitlab.git
这个时间下载的挺长的
6.2. 停止服务
- [root@web1134 ~]# gitlab-ctl stop
6.3. 切换到gitlab汉化包所在的目录
- [root@web1134 ~]# cd /root/gitlab
6.4. 比较汉化标签和原标签,导出 patch 用的 diff 文件到/root下
- [root@web1134 gitlab]# git diff v11.1.6 v11.1.6-zh > ../11.1.6-zh.diff
6.5. 将10.0.2-zh.diff作为补丁更新到gitlab中
- [root@web1134 gitlab]# cd ~
- [root@web1134 ~]# yum install patch -y
- [root@web1134 ~]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 11.1.6-zh.diff
- # 一路回车 覆盖文件
6.6. 启动gitlab并重新配置gitlab
- [root@web1134 ~]# gitlab-ctl start
- [root@web1134 ~]# gitlab-ctl reconfigure
七、设置发邮件功能
7.1. 修改配置文件
- [root@web1134 ~]# vim /etc/gitlab/gitlab.rb
- 修改下面信息
- # 配置发送邮箱
- gitlab_rails['smtp_enable'] = true
- gitlab_rails['smtp_address'] = "smtp.163.com"
- gitlab_rails['smtp_port'] = 25
- gitlab_rails['smtp_user_name'] = "smtp user@163.com"
- gitlab_rails['smtp_password'] = "password"
- gitlab_rails['smtp_domain'] = "163.com"
- gitlab_rails['smtp_authentication'] = "login"
- gitlab_rails['smtp_enable_starttls_auto'] = true
- # 修改gitlab配置的发信人
- gitlab_rails['gitlab_email_from'] = "smtp user@163.com"
- user["git_user_email"] = "smtp user@163.com"
7.2. 重新加载配置并重启服务
- [root@web1134 ~]# gitlab-ctl reconfigure
- [root@web1134 ~]# gitlab-ctl restart
八、测试使用
登录地址就是服务器IP地址 http://192.168.73.134
用户名是root
gitlab服务部署及使用的更多相关文章
- 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务
场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序 ...
- 一文搞懂GitLab安装部署及服务配置
GitLab安装部署 Git,GitHub,GitLab,这三个东东长得好像呀,都是个啥? Git是Linus Torvalds(如果不知道这位大神是谁,请出门左转,慢走不送~)为了帮助管理Linux ...
- rpm,docker,k8s三种方式安装部署GitLab服务
rpm方式 源地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ wget https://mirrors.tuna.tsinghua ...
- 【gitlab】gitlab快速部署教程
gitlab快速部署教程 部署环境 Ubuntu 16.04(亲测可用) 开始部署 安装依赖 sudo apt-get install curl openssh-server ca-certifica ...
- docker+gitlab+gitlab-runner部署
环境 服务端:centos7 客户端:window 在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传 ...
- Docker Gitlab CI 部署 Spring Boot 项目
目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...
- GitLab Runner部署(kubernetes环境)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Gitlab 快速部署及日常维护 (二)
一.概述 上一篇我们将Gitlab的安装部署和初始化设置部分全部讲解完成了,接下来我们介绍Gitlab在日常工作中常遇见的问题进行梳理说明. 二.Gitlab的安装和维护过程中常见问题 1.Gitla ...
- WCF学习之旅—WCF服务部署到IIS7.5(九)
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
随机推荐
- JS获取URL中文参数乱码的解决方法
浏览器URL参数值中带有汉字字符,在接收时直接获取会出现乱码,下面是解决方法(传递前不需要encodeURI): function getUrlVars() { var vars = [], hash ...
- idea2017启动ssm项目卡在build阶段后报outofmemory
如上图,设置build process heap size(Mbytes)(构建过程堆大小(单位MB))为4000,即约4GB.之前设置的是700,修改之后问题解决. 补充:导入新项目后,此参数会初始 ...
- Windows Server 2012安装密钥
Windows Server 2012 Standard 密钥:NB4WH-BBBYV-3MPPC-9RCMV-46XCB Windows Server 2012 StandardCore 密钥:NB ...
- 171. Excel Sheet Column Number (Math)
Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...
- FortiGate抓包 Sniffer
1.图形界面抓包 系统管理--网络--数据包捕获 选择添加好的数据捕获,点击"运行"开关抓包:抓取包后,可以点击"下载"将抓取的数据包保存的本地磁盘,可以用wi ...
- vue 和 react 路由跳转和传参
react 1 .跳转方式加传参 this.props.history.push({ //地址 pathname: '/film/Details', //路由传参 ...
- odoo研究学习:刷新本地模块列表都干了什么事?
模块信息存储在ir.module.module 数据表中 平时在开发过程中经常会刷新本地模块列表,例如:新增了模块.更新了模块基础信息.更换了模块图标等等,在点击‘更新’按钮的时候odoo平台到底干了 ...
- canvas(二) lineCap demo
var dom = document.getElementById('clock'), ctx = dom.getContext('2d'); ctx.beginPath(); ctx.moveTo( ...
- Shell脚本中"command not found"报错处理
字符串的定义与赋值 # 定义STR1变量,值为abc STR1 = "abc"(错误写法) STR1="abc"(正确写法) 在编写java代码时会考虑到格式化 ...
- Mybatis配置问题解决Invalid bound statement (not found)
首先这个异常的原因是系统根据Mapper类的方法名找不到对应的映射文件. 网上也搜索了到了类似的文章,一般可以从以下几个点排查: mapper.xml的namespace要写所映射接口的全称类名,而且 ...