GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

理论

关于Git这一篇就够了
Gitlab作为一个开源项目开始帮助团队在团建开发上进行合作,通过以业界领先的步伐交付新的功能为整个软件开发和操作生命周期提供了一个单独的应用平台。Gitlab提供了管理、计划、创建、验证、打包、发布、配置、监视和保护应用程序所需的一切。Gitlab是一个基于git实现的在线代码仓库托管软件,一般用于企业、学校等内部网络搭建git私服。Gitlab是一个提供代码托管、提交审核和问题跟踪的代码管理平台。Gitlab分社区版(CE)和企业版(EE)
代码托管平台:
1.SVN
2.github(全世界都在使用,人家创建好的,注册就可以使用,企业用的话不安全)
3.gitlab (自己公司自己使用,企业自己可以创建)

Git/Gitlab/Github的区别

git:是一种基于命令的版本控制系统,全命令操作,没有可视化界面
gitlab:是一个基于git实现的在线代码仓库软件,提供Web可视化管理界面,通常用于企业团对内部协作开发
github:是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库(开源:开发源代码)

Gitlab服务组成部分(核心)

1.Nginx              静态web服务器(它作为GitLab的pros代理,处理我们所有HTTPS静态访问请求)
2.gitlab-shell      用于处理Git命令和修改authorized keys列表(ruby)
3.gitlab-workhorse  轻量级反向代理服务器(go)会处理一些大的HTTP请求,比如文件的下载、文件的上传、git push/pull和git包下载,其他请求会反向代理到gitlab rails应用,即反向代理给后端的unicorn
4.log rotate        日志文件管理工具(负责处理GitLab日志的切割打包等操作)
5.postgresql        数据库(保存所有gitlab的数据信息)
6.redis             缓存数据库(缓存数据库信息加快前台访问速度,以及数据的交互读写)
7.sidekiq           用于在后台执行队列任务(异步执行)(消息队列)(ruby)
8.unicorn           用ruby编写的一个HTTP服务器,gitlab rails应用是托管在这个服务器上
9.ruby              用ruby语言编写的
10.go               用go语言编写的

这是一个简化的架构图,可以用来理解GitLab架构。

Gitlab的常用命令

gitlab 默认的日志文件存放在/var/log/gitlab 目录下

gitlab-ctl start|stop|restart  开启  关闭  重启
gitlab-ctl start nginx        #启动nginx的服务
gitlab-ctl tail               #查看gitlab所有的日志
gitlab-ctl tail nginx         #查看nginx组件的日志
gitlab-ctl reconfigure        #重新编译(一般修改完主配置文件/etc/gitlab/gitlab.rb,需要执行此命令)
gitlab-ctl console(produce)   #进入到gitlab的shell
gitlab-ctl show-config        #验证配置文件
gitlab-ctl uninstall          #删除gitlab(保留数据)
gitlab-ctl cleanse            #删除所有数据,从新开始
gitlab-ctl stop unicorn+gitlab-ctl stop sidekiq    #停止相关数据连接服务 主配置文件:/etc/gitlab/gitlab.rb   // 可以自定义一些邮件服务等
日志地址:/var/log/gitlab/           // 对应各服务
服务地址:/var/opt/gitlab/          // 对应各服务的主目录
仓库地址:/var/opt/gitlab/git-data  // 记录项目仓库等提交信息
默认安装:postgres、nginx、redis、unicorn ......

安装配置

gitlab安装 虚拟机需要调2G内存以上

极狐Gitlab官网安装

wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
yum -y install cronie openssh-clients openssh-server policycoreutils-python
yum -y localinstall gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
# 以下内容忽略。上面这个是本地安装,下面的是官方文档:官方文档打不开Gitlab前端
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum -y install gitlab-ce-14.2.4-ce.0.el7.x86_64

[root@localhost ~]# vim /etc/gitlab/gitlab.rb
13 external_url ‘http://192.168.235.10’
[root@localhost ~]# gitlab-ctl reconfigure
#重新编译完就会自动启动服务
gitlab Reconfigured!
[root@localhost ~]# firefox 192.168.235.10
设置新密码–>root:新密码

gitlab日常维护操作

1、网易邮箱

gitlab的发送邮件
[root@localhost ~]# vim /etc/gitlab/gitlab.rb

53 gitlab_rails['gitlab_email_from'] = '***'  #指定发送邮件的邮箱地址
559 gitlab_rails['smtp_enable'] = true           #开启邮件服务
560 gitlab_rails['smtp_address'] = "smtp.163.com"   #smtp的服务器
561 gitlab_rails['smtp_port'] = 25                   #端口
562 gitlab_rails['smtp_user_name'] = "haha"        #用户
563 gitlab_rails['smtp_password'] = "***"   #开通smtp时返回的授权码
564 gitlab_rails['smtp_domain'] = "163.com"             #smtp的域名
565 gitlab_rails['smtp_authentication'] = "login"       #满足登录条件
566 gitlab_rails['smtp_enable_starttls_auto'] = false    #邮箱不加密
567 gitlab_rails['smtp_tls'] = false  #不开启tls

