Gitlab环境搭建小计

最近给公司搭建Gitlab作源代码管理工具 满满都是坑呐。

Gitlab 开源仓库软件包官方地址: https://about.gitlab.com/

https://about.gitlab.com/downloads/ 这里有各个Linux分支的安装包,下面的说明笔记齐全,直接使用比较简单。

我的安装环境是 CentOS 7.0 x86_64 目测Gitlab包会把自己安装在 /opt/gitlab 下,然后/usr/bin/gitlab-*的几个文件软链接到/opt/gitlab/bin/gitlab-*,释放初始配置到/etc/gitlab目录 执行 gitlab-ctl reconfigure之后,在/var/opt/gitlab 下保存配置和数据

gitlab实际上里面包含了很多东西,rails、redis、nginx、ruby等,如果有自己的相应服务的话,得记得端口冲突问题。比如我一开始就有端口和unicorn的默认端口(8080)冲突

接下来要改默认配置,然后坑就来了:

  1. 首先是生成的/var/opt/gitlab里面的路径不能是软链接,我把git仓库保存路径软链接后发现push的时候报错, ! [remote rejected] master -> master (pre-receive hook declined)
  2. 其次,我替换自己的nginx服务器的时候,nginx官方提供的包并不带gitlab要求的passenger模块,所以不能直接用官方提供的方法。我是用gitlab-ctl reconfigure生成了nginx的配置以后复制到自己的nginx里去的。生成的配置在 /var/opt/gitlab/nginx/conf/gitlab-http.conf
  3. 还是nginx,我的nginx的启动账户不是gitlab的(默认是gitlab-www),所以会出现502错误。日志里内容是访问fastcgi权限不足。所以还要chmod 755 /var/opt/gitlab/gitlab-rails/sockets
  4. 上面的权限每次gitlab-ctl reconfigure后都会被重置所以每次改配置都得设置下
  5. 要改内置nginx的默认端口号的话,直接external_url配置后面加就行了,不过后果就是web页面里的http/https地址的端口号就也变了
  6. [追加建议] - 最好把各个系统的超时时间设长一点,不然项目比较大的时候创建Merge Request比较慢,比较容易超时 不能软链接这回事非常头大,开来只能用mount了,不过我没试过。我这里仅仅是把git仓库的地址用配置改掉了,其他的就暂时还放在/var/opt/gitlab里,以后有需要再改吧。

记一下我这里的配置:

# @see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
#
# Change the external_url to the address your users will type in their browser
external_url 'https://git.muyo.co'

gitlab_rails['time_zone'] = 'Asia/Shanghai'

# nginx的配置最好还是参照官方文档,现在新的配置方式出来了,更简单点。
# 我这里这么配是当初没有文档,扒代码配得nginx代理
nginx['enable'] = false
# nginx['redirect_http_to_https'] = true
web_server['external_users'] = ['nginx']

unicorn['port'] = 8081

git_data_dir "/home/repo/git/gitlib/git-data"

gitlab_rails['backup_path'] = '/home/repo/git/gitlib/backups'
gitlab_rails['backup_keep_time'] = 1296000 # 15天

# mail config
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "腾讯企业邮箱地址"
gitlab_rails['smtp_password'] = "企业邮箱密码"
gitlab_rails['smtp_domain'] = "域名(就是邮箱后缀)"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

# If your SMTP server does not like the default 'From: [email protected]' you
# # can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '企业邮箱地址,和上面一样'

# open platform 
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = false
gitlab_rails['block_auto_created_users'] = true
gitlab_rails['db_encoding'] = 'utf8'

# 增加超时时间
gitlab_rails['git_timeout'] = 600
gitlab_rails['satellites_timeout'] = 600
ci_unicorn['worker_timeout'] = 600
ci_nginx['keepalive_timeout'] = 600
mattermost_nginx['keepalive_timeout'] = 600

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王小雷

Firefox离线安装扩展教程

Firefox离线安装扩展教程 解决问题博文:解决stackoverflow打开慢不能注册登录 应网友求助在上传了需要的扩展资源后,顺便写个离线安装方法,其实...

2246
来自专栏iOS 开发杂谈

源码管理工具之git的使用

git是目前世界上被最广泛使用的现代软件版本管理系统。git本身亦是一个成熟并处于活跃开发状态的开源项目,它最初是由Linux操作系统内核的创造者Linus T...

1762
来自专栏破晓之歌

15款Django开发常用软件包 原

1. Python social auth 一款社交账号认证/注册机制,支持Django、Flask、Webpy等在内的多个开发框架,提供了约50多个服...

602
来自专栏杨建荣的学习笔记

数据库巡检参考项(r7笔记第95天)

是否为归档模式 数据库是否为归档模式,可以使用archivelog list查看 是否为force logging模式 数据库是否启用了force logg...

29410
来自专栏『不羁阁』行走的少年专栏

Hexo 博客部署到腾讯云教程

4825
来自专栏北京马哥教育

史上最全 Linux 下各文件夹的结构说明及用途介绍

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令。 /dev:设备特殊...

43511
来自专栏IT技术精选文摘

从构建分布式秒杀系统聊聊分布式锁

最近懒成一坨屎,学不动系列一波接一波,大多还都是底层原理相关的。上周末抽时间重读了周志明大湿的 JVM 高效并发部分,每读一遍都有不同的感悟。路漫漫,借此,把前...

1113
来自专栏技术墨客

React 搭建开发环境

本文记录了本人以及目前团队从无到有使用React的过程,我们将从webpack开始说起,一步一步展现React最基本的开发生态。在这里并不会介绍任何jsx或es...

1691
来自专栏林德熙的博客

Roslyn 通过 nuget 统一管理信息

在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。本文提供一个方式,通过安装...

932
来自专栏开源优测

接口测试 | 22 requests基础入门

概述 从本文开始分享requests相关知识,及如何用requests进行接口测试。 requests号称:是唯一的一个非转基因的Python HTTP库,人类...

3206

扫码关注云+社区