016-gitlab私服中文安装与配置(转)

1 gitlab中文网地址   https://www.gitlab.com.cn

2 gitlab安装:centos6中文安装教程    https://www.gitlab.com.cn/installation/#centos-6

包含了社区版(Community Edition)和企业版(Enterprise Edition)的安装

每种版本都包含了在线安装和安装包安装两种方式

强烈建议使用 Omnibus 包安装 GitLab ,因为它安装起来更快、更容易升级版本,而且包含了其他安装方式所没有的可靠性功能。同时我们强烈推荐承载 GitLab 运行的服务器 至少分配4GB的内存 给 GitLab

安装gitlab的去求见地址https://docs.gitlab.com.cn/ce/install/requirements.html

安装包各个版本下载地址如下https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

3 gitlab配置信息

配置域名访问

为使用户可以正确的获取到GitLab上显示的当前仓库的clone地址,GitLab需要你设置好哪个url才是用户可以访问到GitLab, 比如http://gitlab.example.com。你需要编辑下面这个文件

/etc/gitlab/gitlab.rb:

external_url "http://gitlab.example.com"#替换为你自己的地址

运行sudo gitlab-ctl reconfigure使修改生效

配置子路径访问(实验性)

注意:Relative URL(子路径)是在8.5版本被引入 Omnibus GitLab的,该功能还处于测试阶段。 如果你使用源码安装的,这里有一篇独立介绍源码安装如何使用子路径的文档.

虽然我们建议GitLab使用二级域名访问, 但有时由于各种各样的原因,我们想用子路径的方式访问GitLab。 出于这种需求,Gitlab也可以安装到子路径, 如https://example.com/gitlab.

需要注意的是,修改了这个URL后, 所有远程仓库地址要也做相应的修改,所以你需要手动修改本地仓库中的remote url以使可以正常连接GitLab服务器

配置子路径访问的条件

自Omnibus 8.17 安装包开始,不再需要重新编译静态资源Omnibus GitLab 一键包附带了预编译的资源(如CSS, JavaScript,fonts, 等等)。 如果你使用的是8.17 之前的版本并配置了GitLab使用relative URL,这些资源文件就需要重新生成,而生成资源的过程需要消耗一部分CPU和内存资源。为防止内存不足, 需要保证服务器至少有2GB的可用内存,我们建议的服务器配置为4GB内存,4核或者8核CPU


启用子路径访问

请按照下面的步骤为GitLab启用relative URL:

(可选) 如果当前服务器可用资源不用,可用下面的命令暂时关闭Unicorn 和 Sidekiq 释放一部分内存:

sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq

修改external_url,编辑/etc/gitlab/gitlab.rb:

external_url"https://example.com/gitlab"

上面的例子将使GitLab的访问路径变成域名后面加/gitlab,请将此处修改为你自己的地址。

Reconfigure GitLab 使修改生效:

sudo gitlab-ctl reconfigure

Restart the services so that Unicorn and Sidekiq picks up the changes

sudo gitlab-ctl restart

禁用子路径访问

禁用relative URL, 同样的也要修改external_url,改成不包含子路径的地址。然后重启下Unicorn服务即可:

sudo gitlab-ctl restart unicorn

使用子路径的故障排查

如果你配置子路径后,发现 gitlab 静态资源发生错误(如图片丢失,资源响应长时间未响应),请在GitLab-CE的 issue 页面提交问题,注意使用Frontend标签。

如你使用的是8.17 之前的版本并发现由于一些原因导致资源生成失败(比如服务器内存不足),你可以在解决这些问题后手动执行生成资源的任务(比如增加swap):

sudo NO_PRIVILEGE_DROP=true USE_DB=false gitlab-rake assets:clean assets:precompilesudo chown-Rgit:git /var/opt/gitlab/gitlab-rails/tmp/cache

上面的命令中的用户和组如果和你在gitlab.rb中设置的user['username'],user['group'],gitlab_rails['dir']不一样,执行该命令的时候注意修改chown命令后面的git:git为配置文件里面的用户和组

载入非超级用户的扩展配置

Omnibus-gitlab会加载/etc/gitlab/gitlab.rb文件中的所有配置项。这个文件的属主为root,并且有严格的权限控制,这样做的原因是执行gitlab-ctl reconfigure的过程中要以root身份运行Ruby解析/etc/gitlab/gitlab.rb。这就意味着拥有/etc/gitlab/gitlab.rb写入权限的用户可以编辑配置项然后以root用户身份来执行解析。

