• 搭建私有git服务器:GitLab部署


    为什么搭建私有git服务器

    对于一些组织、企业或个人项目而言,为了满足项目和组织特定的需求,提高代码安全性、合规性,并为开发团队提供更好的定制和协作环境。需要搭建自己的私有 Git 服务器以满足要求。

    • 代码安全性: 对于一些敏感性高的项目或企业内部项目,保护代码的安全是至关重要的。搭建私有 Git 服务器可以提供更高的安全性,确保代码只对授权的人员可见和可访问。

    • 合规性和法规要求: 某些行业或地区可能有严格的法规和合规性要求,要求严格控制代码访问权限和存储。搭建私有 Git 服务器可以满足这些合规性需求,确保符合相关法规标准。

    • 知识产权保护: 对于一些涉及知识产权的项目,保护源代码和创新成果是非常重要的。私有 Git 服务器可以提供更高级的访问控制,防止知识产权被未授权的人员访问和使用。

    • 定制化需求: 私有 Git 服务器允许组织根据自身需求进行定制化配置,包括访问权限、集成工具、部署流程等。这使得整个开发流程更加灵活和适应性强。

    • 离线开发支持: 有些组织可能需要在没有互联网连接的环境下进行开发工作。搭建私有 Git 服务器可以提供局域网内的版本控制和协作能力,支持离线开发。

    • 性能和稳定性: 在一些大型项目或组织中,使用公共托管服务可能面临性能瓶颈或不稳定的情况。搭建私有 Git 服务器可以更好地控制硬件和网络环境,提高性能和稳定性。

    • 定制化集成: 私有 Git 服务器允许组织集成自己选择的工具和服务,更好地满足特定需求。这包括持续集成、持续交付、监控和安全扫描等工具的选择和配置。

    • 团队协作: 对于一些大型团队或分布式团队,私有 Git 服务器可以提供更精细的协作和沟通机制,使得团队成员更加高效地合作。

    GitLab 简介

    GitLab 是一个用于软件开发的开源平台,提供了代码仓库托管、协作、CI/CD(持续集成和持续交付)、监控、安全扫描等全套工具。它支持 Git 版本控制系统,并提供了许多功能,使得开发者和团队能够更高效地协作、部署和监控其软件项目。
    以下是 GitLab 的主要特性:

    1. 代码仓库托管: GitLab 提供了强大的代码仓库管理功能,支持 Git 版本控制系统。开发者可以在 GitLab 上创建公共或私有仓库,并进行代码的版本控制。

    2. 协作工具: GitLab 提供了一套协作工具,包括问题跟踪、合并请求、代码审查等,使得团队成员可以更方便地共同协作,解决问题和改进代码。

    3. CI/CD: GitLab 集成了持续集成和持续交付工具,允许开发者在提交代码后自动运行测试、构建和部署。这有助于提高软件质量,加速交付过程。

    4. 监控和性能优化: GitLab 提供了监控工具,可以追踪应用程序的性能和健康状态。这有助于及时发现和解决潜在的问题,提高应用程序的稳定性和性能。

    5. 安全扫描: GitLab 集成了安全扫描工具,可以检测代码中的潜在漏洞和安全风险。这有助于提高代码的安全性,减少潜在的安全威胁。

    6. 容器注册表: GitLab 包含一个容器注册表,允许用户存储和管理 Docker 镜像。这方便了在 CI/CD 流水线中使用容器进行应用程序的构建和部署。

    7. 自动化部署: GitLab 提供了自动化部署的能力,可以将应用程序快速部署到云端或自有服务器上,提高了部署的效率。

    8. 社区支持和企业版: GitLab 有一个庞大的开源社区,提供免费的社区版。同时,GitLab 还提供了企业版,为大型组织和企业提供了更多高级功能和支持。

    Gitlab部署

    本文采用docker容器化部署

    获取镜像

    docker pull gitlab/gitlab-ce
    
    • 1
    • 启动容器
    docker run -d  --publish 8443:443 --publish 8080:80 --publish 8022:22 --name gitlab --restart always gitlab/gitlab-ce
    
    • 1

    在这里插入图片描述

    进入容器修改配置

    docker exec -it gitlab bash
    vi /etc/gitlab/gitlab.rb
    
    • 1
    • 2

    在这里插入图片描述
    将下面配置粘贴/etc/gitlab/gitlab.rb

    external_url 'http://192.168.0.235'  # 这里的ip为宿主机ip或则域名,后期用户点击克隆项目的时候会显示
    gitlab_rails['gitlab_ssh_host'] = '192.168.0.235' 
    gitlab_rails['gitlab_shell_ssh_port'] = 8022
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    重启gitlab服务

    gitlab-ctl restart
    
    • 1

    在这里插入图片描述

    访问http://127.0.0.1:8080/

    • 查看初始密码
    cat /etc/gitlab/initial_root_password  # 只有gitlab.rb中未配置gitlab_rails['initial_root_password'],密码未被修改时有效
    
    • 1

    在这里插入图片描述

    注意:我看好多文章说提示修改密码,我的并没有不知道为什么,下面我们手动修改

    在这里插入图片描述

    修改root密码

    • 进入gitlab控制台
    gitlab-rails console
    
    • 1

    在这里插入图片描述

    • 获取root用户,修改密码保存,退出
    u=User.find(1)
    u.password='12345678'
    u.save!
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 重启gitlab服务
    gitlab-ctl restart
    
    • 1

    在这里插入图片描述

    备份

    • gitlab默认的备份保存路径为/var/opt/gitlab/backups,可通过gitlab.rb修改
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    
    • 1
    • 执行备份命令

      ls
      gitlab-backup create  # GitLab 12.1之后版本,GitLab 12.1及之前版本使用gitlab-rake gitlab:backup:create 
      
      • 1
      • 2

      在这里插入图片描述 在这里插入图片描述

    • 手动备份gitlab.rb和gitlab-secrets.json

      在这里插入图片描述

    定时备份

    • 安装crontab
      修改为阿里云镜像源deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse,提高下载速度
      vi /etc/apt/sources.list  # 修改apt-get镜像源
      
      • 1
      安装
      apt-get update  # 更新软件源列表
      apt-get install cron
      
      • 1
      • 2
    • 设置定时
      crontab -e
      0 20 * * * gitlab-backup create >> /var/log/gitlab/crontab.out 2>&1 &  # 每天晚上8点执行备份
      service cron reload
      
      • 1
      • 2
      • 3

    恢复备份

    • 停止相关数据连接服务

      gitlab-ctl stop unicorn
      gitlab-ctl stop sidekiq
      
      • 1
      • 2
    • 恢复gitlab仓库

      cd /var/opt/gitlab/backups
      gitlab-backup restore BACKUP=1659084022_2022_07_29_15.2.0
      
      • 1
      • 2

      执行上面命令,按两次回车即可,或执行下面命令则无需确认

      gitlab-backup restore force=yes BACKUP=1659084022_2022_07_29_15.2.0
      
      • 1

      yes
      在这里插入图片描述

    • 手动恢复gitlab.rb和gitlab-secrets.json,重新加载配置,重启

      cp gitlab.rb /etc/gitlab/
      cp gitlab-secrets.json /etc/gitlab/
      gitlab-ctl reconfigure
      gitlab-ctl restart
      
      • 1
      • 2
      • 3
      • 4
    • 报错处理:
      https://www.jianshu.com/p/09a2b0c25ecd
      在这里插入图片描述

    项目迁移

    此方案比较通用,缺点就是需要一个个的迁移

    git clone --mirror ssh://git@192.168.0.1:8022/demo/demo.git  demo 
    cd demo
    git push --mirror ssh://git@192.168.0.235:8022/demo/demo.git  //将本地克隆推送到新服务器
    git remote set-url origin ssh://git@192.168.0.235:8022/demo/demo.git  //将本地远程仓库地址改为新地址
    
    • 1
    • 2
    • 3
    • 4

    常用命令

    docker stop gitlab   # 容器外停止,这里的gitlab 就是我们上一步docker run 当中使用--name 配置的名字
    docker restart gitlab  # 容器外重启
    docker exec -it gitlab bash  # 进入容器命令行
    
    vi /etc/gitlab/gitlab.rb  # 编辑gitlab配置文件
    gitlab-ctl reconfigure  # 容器中应用配置,让修改后的配置生效
    gitlab-ctl start  # 开启
    gitlab-ctl restart  # 容器中重启服务
    gitlab-ctl stop  # 关闭
    gitlab-ctl status  # 查看状态
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4 汉化gitlab

    • 方式一:有人直接使用非官方到民间镜像(hub.docker.com)然后部署使用,比较麻烦,不推荐
    • 方式二:直接修改本地化设置,根据个人喜好设置自己喜欢的语言
      登陆后点击头像,弹出下拉框,然后点击Preferences选项
      在这里插入图片描述
      在新页面中,点击Preference选项,然后向下滚到,可以看到Localization选项,然后点击Language选项,选择Chinese 简体中文即可修改语言
      在这里插入图片描述
      效果如下:
      在这里插入图片描述
  • 相关阅读:
    需求管理手册-对需求描述的要求(8)
    Python的内置函数(十七)、replace()
    Tomcat的HTTP Connector
    不同温度与工况的放电曲线与内阻曲线
    Spring的创建和使用
    《从行动开始:自我管理的科学 》读书笔记
    啦啦外卖v60.5系统独立版+平台用户端+骑手端+商家端小程序 安装配置使用教程
    Python中迭代字典并在迭代过程中修改元素的解决方法
    Carina 全新版本 v0.11.0 上线!重磅升级不可错过
    开源监控软件Zabbix5部署实战
  • 原文地址:https://blog.csdn.net/qq_43347021/article/details/136247019