GitLab私有代码仓库部署

1 GitLab简介

  • 版本:

Gitlab分为社区版Gitlab CE 和企业版Gitlab EE

  • Gitlab服务主要构成

nginx:静态web服务器
gitlab-shell:用于处理Git命令和修改authorized keys列表
gitlab-workhorse:轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。

  • 主要服务介绍:Gitlab shell

两个作用:为GitLab处理Git命令、修改authorized keys列表

  • 主要服务介绍:Gitlab-workhorse

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。官网对GitLab Workhorse的介绍在这里:https://gitlab.com/gitlab-org/gitlab-workhorse/

2 Gitlab安装部署

Gitlab官方安装文档:https://about.gitlab.com/installation/#centos-7
GitLab国内源下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装环境:
centos 7.5.1804
3.10.0-862.3.3.el7.x86_64
Gitlab服务器的CPU核数与内存最好

2.1 Gitlab安装

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm
 yum localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm -y

#yum localinstall 利用yum安装本地指定的rpm包,好处是自动解决依赖问题

#初始化GitLab,只需要执行一次
gitlab-ctl reconfigure

#查看gitlab启动状态,有多个进程启动
gitlab-ctl status

#查看GitLab版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

浏览器输入http://ip即可访问,初次访问需要设置管理用户root的密码,最低8位
设置完成后可以登录,

2.2 Gitlab中文社区版补丁包安装

GitLab中文社区:https://gitlab.com/xhang/gitlab/tree/11-2-stable-zh
补丁版本最好是和原版本相同

#解压GitLab中文版补丁包
tar xf gitlab-11-2-stable-zh.tar.gz

#查看解压后的补丁包版本号
cat gitlab-11-2-stable-zh/VERSION 

#备份英文版GitLab
cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak}

#将中文补丁包的内容覆盖英文版
/bin/cp -rf gitlab-11-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/

#重新配置GitLab
gitlab-ctl reconfigure

#重新启动GitLab
gitlab-ctl restart

重新刷新浏览器访问gitlab,部分内容就可以中文显示

2.3 使用Gitlab的简易网页端

创建新项目:
设置项目管理员,项目名称为jcjc,项目描述,可见等级
创建完成后,此时代码仓库的http地址还是使用的默认域名,可以通过修改配置来修改,也可以修改Gitlab的默认端口,避免冲突

2.4 修改Gitlab配置文件/etc/gitlab/gitlab.rb

#修改默认域名和端口
cat -n /etc/gitlab/gitlab.rb | sed -n '13p;943p'
13  external_url 'http://192.168.200.121:8888'
943  nginx['listen_port'] = 8888

域名可以修改为本机IP,若本机预装了nginx,可以修改其中的一个参数,停用Gitlab内置Nginx
nginx['enable'] = false

#重新配置GitLab
gitlab-ctl reconfigure

#重启动GitLab
gitlab-ctl restart

重新访问浏览器http://IP:8888
进入刚才创建的项目,可以看到项目的URL已经被改变了

3 Gitlab代码推送下载

  • 将本地仓库代码推送到私有GitLab
#在另外一台服务器上测试上,创建git工作目录,添加远程仓库
mkdir /gitlab
cd /gitlab
git init 
git remote add origin http://192.168.200.121:8888/root/jcjc.git

#创建代码master分支,再测试提交
touch master.txt
git add master.txt
git commit -m "test master"
git push -u origin master
#验证主程序员的账号密码
#然后去web端查看提交是否正常

#创建linux分支,测试提交
git branch linux
git checkout linux
touch linux.txt
git add linux.txt
git commit -m "test linux"
git push -u origin linux
#验证主程序员的账号密码
#然后去web端查看提交是否正常

#创建标签,测试提交
git tag v1.0
git push -u origin v1.0
#验证主程序员的账号密码
#然后去web端查看提交是否正常
  • 在本地仓库克隆GitLab的项目Linux分支到本地仓库
#创建Git工作目录
mkdir -p /mycode
cd /mycode
git init

#克隆远程仓库GitLab的Linux分支
git clone -b linux http://192.168.200.121:8888/root/jcjc.git

#进入工作目录,查看代码下载是否正常
cd jcjc
ls

4 配置Gitlab的ssh密钥连接方式

4.1 配置ssh公钥连接

在本地生成秘钥对
ssh-keygen -t rsa -C '1198563987@qq.com'
#-C:指定注释信息创建密钥

cat ~/.ssh/id_rsa.pub
#复制公钥内容到Gitlab上

在web端,点击用户----》settings----》ssh keys
将公钥内容粘贴到key一栏,并且添加,标题会自动添加为公钥的注释信息

4.2 测试ssh方式克隆代码