在某些团队,可能会允许非root用户来修改gitlab的配置,你可以在/etc/gitlab/gitlab.rb文件中引入外部扩展配置文件实现这个需求:

from_file"/home/admin/external_gitlab.rb"

使用from_file引入到/etc/gitlab/gitlab.rb的代码在sudo gitlab-ctl reconfigure的时候都会以root权限运行。/etc/gitlab/gitlab.rb和from_file中重复的配置项,/etc/gitlab/gitlab.rb的优先级更高

设置存储仓库数据的备用目录

默认情况下omnibus-gitlab 将仓库数据存储在/var/opt/gitlab/git-data目录下,仓库存放在子目录repositories里面。 以可以通过修改/etc/gitlab/gitlab.rb的这一行来自定义git-data的父目录。

git_data_dirs({"default"=>{"path"=>"/mnt/nas/git-data"}})

自GitLab 8.10开始,可以通过在/etc/gitlab/gitlab.rb文件中添加下面的几行配置,来增加多个 git 数据存储目录。

git_data_dirs({"default"=>{"path"=>"/var/opt/gitlab/git-data"},"alternative"=>{"path"=>"/mnt/nas/git-data"}})

注意目标路径和其子路径必须不能为软链接。

运行sudo gitlab-ctl reconfigure使修改生效。

如果/var/opt/gitlab/git-data目录已经存在Git仓库数据,你可以用下面的命令把数据迁移到新的位置:

# 准备迁移之前要停止GitLab服务,防止用户写入数据。sudo gitlab-ctl stop# 注意 'repositories'后面不带斜杠,而# 'git-data'后面是有斜杠的。sudo rsync-av/var/opt/gitlab/git-data/repositories /mnt/nas/git-data/# 如果需要修复权限设置,# 可运行下面的命令进行修复。sudo gitlab-ctl reconfigure# 再次检查下 /mnt/nas/git-data的目录. 正常情况应该有下面这个子目录:# repositoriessudo ls/mnt/nas/git-data/# 完工! 启动GitLab,验证下是否能# 通过web访问Git仓库。sudo gitlab-ctl start

修改默认的运行用户和组

默认情况下omnibus-gitLab使用git用户登陆Git gitlab-shell,Git data是属主也是git,网页上生成的SSH URL也是git用户。同样的,git用户组也是Git data的属组。

我们不建议在已经安装好的gitlab上修改默认的user/group,因为这会产生无法预知的副作用。如果你固执的想要修改默认的user/group,你可以在/etc/gitlab/gitlab.rb文件中添加下面加行配置:

user['username']="gitlab"

user

['group']="gitlab"

运行sudo gitlab-ctl reconfigure使修改生效。

注意:如果你在已经安装好的GitLab中修改了user/group,reconfigure不会修改子目录的属主和属组,你需要手动修改,并确认新用户可以读写repositories和uploads目录

设置使用数字表示的用户和组

omnibus-gitlab 为GitLab, PostgreSQL, Redis 和 NGINX创建了运行用户。你可以在/etc/gitlab/gitlab.rb文件中指定这些用户的uid和gid。

user['uid']=1234

user['gid']=1234

postgresql

['uid']=1235

postgresql

['gid']=1235

redis['uid']=1236

redis

['gid']=1236

web_server

['uid']=1237

web_server['gid']=1237

运行sudo gitlab-ctl reconfigure使修改生效


禁用管理用户和组账户的功能

默认情况下,综合gitlab照顾创建系统用户和组帐户以及保持信息更新。这些系统帐户运行包的各个组件。大多数用户不需要改变这种行为。但是,如果您的系统帐户由其他软件(如LDAP)管理,则可能需要禁用包所做的帐户管理。

为了禁用omnibus-gitlab管理用户和组账户,我们需要在/etc/gitlab/gitlab.rb中做如下设置:

manage_accounts['enable']=false

警告Omnibus-gitlab 建议在系统上保留omnibus-gitlab安装包创建的默认用户。

omnibus-gitlab 创建的默认用户如下:

# GitLab user (必需)

git

# Web server user (必需)

gitlab-www

# Redis user for GitLab (如使用内置的redis,该账号必需)

gitlab-redis

# Postgresql user (如使用内置的Postgresql,该账号必需)

gitlab-psql

# Prometheus user for prometheus monitoring and various exporters

gitlab-prometheus

# GitLab Mattermost user (only when using GitLab Mattermost)

mattermost

# GitLab Registry user (only when using GitLab Registry)

registry

# GitLab Consul user (only when using GitLab Consul)

gitlab-consul

omnibus-gitlab 创建的默认组如下:

