CentOS 7.x上GitLab搭建详细教程

参考

知识要求:

nginx基础知识

搭建感想

注:以下是我搭建gitlab时的思考,需要nginx的基础知识,Docker的基础知识才容易理解,与下面的搭建过程是独立的,不感兴趣可直接略过。

其实gitlab已经搭建并用了一年多了,现在所有的项目管理都通过gitlab完成。但是一直以来都有2个问题:

80端口被系统的nginx占用了,所以只能监听非80端口;

443端口也被系统的nginx占用,所以也一直没增加对https的支持;

最近正在尝试对所有已有的服务Docker化,一方面想让gitlab的搭建更简单些,另一方面也把这两个问题都处理掉。

于是就做了两个Docker容器: nginx和gitlab,相当于nginx和gitlab运行在局域网的不同主机,所以端口上没冲突。nginx是对外的服务器,它做一层反向代理到gitlab就能让gitlab提供对外的服务。
然而。。。这个做法却带来了一个新问题:gitlab需要的是22,80,443端口,80与443通过反向代理解决了,22却没办法解决。因为正常来讲,宿主机的SSH肯定也在使用,所以gitlab的SSH监听端口映射到宿主机会有冲突。

当然了,解决办法还是有的,不过非常繁琐。我们做Docker的目的不就是为了降低布署难度吗?如果使用Docker的配置比在宿主机上还繁琐,那使用起来就没太大意义了。
于是gitlab就没有放在Docker中,而是直接搭在宿主机上。

搭建过程 安装

gitlab的安装是很简单的,先下载安装包:

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.5-ce.0.el7.x86_64.rpm

安装:

rpm -Uvh gitlab-ce-10.2.5-ce.0.el7.x86_64.rpm 配置

gitlab内置了nginx的服务,所以默认会占用80和443端口。一般来说,我们做WEB开发,服务器上早就安装了nginx或者apache,把80和443端口给占了,所以需要做些修改防止冲突。

简单的修改端口是不可行的,比如80改成85,当查看gitlab项目时,下图中的项目地址会变成:85/papamk/groupbill这样,看着就不舒服。启用https则在使用过程中则会出现其他的问题。这里不一一论述,直接说明正确的配置方法。

CentOS 7.x上GitLab搭建详细教程

具体步骤:

1.首先确保你的服务器已经有运行nginx,并且该nginx监听宿主机的80和443端口。(如果你原来使用的apache,请通过nginx反向代理到apache,这样apache原来的服务仍然可用)。

2.编辑/etc/gitlab/gitlab.rb:

# 编辑对外的域名(gitlab.papamk.com请添加A记录指向本服务器的公网IP): external_url 'http://gitlab.papamk.com/' # 禁用`gitlab`内置的`nginx`: nginx['enable'] = false # 修改成与nginx运行时的用户一致 web_server['external_users'] = ['www']

修改监听方式和监听地址(如果nginx与gitlab都在宿主机上,不用改也行;如果nginx在docker中,则需要修改)

gitlab_workhorse['listen_network'] = "tcp" # 下面的172.18.147.173为本机IP,根据实际情况修改,不能为localhost或者127.0.0.1,否则docker访问不到 gitlab_workhorse['listen_addr'] = "172.18.147.173:8181"

最后执行下面命令让配置生效:

$gitlab-ctl reconfigure

3.配置nginx
增加gitlab.conf的配置(所有需要注意的地方都加了中文注释):

upstream gitlab-workhorse { server 172.18.147.173:8181; #根据实际情况修改 } ## Normal HTTP host server { listen 80; listen [::]:80 default_server; server_name gitlab.papamk.com; ## 修改成自己的域名; server_tokens off; ## Don't show the nginx version number, a security best practice root /opt/gitlab/embedded/service/gitlab-rails/public; ## See app/controllers/application_controller.rb for headers set ## Individual nginx logs for this GitLab vhost access_log /home/wwwlogs/gitlab_access.log; # 根据实际情况修改 error_log /home/wwwlogs/gitlab_error.log; # 根据实际情况修改 location / { client_max_body_size 0; gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass ; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0a2a31c8d371a918fd3592def43ea585.html