Gitlab服务搭建
原创2020/1/4...大约 3 分钟
还在用GitHub托管代码吗?来试试看搭建一个自己的代码托管服务吧!
准备
服务器
基本上搭建服务,准备一台服务器是少不了的
- 操作系统:推荐Ubuntu、Debian、CentOS、openSUSE或RHEL,当然也可以使用Docker
- CPU 官方推荐至少2核
- 内存 官方推荐8GB以上,至少4GB RAM + 4GB swap
查看官网对服务器的配置要求
域名
域名并非必须的,但还是推荐有一个域名,例如gitlab.domain.com,后面就以该域名为例。
如果你希望提供更安全的web服务,还需要申请一个https证书,还好现在有一些免费的证书可以使用。
Docker
如果要使用Docker来安装gitlab服务,那么至少需要在服务器上安装好Docker Engine和Docker CLI。关于docker的安装,这篇文章可以提供一些参考。
安装Gitlab
直接在宿主机安装
以CentOS为例
# 安装必要的软件包
yum install -y curl policycoreutils-python
# 下载安装包
wget -O gitlab-12.5.3.rpm https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm/download.rpm
# 安装
rpm -ivh gitlab-12.5.3.rpm
# 初始化配置
gitlab-ctl reconfigure
# 启动服务
gitlab-ctl start启动成功后可在浏览器通过IP来访问Gitlab服务,默认80端口。
使用Docker安装
# 拉取镜像
docker pull gitlab/gitlab-ce
# 创建卷
docker volume create gitlab-data
docker volume create gitlab-config
docker volume create gitlab-log
# 运行容器
docker run -d \
--name gitlab-core \
-e TZ=Asia/Shanghai \
-p 80:80 -p 22:22 -p 443:443 \
-v gitlab-data:/var/opt/gitlab \
-v gitlab-config:/etc/gitlab \
-v gitlab-log:/var/log/gitlab \
gitlab/gitlab-ce提示
创建三个卷是为了在宿主机上保存数据,即便容器被删除,或需要进行数据备份,数据卷可以很方便进行数据迁移或备份操作。
待容器完全启动成功后可在浏览器通过IP来访问Gitlab服务,默认80端口。
在容器内运行gitlab有可能因为时区导致时间不正确,如果需要调整时区,按以下命令执行:
docker exec -it gitlab-core /bin/sh
# 以下是进入容器后执行
ln -sf /usr/share/zoneinfo/$TZ /etc/localtime
echo $TZ > /etc/timezone注意
直接修改容器的配置可以快速解决问题,但不推荐这么做。因为容器应该是无状态的,最佳实践是把初始化配置写入镜像。
一些初始化配置
gitlab目录说明:
- /opt/gitlab 原始安装目录
- /var/opt/gitlab 主目录,各组件的数据和配置都在这里
- /etc/gitlab 配置文件目录,大部分配置都在 gitlab.rb 文件中
- /var/log/gitlab 日志文件目录
使用默认配置也可以运行gitlab,但有几项配置最好稍作调整:
| 配置项 | 说明 |
|---|---|
| external_url | 域名,要带协议,例如http://gitlab.domain.com,也可以是https |
| nginx['redirect_http_to_https'] | 如果要强制使用https协议,就设置为true |
| nginx['ssl_certificate'] | 如果使用https,需要配置证书,就是.crt文件 |
| nginx['ssl_certificate_key'] | 如果使用https,需要配置.key文件 |
| gitlab_rails['time_zone'] | 时区,设置为'Asia/Shanghai' |
常用命令
| 命令 | 说明 |
|---|---|
| gitlab-ctl start | 启动全部组件 |
| gitlab-ctl restart | 重启全部组件 |
| gitlab-ctl stop | 停止全部组件 |
| gitlab-ctl restart nginx | 重启单个组件 |
| gitlab-ctl status | 查看全部组件的状态 |
| gitlab-ctl show-config | 验证配置文件 |
| gitlab-ctl uninstall | 删除gitlab(保留数据) |
| gitlab-ctl cleanse | 删除所有数据 |
| gitlab-ctl tail nginx | 查看组件的日志 |