# gitlab部署文档 

By [Mongo](https://paragraph.com/@mongo) · 2021-11-22

---

gitlab部署文档
==========

配置环境: Ubuntu 20.04

安装包版本：gitlab-ce\_13.8.4 arm64

文件系统： linux ext4

目录
==

*   确认配置
    
*   在线安装
    
*   离线安装
    
*   修改配置
    
*   运行
    
*   安全配置-与letsencrypt配合
    
*   续签配置
    
*   使用客户端连接
    
*   常用操作
    
*   用户管理
    

确认配置
====

内存小于4G将无法完成安装FAT文件系统不允许创建符号连接，会导致安装失败

在线安装
====

1.  到gitlab官网下载安装合适的版本，本文使用的是Ubuntu 20.04，从官网得知这个版本的代号是“focal”
    
2.  访问 `https://packages.gitlab.com/gitlab/gitlab-ce`
    
3.  选择 `ubuntu/focal`
    
4.  选择需要安装的版本，例如 `gitlab-ce_13.8.4-ce.0_arm64.deb`
    
5.  跳转的页面上有安装教程，首先下载安装脚本 `curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash`
    
6.  然后执行安装 `sudo apt-get install gitlab-ce=13.8.4-ce.0`
    
7.  安装完成
    

离线安装
====

1.  将 `./gitlab-ce_13.8.5-ce.0_amd64.deb` 上传到服务器；也可以从这里下载 `https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_13.8.5-ce.0_amd64.deb/download.deb`
    
2.  安装 `dpkg -i gitlab-ce_13.8.5-ce.0_amd64.deb`
    

修改配置
====

安装完成后，程序输出了一个配置文件地址 `/etc/gitlab/gitlab.rb` ， 将里面的访问地址`external_url`修改为需要用的

     external_url 'http://yourdomain.com'
    

运行
==

执行 `sudo gitlab-ctl reconfigure`访问前面配置的 `external_url`地址，看到已经可以访问控制台，初步配置完成

安全配置-与letsencrypt配合
===================

参考：[gitlab官方文档](https://docs.gitlab.com/omnibus/settings/ssl.html)编辑配置文件 `vi /etc/gitlab/gitlab.rb`设置

    letsencrypt['enable'] = true             # 开启letsencrypt
    external_url "https://yourdomain.com"    # 设置为你的域名 (https)
    

然后运行`sudo gitlab-ctl reconfigure`重新加载配置，即可自动申请获得ssl证书

**注意：letsencrypt不支持支持自定义端口，所以我们就用默认的443端口，在配置时需要暂时开放80和443端口，允许letsencrypt访问，才能完成自动配置 配置完成后，由于不再进行http连接，80端口可以永久关闭，但443端口还要在续签的时候开放**

续签配置
====

编辑配置文件 `vi /etc/gitlab/gitlab.rb`设置

    letsencrypt['auto_renew'] = true # 打开自动续签
    letsencrypt['auto_renew_hour'] = "12"
    letsencrypt['auto_renew_minute'] = "30"
    letsencrypt['auto_renew_day_of_month'] = "*/7"
    letsencrypt['auto_renew_log_directory'] = '/opt/software/gitlab' #指定一个存在的目录，用来放续签日志
    

然后运行

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl renew-le-certs
    

这样程序就会周期性地检查是否需要续签，在证书过期前30天，自动完成续签，注意，续签时需要开放443端口让letsencrypt访问

使用客户端连接
=======

下载git客户端 `https://git-scm.com/downloads`

常用操作
====

修改配置后的初始化

    gitlab-ctl reconfigure
    

启动

    sudo systemctl start gitlab-runsvdir
    sudo gitlab-ctl start
    

停止 `sudo gitlab-ctl stop`

重启 `sudo gitlab-ctl restart`

开机启动 `systemctl enable gitlab-runsvdir.service`

禁止开机自启动 `systemctl disable gitlab-runsvdir.service`

备份和恢复

[Gitlab备份、迁移、恢复和升级](https://cloud.tencent.com/developer/article/1622317)

用户管理
====

[Gitlab管理用户、组、权限](https://www.cnblogs.com/zangxueyuan/p/9222014.html)[Gitlab用户注册及管理](https://blog.csdn.net/u012348774/article/details/79134697)

---

*Originally published on [Mongo](https://paragraph.com/@mongo/gitlab)*