测试:
[root@localhost ~]# gitlab-ctl reconfigure
[root@localhost ~]# gitlab-rails console
irb(main):001:0> Notify.test_email(‘15102600575@163.com’,‘qq’,‘qwerqwerqwer’).deliver_now

2、备份与恢复

备份

[root@localhost ~]# gitlab-rake gitlab:backup:create
Creating backup archive: 1632226105_2021_09_21_12.3.0_gitlab_backup.tar ... done

默认备份文件会存在在/var/opt/gitlab/backups目录下,备份的文件是个tar包,包含了GitLab的所有数据(账户、仓库等)。
恢复

[root@localhost ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@localhost ~]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
[root@localhost ~]# gitlab-rake gitlab:backup:restore BACKUP=1625559345_2021_07_06_12.3.0
两次yes
[root@localhost ~]# gitlab-ctl start unicorn
ok: run: unicorn: (pid 48726) 0s
[root@localhost ~]# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 48757) 0s

3、root忘记密码

[root@localhost ~]# gitlab-rails console

irb(main):001:0> user = User.where(id:1).first       //通过条件查询用户==>user变量
=> #<User id:1 @root>
irb(main):002:0> user.password='12345.com'
=> "12345.com"
irb(main):003:0> user.save!

可以刷新页面 测试重新登录

修改默认端口

gitlab安装完成默认访问的是80端口,这个其实是gitlab自带nigix的端口
修改主要分为两部分,一部分是gitlab总的控制文件,一部分是子模块真实监听端口的修改。

  1. 编辑主配置文件:vim /etc/gitlab/gitlab.rb
 13 external_url 'http://192.168.235.10:800'1105 nginx['listen_port'] = 800         打开“nginx[‘listen_port’]”前面的注释,修改端口为800
  1. 编辑nginx配置文件:
# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf 注:这里的nginx配置文件是指gitlab自带的默认配置文件哦!
listen *:800
  1. 最后
重载配置:     gitlab-ctl reconfigure  [注意:如果修改完gitlab-http.conf再运行gitlab-ctl reconfigure,就会被还原,修改并不会被覆盖]
重启:        gitlab-ctl restart      [直接重启就行,↑面这个我也没试过]
检查端口情况:   netstat -antp
查看启动报错问题: gitlab-ctl tail

报错

