DevOps历程--GitLab安装与使用教程(Docker安装和编译安装两种方式)

1.简介

Gitlab是一个开源的Git代码仓库系统,可以实现自托管的Github项目,即用于构建私有的代码托管平台和项目管理系统。系统基于Ruby on Rails开发,速度快、安全稳定。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
在这里插入图片描述

2. Docker安装GitLab

我们这里安装的是中文社区版的GitLab,官方版本的镜像哪怕安装中文插件汉化也不完全,当然如果你英语特别好的话也可以直接使用官方的镜像

2.1 执行安装

2.1.1创建数据配置存放目录
sudo mkdir -p /mydata/gitlab/etc
sudo mkdir -p /mydata/gitlab/log
sudo mkdir -p /mydata/gitlab/data
sudo mkdir -p /mydata/gitlab/conf

chmod -R 777 /mydata/gitlab/
2.1.2拉取docker镜像
docker pull beginor/gitlab-ce:11.1.4-ce.0

2.1.3执行安装
docker run -m 2048m --memory-swap 2048m \
	--restart always \
	--privileged=true \
    --detach \
    --publish 8443:443 \
	--publish  8222:22 \
    --publish 8087:80 \
    --name gitlab \
    --volume /mydata/gitlab/etc:/etc/gitlab \
    --volume /mydata/gitlab/log:/var/log/gitlab \
    --volume /mydata/gitlab/data:/var/opt/gitlab \
    beginor/gitlab-ce:11.1.4-ce.0
2.1.4参数解释

📋 参数解释表

参数说明作用详解
docker run启动一个新的容器这是 Docker 最基本的命令之一,用于从指定镜像创建并运行一个容器
-m 2048m--memory=2048m设置容器使用的最大内存限制容器最多使用 2048MB(2GB)内存
--memory-swap 2048m设置容器可用的总内存(内存 + swap)总内存为 2048MB,表示不允许使用交换分区(swap)
如果设置为 -1,表示允许无限使用 swap
--restart always设置容器的重启策略表示无论退出状态码是什么,容器总是重启
即使宿主机重启,也会自动启动该容器
--privileged=true给容器超级权限允许容器访问宿主机的所有设备,拥有接近 root 权限
适用于需要操作硬件或内核的场景,但存在安全风险
--detach-d后台运行容器容器在后台运行,不占用当前终端窗口
--publish 8443:443-p 8443:443映射端口将宿主机的 8443 端口映射到容器的 443 端口(GitLab HTTPS)
--publish 8222:22-p 8222:22映射端口将宿主机的 8222 端口映射到容器的 22 端口(GitLab SSH)
--publish 8087:80-p 8087:80映射端口将宿主机的 8087 端口映射到容器的 80 端口(GitLab HTTP)
--name gitlab为容器命名给这个容器命名为 gitlab,便于后续管理(如 docker stop gitlab
--volume /mydata/gitlab/etc:/etc/gitlab-v /mydata/gitlab/etc:/etc/gitlab挂载卷将宿主机的 /mydata/gitlab/etc 目录挂载到容器的 /etc/gitlab,用于保存 GitLab 的配置文件
--volume /mydata/gitlab/log:/var/log/gitlab挂载卷挂载日志目录,持久化容器日志
--volume /mydata/gitlab/data:/var/opt/gitlab挂载卷挂载数据目录,持久化 GitLab 的项目、用户、设置等数据
beginor/gitlab-ce:11.1.4-ce.0镜像名称使用的 Docker 镜像名,beginor/gitlab-ce 是 GitLab 社区版镜像,标签 11.1.4-ce.0 表示版本

2.2 修改配置

  • 修改gitlab.rb文件配置

进入dcoker容器修改gitlab.rb文件配置,搜索并调整下面参数(双斜杠“//”是注释,是不需要放进去的,此外要把前面#号注释打开)

#进入容器
docker exec -it gitlab /bin/bash

#找到配置文件
vim /etc/gitlab/gitlab.rb

这些参数不强制修改,看你机器的性能,gitlab特别占内存,我这里机器内存只有32G还运行了一堆中间件就改的比较小

#vim搜索,在普通模式下输入 /要搜索文本
/worker_processes

#修改cpu核数
unicorn['worker_processes'] = 2   

#vim搜索,在普通模式下输入 /要搜索文本
/shared_buffers

#减少postgres数据库缓存
postgresql['shared_buffers'] = "256MB"        

#vim搜索,在普通模式下输入 /要搜索文本
/max_worker_processes 

#最大数据库连接数
postgresql["max_worker_processes "]=5     

#vim搜索,在普通模式下输入 /要搜索文本
/concurrency

#降低sidekiq中的并发级别
sidekiq['concurrency'] = 15 

#vim搜索,在普通模式下输入 /要搜索文本
/prometheus_monitoring

#禁用普罗米修斯监控
prometheus_monitoring['enable'] = false       

#vim搜索,在普通模式下输入 /要搜索文本
/worker_memory_limit_min

#最小内存改为300
unicorn['worker_memory_limit_min'] = "300 * 1 << 20 

#vim搜索,在普通模式下输入 /要搜索文本
/worker_memory_limit_max

#最大内存改为600
unicorn['worker_memory_limit_max'] = "600 * 1 << 20        

#vim搜索,在普通模式下输入 /要搜索文本
/external_url 是被注释掉的,在文件中增加以下配置
#访问的ip或者域名这里不强制修改,默认使用你本机ip访问
external_url 'http://192.168.56.10'  

修改完成后在容器中执行:
gitlab-ctl restart

注意这里的命令是restart不是 reconfigure(根据配置文件/etc/gitlab/gitlab.rb 重新生成配置) ,否则还会恢复原来的配置。只要执行了gitlab-ctl reconfigure,配置就会被还原。 所以如果你重启了容器之后,那这里的端口就又需要改一遍。

2.3 访问和重置密码

输入http://ip:8087即可访问登录页面,GitLab的默认端口号是80端口我们在安装时把8087给映射给80

例如我的访问地址为http://192.168.56.10:8087/

在这里插入图片描述

获取初始化用户名和密码,GitLab的默认用户名是root

docker exec -it gitlab /bin/bash

cat /etc/gitlab/initial_root_password 
$ cat /etc/gitlab/initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: mmPPA7vlzRPgdEgQXu1LnWbok6OUNgiAgoZvhYnCgrw=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

mmPPA7vlzRPgdEgQXu1LnWbok6OUNgiAgoZvhYnCgrw=是默认的初始密码,
我们可以在/etc/gitlab/gitlab.rb配置文件中设置自己的root密码,也可以用默认的密码登陆再修改自己想要的密码。要注意该文件24小时后自动删除

在这里插入图片描述

修改重新登陆即可。

2.4 重置管理员密码

对于大部分的人来说,忘记密码是一件很正常的事情,作者也不例外。普通账户密码忘记了,可以通过管理员账户重置密码,但是管理员密码忘了,就需要进行一些其他的操作了。

1)首先进入 docker 容器。

docker exec -it gitlab bash

2)然后打开 GitLab Rails的控制台,这将连接到 gitlab 的数据库,需要谨慎操作。

