该服务依赖docker快速安装搭建而成,所以,docker必备基础再进行后续的阅读学习!

Docker的基础学习自行百度

Gitlab VS SVN的优点自行百度

 

Gitlab搭建过程:

1. 拉取Gitlab的Docker镜像

docker pull gitlab/gitlab-ce

2.启动容器并进行容器外端口映射

docker run --detach \
  --publish 10443:443 --publish 1080:80 --publish 1022:22 \
  --name gitlab \
  --restart always \
  --volume /usr/local/gitlab/config:/etc/gitlab \
  --volume /usr/local/gitlab/logs:/var/log/gitlab \
  --volume /usr/local/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

这里注意: /usr/local/gitlab 外部映射文件位置自己定义

端口都分别进行了外部映射,后面的坑也就出在了外部映射端口上面

3.防火墙设置开发映射的端口

由于Gitlab运行在1080端口上,所以我们需要开放该端口,注意千万不要直接关闭防火墙,否则Gitlab会无法启动。

# 开启1080/1022端口(一个是http访问端口,一个ssh拉取/提交代码端口),我开始就是没有开放 1022 端口,所以,ssh 方式获取代码,一直报权限问题!
firewall-cmd --zone=public --add-port=1080/tcp --permanent
firewall-cmd --zone=public --add-port=1022/tcp --permanent

# 重启防火墙才能生效

systemctl restart firewalld

# 查看已经开放的端口

firewall-cmd --list-ports

4.修改外置映射的配置文件

现在网上的gitlab搭建文章一大堆,基本都是互相粘贴复制的,在配置这块,就遇到了很大一个坑!

我的外部映射配置文件位置: /usr/local/gitlab/config/gitlab.rb

需要修改的几个配置项:

external_url  'http://192.168.1.92:1080'  //gitlab的访问路径,因为我们设置了外部映射端口,所以要加上  1080,不加的话默认为80端口
nginx['listen_port'] = 1080  //同时一定要记得修改 nginx的监听端口
gitlab_rails['gitlab_ssh_host'] = '192.168.1.92'  //ssh的地址
gitlab_rails['gitlab_shell_ssh_port'] = 1022     //ssh 的端口

5.删除刚才启动的容器,从新映射端口并启动

docker run --detach \
  --publish 10443:443 --publish 1080:1080 --publish 1022:22 \
  --name gitlab \
  --restart always \
  --volume /usr/local/gitlab/config:/etc/gitlab \
  --volume /usr/local/gitlab/logs:/var/log/gitlab \
  --volume /usr/local/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

这里仔细看好了,因为该了内部的地址,加了后缀1080,nginx的监听也改成了1080,所以这里,映射端口注意一下。

6.启动后创建了项目的两个拉取地址,如下:

gitlab 上公网 gitlab内网搭建_gitlab 上公网

7.补充内容如下:

(1).Gitlab启动比较慢,需要耐心等待10分钟左右,可以通过docker命令动态查看容器启动日志来知道gitlab是否已经启动完成

docker logs gitlab –f

(2).网上有说修改配置文件的同时,还要修改 修改/data/gitlab-rails/etc/gitlab.yml,个人试过,没必要,当修改了gitlab.rb后,启动容器后,gitlab.yml里面的内容会自动修改,大家可以自己尝试。

(3). gitlab占用内存过高的优化

解决方案:

在宿主机下进入目录: cd /usr/local/gitlab/config

修改 gitlab.rb 文件

  找到 unicorn['worker_processes'] , 取消注释, 修改为 unicorn['worker_processes'] = 2

  找到 unicorn['worker_memory_limit_min'] , 取消注释, 修改为 unicorn['worker_memory_limit_min'] = "200 * 1 << 20"

  找到 unicorn['worker_memory_limit_max'], 取消注释, 修改为 unicorn['worker_memory_limit_max'] = "300 * 1 << 20"

  找到 sidekiq['concurrency'] , 取消注释, 修改为 sidekiq['concurrency'] = 5

找到 postgresql['shared_buffers'] , 取消注释, 修改为 postgresql['shared_buffers'] = "128MB"

个人感觉,修改后没有多大作用。各个配置项,从字面上应该就能明白啥意思

(4).可能用到的几个命令

外部重启容器,直接  docker restart <容器id>

进入容器内部重启,重新加载配置:gitlab-ctl reconfigure