Gitlab
1、Gitlab简介
定位
gitLab 是一个基于 Git 实现的在线代码仓库托管软件
可以用 gitlab 自己搭建一个类似于 Github 一样的系统,一般用于在企业、学校等内部网络搭建 git 私服。 对于软件工程质量管理非常重要。
功能
提供代码托管
、提交审核和问题跟踪 可以很方便的管理权限、代码 review,创建、管理 project
版本
- 社区版(CE)
- 企业版(EE)
服务组件
- Nginx:静态 web 服务器。
- gitlab-shell:用于处理 Git 命令和修改 authorized keys 列表。(Ruby)
- gitlab-workhorse: 轻量级的反向代理服务器。(go)
- logrotate:日志文件管理工具。
- postgresql:数据库。
- redis:缓存数据库。
- sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
- unicorn:An HTTP server for Rack applications,GitLab Rails 应用是托管在这个服务器上面的。(Ruby Web Server, 主要使用 Ruby 编写)
2、Gitlab部署
此文章记录了以Docker形式部署Gitlab,并持久化数据,不以传统方式部署
1.拉取Docker镜像
- 使用在线源
[root@bogon ~]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
- 使用离线镜像导入
[root@bogon ~]# docker load -i gitlab-ce_docker.tar.gz
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce 12.10.0-ce.0 a77e641a81c1 2 years ago 2GB
- 创建数据持久化目录
[root@bogon ~]# mkdir /home/gitlab/config
[root@bogon ~]# mkdir /home/gitlab/logs
[root@bogon ~]# mkdir /home/gitlab/data
宿主机位置 | 容器位置 | 作用 |
---|---|---|
/home/gitlab/config | /etc/gitlab | 用于存储gitlab配置文件 |
/home/gitlab/logs | /var/log/gitlab | 用于存储日志 |
/home/gitlab/data | /var/opt/gitlab | 用于存储应用数据 |
- 创建gitlab_start.sh文件
[root@bogon ~]# vim /home/gitlab/gitlab_start.sh
#!/bin/bash
sudo docker run --detach --hostname ip地址 --publish 443:443 --publish 80:80 --publish 9999:22 --name gitlab --restart=always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
# 参数说明:
--detach: 设置容器后台运行
--hostname: 设置容器的 hostname,如果是本地localhost ,否则使用外网ip
--publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,9999:主机的 ssh 访问端口 22:Docker 容器中 ssh 访问端口)
--name:容器名称
--restart always:每次启动容器就重启GitLab
--volume: 共享目录挂载,即 docker 容器内外数据共享
--e:配置 Gitlab 运行的环境变量
在该文件目录下,授予gitlab_start.sh
执行权限
[root@bogon ~]# chmod +x gitlab_start.sh
[root@bogon ~]# ./gitlab_start.sh # 执行脚本
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70b9da8332b2 gitlab/gitlab-ce:latest "/assets/wrapper" 4 seconds ago Up 3 seconds (health: starting) 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:10080->22/tcp, :::10080->22/tcp, 0.0.0.0:8088->80/tcp, :::8088->80/tcp gitlab
- 修改gitlab配置
[root@bogon ~]# vim /home/gitlab/config/gitlab.rb
gitlab_rails['gitlab_shell_ssh_port'] = 9999
# 配置外部访问地址
# 旧版本
external_url 'IP地址'
# 新版本
external_url 'http://ip地址'
[root@bogon ~]# docker stop gitlab && docker rm -f gitlab
gitlab
gitlab
[root@bogon ~]# ./gitlab_start.sh
-
应用配置,重启服务
在Gitlab容器运行状态时,重启服务,并远程访问网站测试
# 进入到gitlab容器内 [root@bogon ~]# docker exec -it gitlab bash # 重新应用gitlab的配置 [root@bogon ~]# gitlab-ctl reconfigure # 重启gitlab服务 gitlab-ctl restart # 查看gitlab运行状态 gitlab-ctl status
若访问Gitlab
出现502等错误
,使用命令检查语法错误原因gitlab-rake gitlab:check
用户名密码
docker exec -it gitlab /bin/bash // gitlab是容器id
gitlab-rails console -e production // 耐心等待
user=User.where(id:1).first // 第一个用户名,自动切换第一个用户
user.password='qworld123'// 修改密码 密码必须是八位
user.password_confirmation='qworld123' // 确认密码
user.save! // 保存修改
exit // 最后依次输入退出容器