搭建私有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
  • 启动容器

    docker run -d --publish 8443:443 --publish 8080:80 --publish 8022:22 --name gitlab --restart always gitlab/gitlab-ce

进入容器修改配置

docker exec -it gitlab bash
vi /etc/gitlab/gitlab.rb

将下面配置粘贴/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

重启gitlab服务

gitlab-ctl restart

访问http://127.0.0.1:8080/

  • 查看初始密码

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

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

修改root密码

  • 进入gitlab控制台

    gitlab-rails console

  • 获取root用户,修改密码保存,退出

    u=User.find(1)
    u.password='12345678'
    u.save!
    exit

  • 重启gitlab服务

    gitlab-ctl restart

备份

  • gitlab默认的备份保存路径为/var/opt/gitlab/backups,可通过gitlab.rb修改

    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

  • 执行备份命令

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

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

定时备份

  • 安装crontab
    修改为阿里云镜像源deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse,提高下载速度

    vi /etc/apt/sources.list  # 修改apt-get镜像源
    

    安装

    apt-get update  # 更新软件源列表
    apt-get install cron
    
  • 设置定时

    crontab -e
    0 20 * * * gitlab-backup create >> /var/log/gitlab/crontab.out 2>&1 &  # 每天晚上8点执行备份
    service cron reload
    

恢复备份

  • 停止相关数据连接服务

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

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

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

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


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

    cp gitlab.rb /etc/gitlab/
    cp gitlab-secrets.json /etc/gitlab/
    gitlab-ctl reconfigure
    gitlab-ctl restart
    
  • 报错处理:
    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  //将本地远程仓库地址改为新地址

常用命令

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  # 查看状态

4 汉化gitlab

  • 方式一:有人直接使用非官方到民间镜像(hub.docker.com)然后部署使用,比较麻烦,不推荐
  • 方式二:直接修改本地化设置,根据个人喜好设置自己喜欢的语言
    登陆后点击头像,弹出下拉框,然后点击Preferences选项

    在新页面中,点击Preference选项,然后向下滚到,可以看到Localization选项,然后点击Language选项,选择Chinese 简体中文即可修改语言

    效果如下:
相关推荐
陈译8 小时前
Grafana——如何迁移Grafana到一台新服务器
运维·服务器·grafana
wangjun51598 小时前
linux redis ipv6、ipv4 只接收本地访问、接收本地和远程访问
linux·运维·服务器
x66ccff8 小时前
【nvidia】NCCL禁用P2P后果权衡
服务器·网络协议·p2p
1379003408 小时前
Git 设置代理
git
信阳农夫8 小时前
linux中yum是干啥的?
linux·运维·服务器
黑客老李9 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
java·运维·服务器·前端·xss
huosenbulusi9 小时前
Linux多版本管理工具介绍
linux·运维·服务器
猪萌萌9 小时前
关于如何利用群晖Docker搭建Project Zomboid(僵尸毁灭工程)私人服务器-保姆级教程
服务器·docker·容器·僵尸世界大战·游戏服务器搭建
vdigital10 小时前
本地主机(localhost)11434端口 HTTP 连接10061原因及解决
java·服务器·数据库
147SEO10 小时前
解决DeepSeek服务器繁忙的有效方法
运维·服务器