1.前言
GIT(必装):Git – Downloading Package (git-scm.com)。装完以后在目标文件夹右键会有Git Bash Here
和Git GUI Here
两个选项
部署:GitLab下载安装_GitLab最新中文免费版下载安装-极狐GitLab
官方文档:极狐GitLab Docker 镜像 | 极狐GitLab
2.准备
2.1服务器/域名
服务器(九折+10元优惠券):https://www.rainyun.com
一个域名(可选):namesilo.com,优惠码dreamorrow
在开始之前,请设置至少2Gswap
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
2.5安装docker和docker-compose
3.部署(docker)
3.1创建目录
为gitlab的数据创建一个目录,用来存储gitlab在运行过程中产生的数据。
sudo mkdir -p /data/gitlab #/data/gitlab可以修改成合适的目录
cd /data/gitlab
3.2运行容器
参考文章:5分钟搭建自己的代码托管平台gitlab
您可以微调这些目录以满足您的要求。 一旦设置了 GITLAB_HOME
变量,您就可以运行镜像:
sudo docker run --detach \
--hostname gitlab.yemengstar.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
这将下载并启动极狐GitLab 容器,并发布访问 SSH、HTTP 和 HTTPS 所需的端口。所有极狐GitLab 数据将存储在 $GITLAB_HOME
的子目录中。系统重启后,容器将自动 restart
。
初始化过程可能需要很长时间。 您可以通过以下方式跟踪此过程:
sudo docker logs -f gitlab
您可以使用
sudo docker ps -a
查看容器状况,若显示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a6ffada5d2e6 gitlab/gitlab-ce:latest "/assets/wrapper" 3 hours ago Up 2 hours (healthy) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:22->22/tcp, :::22->22/tcp gitlab
表明容器已经成功启动。
启动容器后,您可以访问 gitlab.example.com
。Docker 容器开始响应查询可能需要一段时间。
3.3重置管理员密码
此时gitlab已经成功安装。但是我们还不知道gitlab管理员账号和密码,所以我们回到终端,设置管理员的密码。
sudo docker exec -it gitlab /bin/bash
然后用下面命令进入 到gitlab的rails控制台
gitlab-rails console #这一步比较慢,大概在1分钟左右,请耐心等待
控制台
root@www:/# gitlab-rails console
--------------------------------------------------------------------------------
Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]
GitLab: 16.1.2 (e60fc11f2d3) FOSS
GitLab Shell: 14.23.0
PostgreSQL: 13.11
------------------------------------------------------------[ booted in 49.88s ]
Loading production environment (Rails 6.1.7.2)
irb(main):001:0>
当打开控制台后依次输入下面命令来重置管理员账号和密码。
输入
user=User.find_by_username 'root'
显示
=> #<User id:1 @root>
输入
user.password="yemeng666"
显示
=> "yemeng666"
输入
user.save!
显示
=> true
密码需要一定长度,否则会在save的时候报错
/opt/gitlab/embedded/lib/ruby/gems/3.0.0/gems/activerecord-6.1.7.2/lib/active_record/validations.rb:80:in `raise_validation_error': Validation failed: Password is too short (minimum is 8 characters) (ActiveRecord::RecordInvalid)
3.4登录
密码设置成功以后,就可以返回到gitlab登录页面登录了。
用户名为root
密码为你设置的密码
下面是登录成功的页面
4.部署(推荐docker-compose)
本方法有点小问题,如果你想自己折腾的话可以接着看下去,如果不想折腾只想安安静静使用Gitlab的话直接看问题-方式二的配置文件。
mkdir -p /data/docker_data/gitlab
cd /data/docker_data/gitlab
vim docker-compose.yml
docker-compose.yml
文件如下:
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'yourDomain.com(yemengstar.com)'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://yourDomain.com(yemengstar.com)'
ports:
- '80:80'
- '443:443'
- '23:22'
volumes:
- '/data/docker_data/gitlab/config:/etc/gitlab'
- '/data/docker_data/gitlab/logs:/var/log/gitlab'
- '/data/docker_data/gitlab/data:/var/opt/gitlab'
shm_size: '128m'
启动
docker-compose up -d
你可以通过
docker ps -a
查看容器ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5b91e12743e registry.gitlab.cn/omnibus/gitlab-jh:latest "/assets/wrapper" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:23->22/tcp, :::23->22/tcp data_web_1
通过
sudo docker exec -it <CONTAINER ID> grep 'Password:' /etc/gitlab/initial_root_password
查看初始密码
Password: yourPassword
然后你可以通过
root
/yourPassword
登录Gitlab
5.升级
5.1docker升级
要升级使用 Docker Engine 安装的极狐GitLab:
1.进行备份,作为最低要求,备份数据库和极狐GitLab secrets 文件。
2.停止正在运行的容器:
sudo docker stop gitlab
3.移除现有容器:
sudo docker rm gitlab
4.拉取新镜像:
sudo docker pull gitlab/gitlab-ce:latest
5.确保 GITLAB_HOME
环境变量是已定义的:
echo $GITLAB_HOME
6.使用先前指定的选项再次创建容器:
sudo docker run --detach \
--hostname gitlab.yemengstar.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
在第一次运行时,极狐GitLab 将重新配置并升级自身。
5.2docker-compose升级
要升级使用 Docker Compose 安装的极狐GitLab:
1.进行备份,作为最低要求,备份数据库和极狐GitLab secrets 文件。
2.下载最新版本并升级您的极狐GitLab 实例:
docker compose pull
docker compose up -d
如果您使用标签代替,则需要先编辑 docker-compose.yml
。
6.配置
你可以通过
docker ps -a
查看容器ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5b91e12743e registry.gitlab.cn/omnibus/gitlab-jh:latest "/assets/wrapper" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:23->22/tcp, :::23->22/tcp data_web_1
要访问极狐GitLab 配置文件,您可以在正在运行的容器的上下文中启动 shell 会话。这将允许您浏览所有目录并使用您喜欢的文本编辑器:
sudo docker exec -it <CONTAINER ID> /bin/bash
您也可以只编辑/etc/gitlab/gitlab.rb
:
sudo docker exec -it <CONTAINER ID> editor /etc/gitlab/gitlab.rb
打开 /etc/gitlab/gitlab.rb
后,请确保将 external_url
设置为指向有效 URL。
要从极狐GitLab 接收电子邮件,您必须配置 SMTP 设置,因为极狐GitLab Docker 镜像没有安装 SMTP 服务器。您可能还对启用 HTTPS 感兴趣。
完成所需的所有更改后,您需要重新启动容器以重新配置极狐GitLab:
sudo docker restart gitlab
每当容器启动时,极狐GitLab 都会重新配置自身。 有关配置极狐GitLab 的更多选项,请查看配置文档。
7.问题
7.1问题一
7.1.1问题描述
本部分参考文档:
- gitLab—docker部署时ssh更改端口完美解决方案_gitlab修改ssh端口
- gitlab配置ssh key后,还是需要输入密码,git clone http可以
- Docker-Gitlab 与主机共用 ssh 的 22 端口 · Zs’s Blog
- Docker 图形化工具 Portainer,必须推荐给你
推荐配合 Portainer 使用。
在新建完成仓库以后,你可以通过HTTP协议clone至本地。
但是,如果你尝试使用SSH协议进行操作,多半会提示输入密码。
7.1.2方式一
这时需要我们在配置中修改SSH端口。具体操作如下:
进入容器
sudo docker exec -it <CONTAINER ID> /bin/bash
进入配置文件夹
cd /etc/gitlab
安装vim编辑器
apt-get update -y
apt-get install vim -y
vi -v
编辑配置文件
vim gitlab.rb
将
gitlab_rails['gitlab_shell_ssh_port'] = 22
修改为
gitlab_rails['gitlab_shell_ssh_port'] = 222 #222可以改为未占用的端口
然后将docker-compose.yml
中的
ports:
- '80:80'
- '443:443'
- '23:22'
修改为
ports:
- '80:80'
- '443:443'
- '23:222'
如果我们修改gitlab.rb配置文件,情况可能出乎我们的意料。此时你会发现复制ssh地址时是完整且正确的,但是却无法克隆git会告诉我们连接被拒绝。你会惊奇的发现当前ssh监听端口依然为22并没有因为配置文件的修改而改变。这里我们换需要手动修改容器ssh端口,根据如下操作将默认端口改为我们设定的端口。
docker exec -it <CONTAINER ID> /bin/sh
vim /assets/sshd_config
service ssh restart # 重启ssh服务 ,注意是重启容器里的ssh
你也可以在修改完成以后重启容器
sudo docker restart <CONTAINER ID>
7.1.3方式二
当然,你可以直接修改docker-compose.yml
文件
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'yourDomain.com(yemengstar.com)'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://yourDomain.com(yemengstar.com)'
gitlab_rails['gitlab_shell_ssh_port'] = 222
ports:
- '80:80'
- '443:443'
- '222:22'
volumes:
- '/data/docker_data/gitlab/config:/etc/gitlab'
- '/data/docker_data/gitlab/logs:/var/log/gitlab'
- '/data/docker_data/gitlab/data:/var/opt/gitlab'
shm_size: '128m'
然后重启docker容器即可
sudo docker restart <CONTAINER ID>
7.1.4方式二讲解
下面是另一个 docker-compose.yml
示例,其中极狐GitLab 在自定义 HTTP 和 SSH 端口上运行。注意 GITLAB_OMNIBUS_CONFIG
变量如何匹配 ports
部分:
version: '3.6'
services:
web:
image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
7.1.5结果
修改前git地址:git@yourDomain.com:User/R.git
修改后git地址:ssh://git@yourDomain.com:222/User/R.git
7.2问题二
如果提示:
git@xxx.com: Permission denied (publickey).
fatal: Could not read from remote repository.
说明SSH公私钥不匹配,重新生成后上传即可。
7.3问题三
页面502报错
gitlab未能完全启动,请稍等片刻。也有可能是炸内存了,建议到终端看看情况。
8.优化
gitlab一启动就占用了不少内存了,如果使用的人再多一点就真的要爆内存了。
total used free shared buff/cache available
Mem: 16000 4207 10449 155 1343 11315
Swap: 4095 0 4095
但是夜梦的机器配置就这么点,怎么办呢?
这里我们需要修改配置文件,减少gitlab对内存的消耗。
参考文章:低配置服务器安装GitLab_gitlab最低配置
我们先进入容器:
sudo docker exec -it <CONTAINER ID> /bin/bash
然后修改配置文件:
vi /etc/gitlab/gitlab.rb
删除#号取消以下设置的注释,并修改参数
tip:vi编译器中搜索的方法: 命令模式下,输入/字符串,按下回车,得到搜索的结果,按n键切换搜索结果
1、减少进程数,修改worker_processes,官方建议CPU核心数加一,最小值是2
unicorn['worker_processes'] = 2
2、减少数据库缓存,可适当改小
postgresql['shared_buffers'] = "256MB"
3、减少数据库并发数,可适当改小
postgresql['max_worker_processes'] = 8
4、减少sidekiq并发数,可适当改小
sidekiq['concurrency'] = 25
总体优化完毕以后的docker-compose.yml
文件如下:
version: '3.6'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'yourDomain.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://yourDomain.com'
gitlab_rails['gitlab_shell_ssh_port'] = 222
# 数据库降低
unicorn['worker_processes'] = 2
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 8
sidekiq['concurrency'] = 25
ports:
- '80:80'
- '443:443'
- '222:22'
volumes:
- '/data/docker_data/gitlab/config:/etc/gitlab'
- '/data/docker_data/gitlab/logs:/var/log/gitlab'
- '/data/docker_data/gitlab/data:/var/opt/gitlab'
shm_size: '128m'
你可以补充以下内容
# 关闭电子邮件相关功能
gitlab_rails['smtp_enable'] = false
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['incoming_email_enabled'] = false
# Terraform
gitlab_rails['terraform_state_enabled'] = false
# Usage Statistics
gitlab_rails['usage_ping_enabled'] = false
gitlab_rails['sentry_enabled'] = false
grafana['reporting_enabled'] = false
# 关闭容器仓库功能
gitlab_rails['gitlab_default_projects_features_container_registry'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
registry_nginx['enable'] = false
# 包仓库
gitlab_rails['packages_enabled'] = false
gitlab_rails['dependency_proxy_enabled'] = false
# GitLab KAS
gitlab_kas['enable'] = false
gitlab_rails['gitlab_kas_enabled'] = false
# Mattermost
mattermost['enable'] = false
mattermost_nginx['enable'] = false
# Kerberos
gitlab_rails['kerberos_enabled'] = false
sentinel['enable'] = false
# GitLab Pages
gitlab_pages['enable'] = false
pages_nginx['enable'] = false
# 禁用 PUMA 集群模式
puma['worker_processes'] = 0
puma['min_threads'] = 1
puma['max_threads'] = 2
# 降低后台守护进程并发数
sidekiq['max_concurrency'] = 5
gitlab_ci['gitlab_ci_all_broken_builds'] = false
gitlab_ci['gitlab_ci_add_pusher'] = false
# 关闭监控
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
pgbouncer_exporter['enable'] = false
gitlab_exporter['enable'] = false
grafana['enable'] = false
sidekiq['metrics_enabled'] = false
内存占用如下:
total used free shared buff/cache available
Mem: 1680 298 691 2 689 1218
Swap: 4095 0 4095