GitLab搭建并接入自建Nginx

前言

我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。https://github.com/CrazyCodes...

大家好,我是CrazyCodes,这篇文章的标题有些严肃了,算是非常单纯的教学文,愿可以帮助到有需要的人。

GitLab

GitLab与GitHub和码云一样,都是以web形式存在的在线管理Git仓库并且都拥有优雅的可视化操作页面。当然这篇文章咱们不介绍这没用的。

因为GitLab/Hub或者码云对免费用户不是够友好,无论是在库的容量或者协作人员都有些许限制,GitHub的提交速度对中国程序员更是慢如蜗牛。

网络上关于GitLab安装的文章并不少,因为GitLab在安装过程中会默认再安装一个Nginx,这必然会与已有Nginx冲突,写这篇文章主要的目的还是对已存在Nginx服务的服务器如何配置GitLab做一个指导。

安装

服务器版本:(阿里云) CentOS Linux release 7.6.1810
GitLab版本:12.4.0-ee
Nginx版本:nginx/1.17.0

基本都算是比较新的版本了,废话不多说,我们开始吧!

第一步:进入GitLab官网

https://about.gitlab.com/install/

第二步: 执行一大堆牛逼的命令

sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

第三步:下载GitLab安装文件

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

第四步:安装

sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee

EXTERNAL\_URL 这个配置就默认好了,毕竟咱们也不用GitLab自带的Nginx

第五步:完成

就是这么简单,安装完成了。第一次访问的时候会要求重新设置密码。用户名默认为 root

配置

安装完成后,需要对现有的GitLab做一些配置更改。

官方文档:https://docs.gitlab.com/12.4/omnibus/settings/nginx.html#using-a-non-bundled-web-server

禁用NGINX

在文件

/etc/gitlab/gitlab.rb

下,将配置设置为false

nginx['enable'] = false

设置所属用户

需要将自建Nginx的所属用户加入到配置内
在文件

/etc/gitlab/gitlab.rb

下,将配置设置为 www-data

对于Debian/Ubuntu,默认用户是www-data
对于RHEL/CentOS,NGINX用户是nginx

当然如果安装nginx未指定所属用户,也有可能会是root。当然可以通过命令

cat /usr/local/nginx/conf/nginx.conf | grep user

查看所属用户,实际就在配置文件里写着

user  root;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

回到正题,修改配置为root(刚刚讲过了,为啥是root)

web_server['external_users'] = ['root']

这个设置是一个数组,可以添加多个用户。设置好后运行命令

sudo gitlab-ctl reconfigure

配置已生效

添加虚拟主机

GitLab已经为开发者准备好相应的vhost文件。可以通过访问下方链接获取
https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server
配置完成后执行

nginx -s reload

既完成,原理很简单,其他配置我也不是太明白,大概则是使用反向代理转发了一下请求这样子。

问题

在最新版本中,如果按照上述方式配置,可能会在提交过程中出现422错误,具体原因不清楚,我遇到这个问题后配置了ssl,解决了这个问题。

致谢

大多都是官方的文字,可能只是不太好找,所以网络上经常出现这个问题,但都无解,所以写这么个水文,帮助需要的人,当然,提倡还是去看官网的文档。

感谢你看到这里,希望本篇文章可以帮到你。
图怪兽_aca660f7aa40e1eb9fb2ce7d8b804a59_89437.jpg


Grace development
记录分享开发、学习中的点点滴滴

I am CrazyCodes,生命不息,编码不止。

16.8k 声望
14.7k 粉丝
0 条评论
推荐阅读
海外电商支付网关避坑指南
上一篇我大致描述了支付系统开发的基本流程,但相比之下,国内的流程虽然大同小异,但必要步骤还是完整的,技术水平比较高,但相比之下,对接海外的三方支付就没有我们想象的那么通畅了。

CrazyCodes9阅读 2.6k

封面图
怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.4k评论 4

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go10阅读 2k评论 3

封面图
图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.3k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2.3k评论 2

封面图
Hyperf 3.0 发布,PHP 新时代
在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。

huangzhhui4阅读 1.1k评论 1

封面图
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10.1k

I am CrazyCodes,生命不息,编码不止。

16.8k 声望
14.7k 粉丝
宣传栏