Gitlab部署全流程

0. 序言

开发组的成员渐渐多了起来,需要使用 git 对项目进行版本控制,在公司内网里面部署一个 gitlab 服务

1. 前置任务

在正式开始部署之前需要准备一些硬件和软件

1.1 硬件

  1. 一台至少 4G 内存的电脑,用来运行 gitlab 服务,下文称为服务机

  2. 一台 Windows 电脑,用来制作系统镜像和服务测试,下文称为客户机

  3. 一个至少 8G 的 U 盘,用作安装 linux 的启动 U 盘

1.2 软件

  1. Ubuntu Server 镜像

  2. USBWriter

2. 开始部署

米准备好了,就开始烧火做饭

2.1 启动U盘

在客户机上使用 USBWriter 将 Ubuntu Server 系统镜像烧录到准备好的 U 盘中

2.2 安装系统

在服务机上安装系统之前务必将硬盘中的数据备份,除非你确定不再需要里面的数据。虽然 Ubuntu Server 没有图形 UI,但也比安装 ArchLinux 容易得多。

2.2.1 系统安装流程

  1. 启动服务机进入 BIOS 系统调整遇到顺序,让 BIOS 引导 U 盘中的 Ubuntu Server

  2. 进入 Ubuntu Server 后直接按 Enter 选择 install ubuntu

  3. 进入安装界面之后依次需要设置语言、键盘布局,直接按 Enter 继续即可
    语言
    键盘布局

  4. 接下来需要设置网络,这里选择离线安装,没有联网,直接按 Enter 继续
    网络

  5. 之后是代理和镜像,也不用管,直接按 Enter 继续
    代理
    镜像
    更新

  6. 下面就是磁盘分区了,笔者选择自己分区,所以选择了 Custom
    磁盘分区

  7. 先选择引导设备,再分区,分成了两个,分别是挂载在 /home 的用户分区和挂载在 / 的系统分区
    引导设备
    进行分区
    用户分区
    系统分区
    分区完成

  8. 分区完成后需要设置系统名称和要登录的用户
    用户设置

  9. 其它设置,主要是选择安装 OpenSSH 服务,其它保持默认即可
    功能令牌
    勾选 SSH

  10. 等待系统安装完成,重启即可
    重启

2.3 配置系统

系统安装完成后需要为服务机设置固定 IP 便于访问、设置 SSH 免密登陆便于管理、设置镜像方便软件安装和更新

2.3.1 设置固定 IP

Ubuntu Server 20.04.4 LTS 的 IP 配置文件路径为 /etc/netplan/xx-installer-config.yaml,编辑该文件,设置需要的 IP 地址并禁用 DHCP,下面是示例

1、终端命令

sudo vim /etc/netplan/xx-installer-config.yaml

2、xx-installer-config.yaml文件内容

network:
  ethernets:
    eth0: # 网卡名
      addresses: [xxx.xxx.xxx.xxx/24] # 需要的静态 IP 地址
      gateway4: xxx.xxx.xxx.xxx # 网关
      nameservers: # DNS
        addresses: [xxx.xxx.xxx.xxx,yyy.yyy.yyy.yyy] # 多个 DNS 之间使用 , 隔开
      dhcp4: no # 禁用 DHCP
      optional: true # 不知道是干嘛的,不用管
    version: 2
    renderer: networkd # 指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd

3、使能配置

sudo netplan apply # 使能
ip addr show dev eth0 # 验证

2.3.2 设置 SSH 免密登陆

为了方便控制服务机系统,这里使用 SSH 在客户机进行免密登陆

1、修改服务端 SSH 配置,路径:/etc/ssh/sshd_config

注释如下选项,禁用 sshd 反查客户端 dns 信息,提高登录速度

# GSSAPIAuthentication yes
# GSSAPIDelegateCredentials no

打开如下选项

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

重启 ssh 服务,使配置生效

sudo systemctl restart ssh

2、修改服务机端 SSH 配置权限

# 要保证.ssh和authorized_keys都只有用户自己有写权限
sudo chmod 600 ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh
sudo chmod g-w /home/user

3、修改服务器端防火墙策略,以 ufw 为例

sudo ufw allow ssh
sudo ufw enable
sudo ufw status

4、客户机生成密钥,命令:ssh-keygen -t rsa

C:\Users\sparrow>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\sparrow/.ssh/id_rsa): gitlab
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:dEPHRhPU6bAQemh8WIs1z4qML9xMh30Zk2RmgiHNyBc sparrow@DESKTOP-OP64Q1L
The key's randomart image is:

5、将客户机公钥复制到服务机,命令:ssh-copy-id -i xxx.pub user@xxx.xxx.xxx.xxx

C:\Users\sparrow\.ssh>ssh-copy-id -i gitlab.pub sparrow@192.168.10.247

6、编辑客户机配置,路径:~/.ssh/config

Host [Nickname] # 配置名称
	HostName [ip addr|host name] # 服务机 IP 或者 主机名
	User [username] # 登陆服务机的用户名
	IdentityFile /home/user/.ssh/private # 私钥路径

在客户机使用 ssh [NickName] 即可登陆服务机,比如这里就是:ssh gitlab