# GitLab group (必需)

git

# Web server group (必需)

gitlab-www

# Redis group for GitLab (如使用内置的Redis,该用户组必需)

gitlab-redis

# Postgresql group (如使用内置的Postgres,该用户组必需)

gitlab-psql

# Prometheus user for prometheus monitoring and various exporters

gitlab-prometheus

# GitLab Mattermost group (如使用内置的Mattermost,该用户组必需)

mattermost

# GitLab Registry group (only when using GitLab Registry)

registry

# GitLab Consul group (only when using GitLab Consul)

gitlab-consul

你也可以自定义user/group ,但需要在/etc/gitlab/gitlab.rb配置文件中配置详细的user/group,如:

# 禁用管理user/group的功能

manage_accounts['enable']=false

# GitLab

user['username']="custom-gitlab"

user['group']="custom-gitlab"

user['shell']="/bin/sh"

user['home']="/var/opt/custom-gitlab"

# Web server

web_server

['username']='webserver-gitlab'

web_server['group']='webserver-gitlab'

web_server

['shell']='/bin/false'

web_server['home']='/var/opt/gitlab/webserver'

# Postgresql (如使用外部Postgresql,可忽略该配置)

postgresql['username']="postgres-gitlab"

postgresql

['shell']="/bin/sh"

postgresql

['home']="/var/opt/postgres-gitlab"

# Redis (如使用外部Redis,可忽略该配置)

redis['username']="redis-gitlab"

redis['shell']="/bin/false"

redis['home']="/var/opt/redis-gitlab"

# 以此类推,GitLab Mattermost 也需要指定详细的user/group

禁用管理存储目录的功能

默认情况下,omnibus-gitlab负责创建所有必需的文件夹并赋予目录正确的所有权和权限,并根据配置文件保持更新。

在某些大型组织架构中,随着项目代码和数量的增加,一些目录会存储大量的数据,为扩展存储能力这些目录可能就需要挂载到NFS(或者其他共享存储)上。

挂载某些文件系统会拒绝root用户自动创建目录,比如 NFS 需要启用root_squash。要解决这个问题,omnibus-gitlab会尝试使用该目录的属主用户来自动创建子目录。

如果你挂载了/etc/gitlab目录,你可以禁用omnibus-gitlab对该目录的管理功能。

修改/etc/gitlab/gitlab.rb:

manage_storage_directories['manage_etc']=false

如果计划重新挂载GitLab所有存储目录到每个独立的挂载点上,应该完全禁用omnibus-gitlab对各个存储目录的管理功能。

为禁止对所有存储目录的管理功能,修改/etc/gitlab/gitlab.rb:

manage_storage_directories['enable']=false

Warningomnibus-gitlab 建议保留默认的目录。如该选项已设置,将有管理员创建目录并设置正确的权限。

启用此设置会阻止omnibus-gitlab创建如下目录:

Default locationPermissionsOwnershipPurpose

/var/opt/gitlab/git-data0700git:rootHolds repositories directory

/var/opt/gitlab/git-data/repositories2770git:gitHolds git repositories

/var/opt/gitlab/gitlab-rails/shared0751git:gitlab-wwwHolds large object directories

/var/opt/gitlab/gitlab-rails/shared/artifacts0700git:rootHolds CI artifacts

/var/opt/gitlab/gitlab-rails/shared/lfs-objects0700git:rootHolds LFS objects

/var/opt/gitlab/gitlab-rails/uploads0700git:rootHolds user attachments

/var/opt/gitlab/gitlab-rails/shared/pages0750git:gitlab-wwwHolds user pages

/var/opt/gitlab/gitlab-ci/builds0700git:rootHolds CI build logs

/var/opt/gitlab/.ssh0700git:gitHolds authorized keys

设置延迟启动

为保证服务质量,我们可以设置让omnibus-gitlab的服务(Nginx, Redis, Unicorn等)在指定的文件系统挂载成功后再启动,在/etc/gitlab/gitlab.rb文件中添加如下内容:

# wait for /var/opt/gitlab to be mountedhigh_availability['mountpoint']='/var/opt/gitlab'

运行sudo gitlab-ctl reconfigure使修改生效

配置运行时目录

When Prometheus monitoring is enabled, GitLab-monitor will conduct measurementsof each Unicorn process (Rails metrics). Every Unicorn process will need to writea metrics file to a temporary location for each controller request.Prometheus will then collect all these files and process their values.

In order to avoid creating disk I/O, the omnibus-gitlab package will use aruntime directory.

