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/confchmod -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/bashcat /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.4postgresql: 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 perlcurl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bashsudo rpm -ivh gitlab-jh-16.6.1-jh.0.el7.x86_64.rpmsudo 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.10port: 8087https: 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_passwordzOyGe6aBQbkfYf6rOZP2qaWQOAo59K0HMrq9Rs7Yi2w=
修改密码:
2.1.6 设置简体中文
回到首页,可以看到变成中文:
作者博客: www.lstar.icu
开源地址
Gitee 地址: https://gitee.com/lxwise
Github 地址: https://github.com/lxwise