3 私有软件仓库 GitLab

  • 安装、创建用户组和项目、设置用户分组和权限、客户端能拉取和提交代码
  • windows要做host解析(可以下载SwitchHosts)

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed


gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_02

3.2.1 GitLab 架构

Gitlab的服务构成

  • Nginx:静态web服务器
  • gitlab-shell:用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse:轻量级的反向代理服务器 它旨在充当智能反向代理,以帮助整个 GitLab 加速
  • postgresql:数据库
  • redis:缓存数据库
  • sidekiq:用于在后台执行队列任务(异步执行)
  • unicorn: An HTTP server for Rack applications, GitLab Rails应用是托管在这个服务器上面的

3.2.2 安装 GitLab 要求

1.硬件配置要求较高:

  • 测试环境:内存4G以上
  • 生产环境:建议CPU2C以上,内存8G以上,磁盘10G以上配置,和用户数有关

2.数据库要求:

  • 从GitLab 12.1 开始不再支持MySQL,只支持PostgreSQL

3.2.3 安装前准备

3.2.3.1 Ubuntu 系统环境安装前准备

3.2.3.1.1 配置 ubuntu 远程连接
[root@ubuntu1804 ~]# vim /etc/ssh/sshd_config
PermitRootLogin yes
[root@ubuntu1804 ~]#systemctl restart sshd
3.2.3.1.2 配置ubuntu 主机名
hostnamectl set-hostname gitlab
[root@gitlab ~]# vi /etc/hosts
10.0.0.30  gitlab.lec.org  # 本机ip 10.0.0.30
3.2.3.1.3 配置ubuntu 仓库
[root@gitlab ~]# vim /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

3.2.4 GitLab 安装

3.2.4.1 下载安装
下载
wget https://mirrors.tuna.tsinghua.edu.cn/gitlabce/ubuntu/pool/bionic/main/g/gitlab-ce/gitlab-ce_15.1.0-ce.0_amd64.deb
安装
dpkg -i gitlab-ce_15.1.0-ce.0_amd64.deb

gitlab高可用两个gitlab节点可以连接一个数据库吗_git_03

3.2.4.2 修改 GitLab 配置

qq邮箱开启授权码 https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

root@gitlab:~# vim /etc/gitlab/gitlab.rb

external_url 'http://gitlab.lec.org'  #修改此行,改为你的名称
#########################增加邮件配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "1xxxxxxx@qq.com"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "1xxxxxxx@qq.com"
3.2.4.3 初始化和启动服务
#每次修改完配置文件都需要执行此操作
root@gitlab:~# gitlab-ctl reconfigure
2.2.4.4 验证 GitLab 启动完成
#新版服务
root@gitlab:~# gitlab-ctl status

gitlab高可用两个gitlab节点可以连接一个数据库吗_gitlab_04

2.2.4.5 验证端口及状态
root@gitlab:~# lsof -i :80
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   19051       root    7u  IPv4  53309      0t0  TCP *:http (LISTEN)
nginx   19052 gitlab-www    7u  IPv4  53309      0t0  TCP *:http (LISTEN)
nginx   19053 gitlab-www    7u  IPv4  53309      0t0  TCP *:http (LISTEN)

3.3 GitLab 基本配置

3.3.1 首次登录 GitLab Web 界面修改密码

  • 上面设置过密码(注意:密码至少8位),浏览器访问 http://gitlab服务器IP/,我的ip是10.0.0.30

浏览器访问 http://10.0.0.30/
账号root 密码12345678

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed_05

3.4 GitLab 用户和组管理

3.4.1 用户管理

创建gitlab用户账户并登录

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed_06

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_07

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_08


填入信息后,点击下面的创建用户

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_09


注册成功,会显示用户个人信息

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed_10


然后会在设置的用户邮箱收到邮件,并修改登录密码

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_11

3.4.2 创建组

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_12


填写群组资料

gitlab高可用两个gitlab节点可以连接一个数据库吗_linux_13


填完最下面点创建组创建完组后,将用户加入组并分配权限

gitlab高可用两个gitlab节点可以连接一个数据库吗_ubuntu_14


gitlab高可用两个gitlab节点可以连接一个数据库吗_git_15

3.5 GitLab 项目管理

3.5.1 创建项目

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed_16


点击新项目

gitlab高可用两个gitlab节点可以连接一个数据库吗_gitlab_17


点击创建空白项目,填入项目信息,点创建项目(项目网址选择用户组)

gitlab高可用两个gitlab节点可以连接一个数据库吗_linux_18


创建完成后显示项目信息

gitlab高可用两个gitlab节点可以连接一个数据库吗_sed_19

3.5.2 客户端拉取和提交代码

  • 客户端ip 10.0.0.8
  • URL git@gitlab.lec.org:python/meta2s.git
# 新建文件夹,用来存放拉取仓库的项目
mkdir /data
cd /data
# 克隆仓库,拉取项目
[root@gc data]# git clone git@gitlab.lec.org:python/meta2s.git
Cloning into 'meta2s'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

# 查看项目 
[root@gc data]# ls 
meta2s
[root@gc data]# cd meta2s/
[root@gc meta2s]# ls 
README.md

# 新建分支main2
[root@gc meta2s]# git switch -c main2
Switched to a new branch 'main2'

#修改或者新增文件
[root@gc meta2s]# echo "login test html " > login.html
#拉取最新的代码文件
[root@gc meta2s]# git pull
#添加当前目录下所有数据到暂存区
[root@gc meta2s]# git add .
##提交文件到工作区
[root@gc meta2s]# git commit -m "add login"
[main2 eab4ece] add login
 1 file changed, 1 insertion(+)
 create mode 100644 login.html

# 推送到分支main2
[root@gc meta2s]#  git push -u origin main2
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 284 bytes | 284.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: To create a merge request for main2, visit:
remote:   http://gitlab.lec.org/python/meta2s/-/merge_requests/new?merge_request%5Bsource_branch%5D=main2
remote: 
To gitlab.lec.org:python/meta2s.git
 * [new branch]      main2 -> main2
Branch 'main2' set up to track remote branch 'main2' from 'origin'.

仓库web端选择分支main2,查看是否推送成功(成功:则新增login.html)

gitlab高可用两个gitlab节点可以连接一个数据库吗_linux_20


gitlab高可用两个gitlab节点可以连接一个数据库吗_gitlab_21