gitlab-rails console -e production

等待加载完后会进入控制台,然后就是通过用户名或邮箱找到用户,比如作者的管理员用户账号是 root。

user = User.find_by(username: 'root')

通过上一步查找到 root 用户,并赋值给 user,现在可以通过 user 更改密码。

# 至少 8 字符
user.password = 'root123456'
user.password_confirmation = 'root123456'

修改密码后进行保存即可。

user.save!

这样,密码就修改为 root123456了,使用 exit 命令退出即可。

[root@localhost ~]# docker exec -it gitlab bash
root@583c1f771298:/# gitlab-rails console -e production
-------------------------------------------------------------------------------------
 GitLab:       11.1.4 (63daf37)
 GitLab Shell: 7.1.4
 postgresql:   9.6.8
-------------------------------------------------------------------------------------
Loading production environment (Rails 4.2.10)
irb(main):001:0> user = User.find_by(username: 'root')
=> #<User id:1 @root>
irb(main):002:0> user.password = 'root123456'
=> "root123456"
irb(main):003:0> user.password_confirmation = 'root123456'
=> "root123456"
irb(main):004:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 33d1a832-57b4-43f3-ae85-15a4e11581cf) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):005:0> exit

3. 安装包安装GitLab

3.1 安装部署

3.1.1 安装准备

1)需要开启ssh:(已开启可跳过)

sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd

2)防火墙开放http、https服务:(已关闭防火墙可跳过)

sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
3.1.2 rpm 包安装

1)上传安装包

下载地址:https://packages.gitlab.cn/#browse/search/

安装包较大,建议下载好手动上传服务器。这里上传到/opt/software

2)编写安装脚本

cd ~/bin
vim gitlab-install.sh

脚本内容如下:

sudo yum install -y curl policycoreutils-python openssh-server perl

curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
    sudo rpm -ivh gitlab-jh-16.6.1-jh.0.el7.x86_64.rpm
    
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix

3)修改脚本执行权限并执行

chmod +x gitlab-install.sh
sh gitlab-install.sh

**4)**修改external_url

编辑gitlab.rb

sudo vim /etc/gitlab/gitlab.rb

在文件中找到external_url,修改为如下内容

external_url 'http://192.168.56.10'  

保存退出

**5)**修改host

编辑gitlab.yml

sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example

找到gitlab.host修改为如下内容

  gitlab:

    \## Web server settings (**note:** host is the FQDN, do not include http://)

    host: 192.168.56.10

    port: 8087

    https: false

保存退出

修改文件名称

sudo mv /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

6)重装需要彻底卸载

1 卸载gitlab

sudo rpm -e gitlab-jh-16.6.1

2 删除gitlab文件

sudo rm -rf /etc/gitlab
sudo rm -rf /var/opt/gitlab
sudo rm -rf /opt/gitlab

3 重装如果卡在sudo gitlab-ctl reconfigure配置命令上,可以使用另外一个窗口执行

sudo systemctl restart gitlab-runsvdir
2.1.3 执行初始化

执行过程大概需要3分钟:

sudo gitlab-ctl reconfigure
2.1.4 启停命令

1)启动命令

sudo gitlab-ctl start

2)停止命令

sudo gitlab-ctl stop
2.1.5 修改 root 密码

1)访问Web页面

输入http://ip:8087即可访问登录页面,GitLab的默认端口号是80端口

例如我的访问地址为http://192.168.56.10:8087/

2)查看root密码

账号root,密码将随机生成并在 /etc/gitlab/initial_root_password 中保存24 小时:

sudo cat /etc/gitlab/initial_root_password

zOyGe6aBQbkfYf6rOZP2qaWQOAo59K0HMrq9Rs7Yi2w=

修改密码:

在这里插入图片描述

2.1.6 设置简体中文

在这里插入图片描述

回到首页,可以看到变成中文:

在这里插入图片描述

作者博客: www.lstar.icu
开源地址
Gitee 地址: https://gitee.com/lxwise
Github 地址: https://github.com/lxwise

posted @ 2025-09-15 15:30  虞泽  阅读(0)  评论(0)    收藏  举报  来源