Gitlab分为社区版Gitlab CE 和企业版Gitlab EE
nginx
:静态web服务器
gitlab-shell
:用于处理Git命令和修改authorized keys列表
gitlab-workhorse
:轻量级的反向代理服务器
logrotate
:日志文件管理工具
postgresql
:数据库
redis
:缓存数据库
sidekiq
:用于在后台执行队列任务(异步执行)
unicorn
:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
两个作用:为GitLab处理Git命令、修改authorized keys列表
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。官网对GitLab Workhorse的介绍在这里:https://gitlab.com/gitlab-org/gitlab-workhorse/
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核数与内存最好
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位
设置完成后可以登录,
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,部分内容就可以中文显示
创建新项目:
设置项目管理员,项目名称为jcjc,项目描述,可见等级
创建完成后,此时代码仓库的http地址还是使用的默认域名,可以通过修改配置来修改,也可以修改Gitlab的默认端口,避免冲突
#修改默认域名和端口
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已经被改变了
#在另外一台服务器上测试上,创建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端查看提交是否正常
#创建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
在本地生成秘钥对
ssh-keygen -t rsa -C '[email protected]'
#-C:指定注释信息创建密钥
cat ~/.ssh/id_rsa.pub
#复制公钥内容到Gitlab上
在web端,点击用户----》settings----》ssh keys
将公钥内容粘贴到key一栏,并且添加,标题会自动添加为公钥的注释信息
mkdir /test
cd /test
git init
git clone -b linux [email protected]:root/jcjc.git
#不需要任何验证而克隆成功就是部署成功
#查看代码内容及分支位置
cd /test
ls
git branch
配置邮箱服务的用途:
有合并请求时,邮件通知
账号注册时,邮件验证
修改密码时,通过邮件修改
配置步骤:
开启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'] = '[email protected]' #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'] = "[email protected]" #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'] = "[email protected]" #git用户邮箱
#重新加载GitLab配置文件
gitlab-ctl reconfigure
#重启动GitLab服务
gitlab-ctl restart
#开启GitLab控制台,进行邮件发送测试
gitlab-rails console
#当出现以下提示符就是成功进入
irb(main):001:0>
#给自己发邮件测试
Notify.test_email('[email protected]','this is title','hello').deliver_now
其中:
Notify.test_email('收件人邮箱','邮件标题','邮件内容')
exit或者ctrl+D是退出控制台
登录root用户,在设置settings中,找到创建用户选项Sign-up restrictions,勾选
注册时发送确认邮件
,然后在这一项最下面点击保存save changes
,然后collapse
开启这一项,是为了在创建用户时,发送相关信息邮件
在登录界面,可以注册用户
自定义姓名,用户名,填写自己的邮箱,密码等,假设现在创建用户linux
其中,用户名和邮箱是可以作为登录web端的账号名,也可以作为推送到Gitlab仓库时验证步骤中的用户名
出现Alomost there界面,就是提示要去注册的邮箱确认,在此之前,Gitlab会给该邮箱发送一个确认邮件,确认之后,就可以使用该账户登录Gitlab了,但此时该用户应该还没有相关项目和分组
- 登录root用户,依次点击
Groups
,Your groups
,创建新群组New group
,假设现在创建群组为dev
- 创建新群组,自定义群组名称、路径,可见等级
点击dev群组,选择
members
,添加刚才创建的用户linux到该组,权限设置为Master主程序员,设置成功linux用户的邮箱会收到邮件,内容为“您已被接收作为 主程序员 访问 dev group”
#初始配置本地仓库并添加远程仓库
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