搭建git
gitlab、gitbit、gogs、gitee、github都是git代码的托管平台。
gitlab相比较于其他而言,其虽然体量大,配置要求较高,但是可以自己做很多的容灾配置。且所在的几家公司都是搭建私有的gitlab。所以以gitlab为原型
gitllab起步就是4核CPU、4G内存
gitlab分为企业版和社区版,社区版本免费,但是功能相对较少,企业版本收费,可在安装后通过激活码激活。
gitlab是用Ruby写的,Go语言重构,所以架构会设计到这些语言的层面
相关的安装文档都在此处
https://docs.gitlab.com/ee/
gitlab的文档建议1000人左右的使用者只需要单实例,2000及以上级别的使用者需要集群搭建
CentOS7安装单实例gitlab
因为docker的理念是生命周期的短暂、一个容器只有一个服务,所以我不用docker镜像直接安装,而是使用RPM包安装
https://about.gitlab.com/install/#centos-7
- 架构模型
- 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
4.安装社区版
sudo EXTERNAL_URL="http://gitlab.jtao.com" yum install -y gitlab-ce
安装完成,才发现域名写错了....
1.修改下配置文件,根据需要修改域名和email。
2.修改git自带的nginx
相关搭建问题看最后的问题总结
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab-ctl restart
git的服务进程
- 访问gitlab
gitlab.jtao.work
如下图 不会重定向
设置git
登陆之后账号通过/etc/gitlab/initial_root_password的文件登陆gitlab,进入后台设置
- 建议先设置成中文方便管理
安全
- 限制注册
一般需要设置限制注册和注册需要经过管理员批准
或者默认的地址类型邮箱才可注册 - 限制网络请求
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
重启gitlab服务
此时gitlab域名下已经是https而主站点没有设置还是http
搭载PostgreSQL
//TODO
集群部署git
//TODO
Admin高容错设置
//TODO
gitlab卸载
问题
跨域
我是使用git.jtao.work三级域名重定向转到www.jtao.work:xxxxx
但是gitlab会有跨域问题
- 解决
1.DNS解析前缀通过服务商直接解析
2.直接使用全局nginx代理域名
3.编辑gitlab自带nginx和配置文件
vim /etc/gitlab/gitlab.rb
vim ~git/nginx/conf/gitlab-http.conf
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
4.重启gitlab
gitlab-ctl restart
Comments | 0 条评论