Duringreconfigure, package will check if/runis atmpfsmount.If it is not, warning will be printed:

Runtime directory '/run' is not a tmpfs mount.

and Rails metrics will be disabled.

To enable Rails metrics again, create atmpfsmount and specify it in/etc/gitlab/gitlab.rb:

runtime_dir '/path/to/tmpfs'

Please note that there is no=in the configuration.

Runsudo gitlab-ctl reconfigurefor the settings to take effect

配置基础防护

为阻止恶意使用客户端破坏GitLab,我们使用了rack-attack gem包。查阅 rack_attack获取更多内容。

源码中的config/initializers/rack_attack.rb文件在omnibus-gitlab中由/etc/gitlab/gitlab.rb管理

禁用安装过程中自动清理缓存

If you have large gitlab installation, you might not want to runrake cache:cleantask.As it can take long time to finish. By default, cache clear task will run automaticallyduring reconfigure.

编辑  /etc/gitlab/gitlab.rb:

# This is advanced feature used by large gitlab deployments where loading# whole RAILS env takes a lot of time.gitlab_rails['rake_cache_clear']=false

Don't forget to remove the#comment characters at the beginning of thisline

启用禁用账户验证防护

修改下面的配置项控制Rack Attack:

gitlab_rails['rack_attack_git_basic_auth']={

'enabled'=>true,# 启用/禁用 Rack Attack

'ip_whitelist'=>["127.0.0.1"],# 白名单地址,多个IP用","隔开

'maxretry'

=>10,# 限制每个IP尝试登陆的次数为10次。

'findtime'

=>60,# 60秒后重置每IP的授权计数器

'bantime'

=>3600# 对多次错误登陆的IP封禁1小时(3600秒)

}

设置访问路径防护

要修改默认的防护路径,需在配置文件中设置gitlab_rails['rack_attack_protected_paths']区段。

Warning此操作会覆盖omnibus-gitlab 默认列表:

gitlab_rails['rack_attack_protected_paths']=[

'/users/password',

'/users/sign_in',

'/api/#{API::API.version}/session.json',

'/api/#{API::API.version}/session',

'/users','/users/confirmation',

'/unsubscribes/',

'/import/github/personal_access_token'

]

Note:所有路径必须是 gitlab 的相对路径.如启用了relative URL,上面的路径要做相应修改。

Warning若要在路径中插入rails的变量,如(#{API::API.version}),应避免用大括号和单引号字符串。示例:"/api/#\{API::API.version\}/session.json"或者'/api/#{API::API.version}/session.json'

设置路径防护的频率

用如下配置来控制频率和周期:

gitlab_rails['rate_limit_requests_per_period']=10#限制每周期请求次数

gitlab_rails

['rate_limit_period']=60#每周期的时长,60s

运行sudo gitlab-ctl reconfigure使修改生效。

配置使用LDAP登录

See doc/settings/ldap.md.

强制HTTP跳转为HTTPS

Seedoc/settings/nginx.md.

修改默认端口和SSL证书路径

See doc/settings/nginx.md.

使用外部 web-server

使用系统上已安装的Nginx, Passenger, or Apache webserver 请查阅doc/settings/nginx.md.

使用外部的PostgreSQL数据库服务器

连接外部PostgreSQL or MySQL DBMS 请查阅doc/settings/database.md(Omnibus安装包只有Enterprise(企业版)支持Mysql).

使用外部 Redis 实例

Seedoc/settings/redis.md.

添加系统变量到GitLab运行环境

Seedoc/settings/environment-variables.md.

Changing GitLab.yml settings 自定义GitLab.yml设置

Seedoc/settings/gitlab.yml.md.

Sending application email via SMTP 使用SMTP发送邮件

Seedoc/settings/smtp.md.

Omniauth (Google, Twitter, GitHub login)

Omniauth configuration is documented indocs.gitlab.com.

Adjusting Unicorn settings 调整 Unicorn 配置

Seedoc/settings/unicorn.md.

Setting the NGINX listen address or addresses 配置 NGINX 监听地址

Seedoc/settings/nginx.md.

Inserting custom NGINX settings into the GitLab server block 在内置NGINX中插入自定义server块

Seedoc/settings/nginx.md.

Inserting custom settings into the NGINX config 在内置NGINX中插入自定义设置

Seedoc/settings/nginx.md.

Enable nginx_status 启用内置NGINX的nginx_status模块

Seedoc/settings/nginx.md.



我们的交流基地,“JAVA互联网技术交流:789650498”欢迎小伙伴们一起来交流:

推荐阅读更多精彩内容