• 01 . GitLab简介及环境部署


    GitLab简介

    最初,该产品名为GitLab,是完全免费的开源软件,按照MIT许可证分发。

    2013年7月,产品被拆分为:GitLabCE(社区版)和GitLabEE(企业版),当时,GitLabCE和GitLabEE的许可仍然是根据MIT许可分发的免费和开源软件。

    Gitlab于2017年1月31日发布一系列紧急通告称,位于荷兰的系统管理员因操作失误而删除了包含310GB产品数据的文件夹,在取消删除操作后仅剩下4.5GB。运维人员之后检查发现,网站宣称和配备的多项备份措施均未正常运作或难以利用。Gitlab在YouTube直播了恢复数据的过程。网站最终丢失了最后6小时的数据库数据(包括问题、合并请求、评论、片段等,不含代码库)

    GitLab是由 GitLab Inc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具开源项目,且具有 wiki 和 issue 跟踪功能,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。GitLab 由乌克兰程序员 Dmitriy Zaporozhets 和 Valery Sizov 开发,它由 Ruby 写成。后来,一些部分用 Go 语言重写.

    GitLab原理:

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

    其实说直白点,他就是个git服务器,和github差不多,只不过,这个gitlab可以下载到本地进行搭建,代码存在本地服务器上,而不是远端的github上.

    col1 GitLab GitHub
    安全性 代码存在本地,自行管控 代码存在远端,厂商管控
    私密性 代码能见度自行设定 免费的代码开放,付费的代码隐藏
    成本 运维成本 代码隐藏

    综上所述

    # 要是企业中有服务器,建议搭建gitlab,毕竟代码放到自己这里安心些.
    
    # 当然要是公司写的代码不重要的话,可以放到免费版的github上
    
    Git,GitLab,GitHub,Gittee到底是什么?

    git 是一种版本控制系统,是一个命令,是一种工具

    github 是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱

    gitee 类似github,一般在企业内搭建git私服,要自己搭建环境

    git-ce 是社区版,gitlab-ee是企业版,要收费.

    GitHub、GitLab 不同点:

    GitHub如果使用私有仓库,是需要付费的,GitLab可以在上面搭建私人的免费仓库。

    GitLab让开发团队对他们的代码仓库拥有更多的控制,相对于GitHub,它有不少的特色:

    # 1 允许免费设置仓库权限
    # 2 允许用户选择分享一个project的部分代码
    # 3 允许用户设置project的获取权限,进一步提升安全性
    # 4 可以设置获取到团队整体的改进进度
    # 5 通过innersourcing让不在权限范围内的人访问不到该资源
    

    GitLab部署

    环境清单
    # CentOS 7.3
    # gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm
    # policycoreutils-python
    # openssh-server
    
    注意事项
    # 必须要安装环境清单的两个依赖包
    
    初始化
    mkdir -p /etc/yum.repos.d/backup  
    mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup
    curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo &>/dev/null
    curl  -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum -y install ntpdate
    ntpdate -b  ntp1.aliyun.com
    setenforce 0
    sed -i '/^SELINUX=/ s/enforcing/disabled/'  /etc/selinux/config
    systemctl stop firewalld
    systemctl disable firewalld
    sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
    sed -i '/^#UseDNS/ {s/^#//;s/yes/no/}' /etc/ssh/sshd_config
    
    下载安装GitLab包
    # 安装依赖包
    yum -y install policycoreutils-python openssh-server
    # 去这个网址下载rpm包,四百-六百多兆,也可以用rpm -ivh 直接跟上已经下载好的下载包安装
    # https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm
    
    修改配置文件并配置邮箱,启动
    # 修改配置文件,可以直接在文件末尾追加以下行即可,
    # 默认Nginx监听的是80端口,如果Nginx修改端口,external_url里面也必须带端口:
    [root@gitlab-9 ~]# sed -r '/^(#|$)/d' /etc/gitlab/gitlab.rb
    external_url 'http://192.168.43.61'
    nginx['listen_port'] = 80
    gitlab_rails['gitlab_email_enabled'] = true
    gitlab_rails['gitlab_email_from'] = 'you_menz@163.com'
    gitlab_rails['gitlab_email_display_name'] = 'Admin'    # 待会邮箱收到邮件的发件人就是此处名字
    gitlab_rails['gitlab_email_reply_to'] = 'you_menz@163.com'
    gitlab_rails['gitlab_email_subject_suffix'] = 'gitlab[]'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.163.com"
    gitlab_rails['smtp_port'] = 25
    gitlab_rails['smtp_user_name'] = "you_menz@163.com"
    gitlab_rails['smtp_password'] = "zhoujian22"  # 此处密码是邮箱客户端的授权密码
    gitlab_rails['smtp_domain'] = "163.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = false
    
    # 重置配置服务
    gitlab-ctl  reconfigure
    
    # 查看服务是否都起来了
    gitlab-ctl status
    lsof -i:80
    COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   17165       root    7u  IPv4  45430      0t0  TCP *:http (LISTEN)
    nginx   17166 gitlab-www    7u  IPv4  45430      0t0  TCP *:http (LISTEN)
    
    # 至此说明服务都起来了,可以用web浏览器直接访问了
    # 登录到http://IP: 修改root密码,gitlab默认管理用户是root,
    # 登录:  root/修改后的新密码
    # 测试发送邮件是否成功,进入控制台,然后发送邮件
    gitlab-rails console        # 输入下面绿色命令
    Notify.test_email('18621048481@163.com','','flying').deliver_now
    # 如果出现以下信息代表成功
    Notify#test_email: processed outbound mail in 201.9ms
    Sent mail to 18621048481@163.com (5551.4ms)
    Date: Fri, 08 Nov 2019 10:48:36 +0800
    From: Admin <you_menz@163.com>
    Reply-To: Admin <you_menz@163.com>
    To: 18621048481@163.com
    Message-ID: <5dc4d78469ee3_73ca3fddefcd66008640@zk01.mail>
    Mime-Version: 1.0
    Content-Type: text/html;
    charset=UTF-8
    Content-Transfer-Encoding: 7bit
    Auto-Submitted: auto-generated
    X-Auto-Response-Suppress: All
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html><body><p>flying</p></body></html>
    

    GitLab主要组件

    1.Nginx:                   # web入口
    2.database:                # (postgresql,mysql) (gitlab repository issue, merge request等,用户(权限))
    3.redis缓存:               # 负责分发任务
    4.sideiq:                  # 后台任务,主要负责发送电子邮件,任务需要来自redis
    5.unicorn:                 # 包含gitlab主进程
    6.gitlab-shell:           # 用于ssh交互
    7.gitlab-workherse:       # 反向代理服务器,可以处理与unicorn无关的请求,处理git pull / push请求,处理unicorn的连接
    8.gitaly后台服务:          # 用于处理GitLab发出的所有调用
    

    GitLab常用命令

    gitlab-ctl start                     #启动全部服务
    gitlab-ctl restart                   #重启全部服务
    gitlab-ctl stop                      #停止全部服务
    gitlab-ctl restart nginx             #重启单个服务
    gitlab-ctl status                    #查看全部组件的状态
    gitlab-ctl show-config               #验证配置文件
    gitlab-ctl uninstall                 #删除gitlab(保留数据)
    gitlab-ctl cleanse                   #删除所有数据,重新开始
    gitlab-ctl tail <svc_name>           #查看服务的日志
    gitlab-rails console production      #进入控制台 ,可以修改root 的密码
    

    GitLab的备份操作与恢复

    备份<设置备份目录及保存天数>

    [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    gitlab_rails['backup_keep_time'] = 604800
    # 备份<重载>
    [root@gitlab ~]# gitlab-ctl reconfigure
    # 开始备份
    [root@gitlab ~]# gitlab-rake gitlab:backup:create
     # 会提示敏感信息
     警告:您的gitlab.rb和gitlab-secrets.json文件包含敏感数据,并且不包含在此备份中。您将需要这些文件来还原备份。请手动备份它们。
    #备份完成出现在指定目录下的文件
    [root@gitlab backups]# ls
    1541872172_2018_11_11_11.4.5_gitlab_backup.tar   
    #这个压缩包包含Gitlab所有数据(例如:管理员、普通账户以及仓库等等)。
    "1541872172"是一个时间戳,从1970年1月1日0时到当前时间的秒数
    

    从备份文件恢复

    [备份和恢复的GitLab版本尽量保持一致]
    [root@gitlab ~]# cd /var/opt/gitlab/backups
    [root@gitlab backups]# chmod 777 1541872172_2018_11_11_11.4.5_gitlab_backup.tar
    # 停止相关数据连接服务
    [root@gitlab backups]# gitlab-ctl stop unicorn  
    ok: down: unicorn: 0s, normally up
    [root@gitlab backups]# gitlab-ctl stop sidekiq
    ok: down: sidekiq: 0s, normally up
    # 从备份恢复
    [root@gitlab backups]# gitlab-rake gitlab:backup:restore BACKUP=<指定时间戳,即1541872172_2018_11_11_11.4.5>
         (若只有一个备份则无需指定时间戳)
         后会让你输入一个"yes",输入成功开始还原(,其实最主要是还原数据库,总体时间有点长...)
         之后再让你输一个“yes”,意思是因为备份中没有用户敏感数据,重写恢复时会丢失这些敏感数据;
         成功;
    #恢复完成,重载配置
    [root@gitlab backups]# gitlab-ctl reconfigure
    #重新启动,不然会报502错误;
    gitlab-ctl stop && gitlab-ctl start 
    
  • 相关阅读:
    ES6 promise 常用方法介绍
    js判断元素是否在可视区域里
    alert之后才执行
    jquery总结和注意事项
    java中unicode和中文相互转换
    html href页面跳转获取参数
    myBatis批量添加实例
    mybatis中返回自动生成的id
    遍历map的四种方法
    MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
  • 原文地址:https://www.cnblogs.com/you-men/p/13126530.html
Copyright © 2020-2023  润新知