1、* NoMethodError occurred in chef run: ruby_block[authorize Grafana with GitLab] (monitoring::grafana line 92) had an error: NoMethodError: undefined method `zero?’ for nil:NilClass

解决:删除/etc/gitlab/gitlab-secrets.json文件,再次运行gitlab-ctl reconfigure

Git+Gitlab

上传公钥

[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Y7czYlZCc/ypfd418XOjicHaVa5O9CP8XabhEPzN+xagnujm6TpytrqoRTSZHP+ZD6XYQiJYHxRCNLP67RPahJgbvZ38ZIhuMuXalrwMDhYED2xnnB4BM8xx+fFoB++TkvGnSCgbwoRCESnoD2oJbyQjbDBX4pnikldGjWa30kj26U9ML9KBDEknqPwLB70V82uogzDlmKpW9aGPuUPssaYvd5izQOaeVnaWRCm3PFQ9yZmXu+je+MC+5R8xYNU6c76kBrpUn/k9n0MEoG3GqcaP2MFoZNGavEfVAqNwm6xzBiPO+zLhicohEXk7GDLW4kN3quZfwDoFHlXnZH+h root@localhost.localdomain            "将密钥放入到用户->Settings->SSH Keys里面"
git的本地仓库上的数据传到gitlab上
[root@localhost ~]# ssh -T git@192.168.235.10
Welcome to GitLab, @root!

测试

[root@localhost ~]# tar -zxf kgcweb.tar.gz
[root@localhost ~]# cd kgcweb/
[root@localhost kgcweb]# git init
初始化空的 Git 版本库于 /root/kgcweb/.git/
[root@localhost kgcweb]# ls
pom.xml  src
[root@localhost kgcweb]# git config --global user.name "aa"
[root@localhost kgcweb]# git config --global user.email "aa@163.com"
[root@localhost kgcweb]# git add .
[root@localhost kgcweb]# git commit -m "first"
[master(根提交) 3967bdd] first3 files changed, 33 insertions(+)create mode 100644 pom.xmlcreate mode 100644 src/main/webapp/WEB-INF/web.xmlcreate mode 100644 src/main/webapp/index.jsp
[root@localhost kgcweb]# git remote add origin git@192.168.235.10:ab/kgcweb.git
[root@localhost kgcweb]# git push -u origin master
Counting objects: 9, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (9/9), 979 bytes | 0 bytes/s, done.
Total 9 (delta 0), reused 0 (delta 0)
To git@192.168.235.10:ab/kgcweb.git* [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

Life is difficult, but we never give up easily!

GitLab 项目管理和代码托管平台相关推荐

  1. 相较国外代码托管平台 gitlab,咱们中国自己的代码托管平台有哪些优势?

    相较国外代码托管平台gitlab,咱们中国自己的代码托管平台有哪些优势?没有对比就没有伤害,相较于国外的gitlab,大家平时也接触Github.Gitee 这些开源场景的代码托管平台,他们对个人开发 ...

  2. 国内代码托管中心-码云、自建代码托管平台-GitLab

    文章目录 第 9 章 国内代码托管中心-码云 9.1 简介 9.2 码云帐号注册和登录 9.3 码云创建远程库 9.4 IDEA 集成码云 9.4.1 IDEA 安装码云插件 9.4.2 IDEA 连 ...

  3. Git ---- 自建代码托管平台-GitLab

    Git ---- 自建代码托管平台-GitLab 暂时用不到,就先不更新了-

  4. 【Microsoft Azure 的1024种玩法】五十九.基于Azure云平台快速搭建GitLab应用实现代码托管

    [简介] GitLab是由GitLab Inc.开发,一款基于Git的完全整合的软体开发平台,以 Git 作为代码管理工具并实现自托管的 Git 项目仓库,本篇文章主要介绍如何在Azure Virtu ...

  5. 【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

    了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用.这里特别介绍以下四款: 国外平台 GitHub -- 全球最流行的代码托管平台 G ...

  6. 5分钟搭建自己的代码托管平台gitlab

    熟练的使用git和github已经成为了每个程序员必备的技能.git可以使我们更好的管理和维护自己的代码,可以使团队成员之间以更高效的方式进行工作,github作为一个免费好用的代码托管平台,在一定程 ...

  7. Git基础(17):自建代码托管平台GitLab(基于docker)

    文章目录 前言 第一节 官网安装Gitlab教程 第二节 docker-compose安装Gitlab 第三节 修改密码 前言 Gitlab作为私有的代码托管平台,使用的比较广泛. Gitlab官网: ...

  8. 揭秘码云:全球第二大代码托管平台的核心架构

    嘉宾介绍 周凯,现任码云(https://gitee.com)负责人,负责码云相关的产品.开发.运维以及大客户服务等业务:擅长Ruby.Linux及DevOps:为招商银行.招商证券.比亚迪等企业提供 ...

  9. 国内代码托管平台(Git)

    可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS社区.GitHub真正迷人的是它的创新能力与Geek精神,这些都是无法模仿的. ...

最新文章

  1. Mysql数据库的分离和附加转
  2. 女生学师范还是计算机,本人专业是计算机科学与技术师范类,女生,不知道是考研还是工作什么的,今年开学大三,希望大家提点意见...
  3. linux查询语言,Linux结构化查询语言SQL——SQL的分类和DDL使用
  4. UA MATH524 复变函数 用保形映射解Laplace方程的边值问题
  5. OpenGL 头文件,库文件
  6. Prometheus邮件报警设置
  7. 榆树计算机课,吉林省榆树市弓棚镇武龙中学校七年级信息技术:第九课 Excel表格计算 教案+课件 (2份打包)...
  8. 人生最好是随意,人生不可太随意!
  9. 点滴生活感悟(更新至29)
  10. 2023年湖北一级(高级)技师二级技师报名时间、考试时间是什么时候?
  11. python判断x是否为奇数表达式_Python-day3
  12. Matlab_回归分析_逐步回归
  13. csapp-bomblab
  14. 商城系统开发使用微信服务号和小程序那个好?
  15. dbus的代码范例 linux_Dbus简介与简单的收发示例程序
  16. 【39】组合总和--回溯
  17. 雨伞消费行业调研报告 - 市场现状分析与发展前景预测
  18. 〖NOIP2004P〗FBI树
  19. 搜狗输入法如何开启中文简体与繁体切换快捷键
  20. 利用Dockerfile编排pbspro集群

热门文章

  1. 【组织架构】中国铁路武汉局集团有限公司
  2. GitHub代码管理初探
  3. John F. Kennedy的就职演说(在线收听)
  4. 彻底解决python关于各种文件(音乐、视屏等)读写的操作
  5. vmware 虚拟机安装成功,但没有虚拟网卡的解决方法
  6. 【linux】shell脚本 ps 命令学习
  7. 百度编辑器(UEditor)自定义内容样式
  8. 用excel替换word里的文字,deepcopy
  9. 人生的色彩,是五彩斑斓还是单调无味?
  10. JVM 1.8 永久代---元空间 的变动