mkdir /test
cd /test
git init
git clone -b linux git@192.168.200.121:root/jcjc.git

#不需要任何验证而克隆成功就是部署成功
#查看代码内容及分支位置
cd /test
ls
git branch

5 配置Gitlab邮件服务

  • 配置邮箱服务的用途:
    有合并请求时,邮件通知
    账号注册时,邮件验证
    修改密码时,通过邮件修改

  • 配置步骤:
    开启QQ邮箱的smtp服务
    修改gitlab配置
    测试邮件服务是否正常

  • 开启GitLab服务postfix服务并开启QQ邮箱的smtp服务

systemctl start postfix
systemctl enable postfix
systemctl status postfix

开启QQ邮箱的POP3/SMTP和IMAP/SMTP服务,生成授权码

修改/etc/gitlab/gitlab.rb

cat -n /etc/gitlab/gitlab.rb | sed -n '53p;472,480p;618p'
53  gitlab_rails['gitlab_email_from'] = '1198563987@qq.com'  #GitLab默认邮箱
472  gitlab_rails['smtp_enable'] = true                      #开启功能
473  gitlab_rails['smtp_address'] = "smtp.qq.com"            #QQ的smtp服务
474  gitlab_rails['smtp_port'] = 465                         
475  gitlab_rails['smtp_user_name'] = "1198563987@qq.com"    #smtp用户邮箱
476  gitlab_rails['smtp_password'] = "授权码"
477  gitlab_rails['smtp_domain'] = "qq.com"                  #smtp域名
478  gitlab_rails['smtp_authentication'] = "login"
479  gitlab_rails['smtp_enable_starttls_auto'] = true
480  gitlab_rails['smtp_tls'] = true
618  user['git_user_email'] = "1198563987@qq.com"            #git用户邮箱
#重新加载GitLab配置文件
gitlab-ctl reconfigure
#重启动GitLab服务
gitlab-ctl restart
#开启GitLab控制台,进行邮件发送测试
gitlab-rails console
#当出现以下提示符就是成功进入
irb(main):001:0>

#给自己发邮件测试
Notify.test_email('1198563987@qq.com','this is title','hello').deliver_now  

其中:
Notify.test_email('收件人邮箱','邮件标题','邮件内容')

exit或者ctrl+D是退出控制台

6 Gitlab的账户,分组,权限设置

6.1 web端设置开启邮件相关服务

登录root用户,在设置settings中,找到创建用户选项Sign-up restrictions,勾选注册时发送确认邮件,然后在这一项最下面点击保存save changes,然后collapse
开启这一项,是为了在创建用户时,发送相关信息邮件

6.2 注册用户

在登录界面,可以注册用户
自定义姓名,用户名,填写自己的邮箱,密码等,假设现在创建用户linux
其中,用户名和邮箱是可以作为登录web端的账号名,也可以作为推送到Gitlab仓库时验证步骤中的用户名

出现Alomost there界面,就是提示要去注册的邮箱确认,在此之前,Gitlab会给该邮箱发送一个确认邮件,确认之后,就可以使用该账户登录Gitlab了,但此时该用户应该还没有相关项目和分组

6.3 创建项目组(分组)

  1. 登录root用户,依次点击GroupsYour groups,创建新群组New group,假设现在创建群组为dev
  2. 创建新群组,自定义群组名称、路径,可见等级

6.4 给群组添加成员并授权

点击dev群组,选择members,添加刚才创建的用户linux到该组,权限设置为Master主程序员,设置成功linux用户的邮箱会收到邮件,内容为“您已被接收作为 主程序员 访问 dev group”

  • Guest访客
    只能发表评论,不能读写项目库
  • Reporter报告者
    只能克隆代码(读),不能提交代码(修改)
  • Developer开发人员
    可以进行代码的读写
  • Master主程序员
    可以添加项目成员,添加标签,创建和保护分支
  • Owner所有者
    拥有所有权限(一般不用此权限)

6.5 给项目组创建新项目并测试提交,克隆

  • 在web端创建一个私有项目benet,然后在服务器上进行组成员的项目提交测试
#初始配置本地仓库并添加远程仓库
mkdir -p /test
cd /test
git init
git remote add dev http://192.168.200.121:8888/dev/benet.git

#创建代码提交,推送
touch master.txt
echo "测试dev主分支" > master.txt
git add *
git commit -m "测试master"
git push -u dev master
#验证信息为刚才设置的主程序员的信息
#然后去web端查看提交情况
  • 进行组成员代码的克隆测试
mkdir /test2
cd /test2

git clone http://192.168.200.121:8888/dev/benet.git

#查看代码克隆情况
cd benet
ls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值