3 私有软件仓库 GitLab
- 安装、创建用户组和项目、设置用户分组和权限、客户端能拉取和提交代码
- windows要做host解析(可以下载SwitchHosts)
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
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
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
3.4 GitLab 用户和组管理
3.4.1 用户管理
创建gitlab用户账户并登录
填入信息后,点击下面的创建用户
注册成功,会显示用户个人信息
然后会在设置的用户邮箱收到邮件,并修改登录密码
3.4.2 创建组
填写群组资料
填完最下面点创建组
创建完组后,将用户加入组并分配权限
3.5 GitLab 项目管理
3.5.1 创建项目
点击新项目
点击创建空白项目,填入项目信息,点创建项目(项目网址选择用户组)
创建完成后显示项目信息
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)