2.3.3 设置镜像

1、设置镜像
在安装系统时跳过了这一步,现在补上,参考清华大学 Ubuntu 镜像使用帮助,镜像配置文件路径:/etc/apt/sources.list,选择版本,这里是20.04 LTS,文件内容如下

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

2、使能镜像

sudo apt update

2.4 安装 gitlab

2.4.1 下载并使能安装脚本

# 这里选择的是社区版,对我们来说已经够用了
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh

2.4.2 修改镜像源

镜像路径:/etc/apt/sources.list.d/gitlab_gitlab-ce.list

# 原镜像
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
# 新镜像
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
deb-src https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main

2.4.3 安装 gitlab

安装命令

sudo apt update
sudo apt install gitlab-ce

安装完成


       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=14-9

2.5 配置 gitlab

根据安装完成时的提示对 gitlab 进行配置,配置文件路径:/etc/gitlab/gitlab.rb,下文未显式注明的配置都是在 gitlab.rb 中

2.5.1 external_url

##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
# 这里就直接使用服务机的 IP 了
# 因为直接用的内网 IP,无法申请证书,也就无法使用 https 协议
external_url 'https://192.168.10.247'
# 如果下面需要修改端口号,如改成 90 则是
external_url 'https://192.168.10.247:90'

2.5.2 端口设置

gitlab 运行时会使用 80 和 8080 两个端口,如果系统中没有其它服务使用这两个端口,gitlab就能正常启动,否则就会出现端口冲突,gitlab 无法启动。解决端口冲突方案之一就是修改 gitlab 使用的端口

# 8080 端口
puma['port'] = 9090 # 14.0 及以后的版本
unicorn['port'] = 9090 # 14.0 以前的版本
# 80 端口
nginx['listen_port'] = 90

8080 端口修改
14.0 及以后的版本 puma:/var/opt/gitlab/gitlab-rails/etc/puma.rb

bind 'tcp://127.0.0.1:9090' # 将 8080 改为 9090

14.0 以前的版本 unicorn:/var/opt/gitlab/gitlab-rails/etc/unicorn.rb

listen “127.0.0.1:9090”, :tcp_nopush => true # 将 8080 改为 9090

80 端口修改
nginx:/var/opt/gitlab/nginx/conf/gitlab-http.conf

server { ## HTTPS server
  listen *:90; # 将 80 改为 90

2.5.3 邮箱配置

# gitlab 邮箱设置
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'xxxxxxxxx@163.com'
gitlab_rails['gitlab_email_display_name'] = 'xxxxxxxxxxx'
# smtp 设置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxxxxxxxxx@163.com"
gitlab_rails['smtp_password'] = "xxxxxxxxxxxxxxxxxx" # 授权码
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
# git 用户配置
user['git_user_name'] = "xxxxxxxxxx"
user['git_user_email'] = "xxxxxxxxxx@163.com"

可以在使能配置之后,使用如下命令测试邮箱配置是否成功

# 如果配置正确,相应的邮箱会收到一封邮件
sudo gitlab-rails console
irb(main):001:0> Notify.test_email('xxxxxxx@163.com', 'gitlab邮件测试', 'gitlab测试邮件正文').deliver_now

2.5.4 修改数据存储位置

数据默认存储在 /var/opt/gitlab/git-data/repositories,但为了数据安全和方便备份,可能需要把数据存储在另一块硬盘上,这里就是存储到挂载在 /home 上的硬盘里

### For setting up different data storing directory
###! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#store-git-data-in-an-alternative-directory
###! **If you want to use a single non-default directory to store git data use a
###!   path that doesn't contain symlinks.**
git_data_dirs({
	"default" => {
		"path" => "/home/sparrow/data/gitlab"
	}
})

如果是已经用过一段时间,需要进行数据迁移

sudo gitlab-ctl stop
sudo rsync -av /var/opt/gitlab/git-data/repositories /home/sparrow/data/gitlab/
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start

2.5.5 使能配置

重新配置命令的执行时间较长,所以先完成所有的配置,再使其生效

# 保存配置文件后,在终端中执行
sudo gitlab-ctl reconfigure

2.5.6 设置管理员用户密码

# 在终端中执行
sudo gitlab-rails console
...
irb(main):001:0> u=User.where(id:1).first # User.all 可以查看所有用户
=> #<User id:1 @root>
irb(main):002:0> u.password='xxxx1111111'
=> "xxxx1111111"
irb(main):002:0> u.password_confirmation='xxxx1111111'
=> "xxxx1111111"
irb(main):003:0> u.save!
=> true
irb(main):014:0> exit

2.5.7 设置防火墙

# 允许 http 服务
sudo ufw allow http
# 如果前面修改过端口,则应该是
sudo ufw allow 90
# 查看
sudo ufw status

2.5.8 启动并设为开机自启

sudo systemctl enable gitlab-runsvdir.service # 开机自启
sudo systemctl start gitlab-runsvdir.service  # 启动
sudo systemctl status gitlab-runsvdir.service  # 查看启动情况

如果 gitlab 服务正常启动,就可以在客户机上访问 gitlab 服务了

posted @   尽千帆  阅读(3789)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示