avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
  • 首页
主页 git搭建与高可用
文章

git搭建与高可用

发表于 2021-12-25 更新于 30天前
作者 Administrator
20~26 分钟 阅读
  • 搭建git
    • CentOS7安装单实例gitlab
    • 设置git
      • 安全
    • https设置
    • 搭载PostgreSQL
  • 集群部署git
  • Admin高容错设置
    • gitlab卸载
  • 问题
    • 跨域

搭建git

gitlab、gitbit、gogs、gitee、github都是git代码的托管平台。
gitlab相比较于其他而言,其虽然体量大,配置要求较高,但是可以自己做很多的容灾配置。且所在的几家公司都是搭建私有的gitlab。所以以gitlab为原型
image.png
gitllab起步就是4核CPU、4G内存
gitlab分为企业版和社区版,社区版本免费,但是功能相对较少,企业版本收费,可在安装后通过激活码激活。
image.png
gitlab是用Ruby写的,Go语言重构,所以架构会设计到这些语言的层面
相关的安装文档都在此处
https://docs.gitlab.com/ee/
image.png

gitlab的文档建议1000人左右的使用者只需要单实例,2000及以上级别的使用者需要集群搭建
image.png

CentOS7安装单实例gitlab

因为docker的理念是生命周期的短暂、一个容器只有一个服务,所以我不用docker镜像直接安装,而是使用RPM包安装
https://about.gitlab.com/install/#centos-7

  • 架构模型
    image.png
  • Redis
    临时缓存
  • Gitaly
    RPC调用
  • PostgreSQL
    数据存储
  • Sidekiq
    消息队列
  • Promtheus+Gradfana
    服务治理

后续也可以自己挂载PostgreSQL

  • 安装依赖
    1.打开http、https、ssh,可以不做
sudo yum install -y curl policycoreutils-python openssh-server perl
# Enable OpenSSH server daemon if not enabled: sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd

# Check if opening the firewall is needed with: sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

2.安装Postfix支持发送电子邮件,可以不做

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
  • 安装gitlab包(安装社区版ce)
    3.添加Gitlab包存储库
# 企业版
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
# 社区版
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

image.png
image.png
4.安装社区版

sudo EXTERNAL_URL="http://gitlab.jtao.com" yum install -y gitlab-ce

image.png
安装完成,才发现域名写错了....
1.修改下配置文件,根据需要修改域名和email。
2.修改git自带的nginx
相关搭建问题看最后的问题总结
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab-ctl restart
image.png
git的服务进程
image.png
image.png

  • 访问gitlab
    gitlab.jtao.work
    如下图 不会重定向
    image.png

设置git

image.png
登陆之后账号通过/etc/gitlab/initial_root_password的文件登陆gitlab,进入后台设置

  • 建议先设置成中文方便管理

安全

  • 限制注册
    一般需要设置限制注册和注册需要经过管理员批准
    或者默认的地址类型邮箱才可注册
  • 限制网络请求
    image.png

https设置

ssl有加密和签名不可抵赖的作用

  • 申请域名证书
  • Nginx反向代理
    1.设置监听的端口80强转443
    2.设置443端口转发及证书设置
server {
    listen 80;
# server_name gitlab.jtao.com
    server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    location / {
        index index.html index.htm;
    }
}

server {
    listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
    root html;
    index index.html index.htm;
    ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    location / {
        root html;  #站点目录。
        index index.html index.htm;
    }
}
  • 设置gitlab配置
    /etc/gitlab/gitlab.rb
    修改为
    external_url "https://gitlab.example.com"
    letsencrypt['enable'] = false
    image.png
    重启gitlab服务
    image.png
    此时gitlab域名下已经是https而主站点没有设置还是http
    image.png

搭载PostgreSQL

//TODO

集群部署git

//TODO

Admin高容错设置

//TODO

gitlab卸载

image.png







问题

跨域

我是使用git.jtao.work三级域名重定向转到www.jtao.work:xxxxx
但是gitlab会有跨域问题
image.png

  • 解决
    1.DNS解析前缀通过服务商直接解析
    image.png
    2.直接使用全局nginx代理域名
    image.png
    3.编辑gitlab自带nginx和配置文件
    vim /etc/gitlab/gitlab.rb
    image.png
    vim ~git/nginx/conf/gitlab-http.conf
    image.png
    vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
    image.png
    4.重启gitlab
    gitlab-ctl restart
DevOps
许可协议: 
分享

相关文章

12月 26, 2021

Jenkins初识别

Jenkins官网https://www.jenkins.io/是基于Java开发的一种持续集成工具,开源安装Jenkins带有LTS是稳定版,长期支持带有小齿轮的是由第三方维护,非官方维护我选择使用Docker安装,官方的Docker镜像是集成JDK11的运行环境pull Jenkins的Dock

12月 25, 2021

git搭建与高可用

搭建gitgitlab、gitbit、gogs、gitee、github都是git代码的托管平台。gitlab相比较于其他而言,其虽然体量大,配置要求较高,但是可以自己做很多的容灾配置。且所在的几家公司都是搭建私有的gitlab。所以以gitlab为原型gitlab分为企业版和社区版,社区版本免费,

12月 25, 2021

前言

下一篇

Jenkins初识别

上一篇

前言

最近更新

  • 47 LangGraph Node:拆分意图、检索、订单与工单节点
  • 46 LangGraph State:设计可恢复的 Agent 状态
  • 45 业务接口设计:订单、工单、确认与日志 API
  • 44 售后工单 Agent 需求分析
  • 43 Agent 与 Workflow:固定流程和动态决策的边界

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy