Gitlab
简介
gitlab相当于是开源版本的github
gitlab提供了管理、计划、创建、验证、打包、发布、配置、监视和保护应用程序所需的一切
gitlab基于git实现的在线代码仓库托管软件
一般用于企业、学校等内部网络
git gitlab github区别:
git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面
gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发
github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都会选择github作为代码托管仓库
实验准备
服务组成:
Nginx:静态web服务武器
gitlab-shell:用于处理git命令和修改authorized keys列表(ruby)
gitlab-workhorse:轻量级反向代理服务器(go)
gitlab-workhorse是一个敏捷的反向代理,他会处理一些大的http请求比如文件上传、文件下载、git push/pull 和git包下载,其他请求会反向代理到gitlab rails应用,即反向代理给后端的uniconrn
Logrotate 日志文件管理工具
Postgresql 数据库
Redis 缓存数据库
sidekiq 用于在后台执行队列任务(异步执行)(ruby)
uniconrn 用于ruby编写的一个http服务器,gitlab rails应用是托管在这个服务器上
Gitlab基本操作
1、gitlab-ctl start #启动所有 gitlab 组件;
2、gitlab-ctl start sidekiq #对某个组件进行操作;
3、gitlab-ctl stop #停止所有 gitlab 组件;
4、gitlab-ctl restart # 重启所有 gitlab 组件;
5、gitlab-ctl status # 查看服务状态;
6、gitlab-ctl reconfigure # 重新编译(修改配置文件需要编译);
7、vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
8、gitlab-ctl tail # 查看日志;
gitlab-ctl tail nginx 查看gitlab组件日志
安装Gitlab
首先检查yum源
Yum list
安装依赖包
yum -y install curl openssh-server-sysvinit.x86_64 cronie policycoreutils-python.x86_64
到gitlab官网下载gitlab,yum库
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
下载太慢了
直接拖得gitlab-ce-11.8.6-ce.0.el7.x86_64.rpm
yum -y localinstall gitlab-ce-11.8.6-ce.0.el7.x86_64.rpm
修改配置文件
vim /etc/gitlab/gitlab.rb
自定义的要访问的域名或者IP地址端口号
external_url 'http://gitlab.kgc.cn'
重新编译配置文件
gitlab-ctl reconfigure
启动gitlab
gitlab-ctl start
配置文件报警服务
vim /etc/gitlab/gitlab.rb
大概在53行
gitlab_rails['gitlab_email_from'] = '马赛克@163.com'
大概在509-516:
大概在663行:
gitlab_rails['smtp_enable'] = true //启用smtp服务器来发送
gitlab_rails['smtp_address'] = "smtp.163.com" //发送邮件smtp地址邮件
gitlab_rails['smtp_port'] = 25 //邮件服务器的端口号
gitlab_rails['smtp_user_name'] = "马赛克@163.com" //邮件发送人(你自己的邮箱)
gitlab_rails['smtp_password'] = "shouquan123" //smtp的授权码,等下自己弄
gitlab_rails['smtp_domain'] = "163.com" //smtp服务器的域名
gitlab_rails['smtp_authentication'] = "login" //smtp服务器的授权信息
gitlab_rails['smtp_enable_starttls_auto'] = false //密钥,安全相关的
gitlab_rails['smtp_tls'] = false //密钥安全相关的
修改完重新编译
gitlab-ctl reconfigure
进入gital控制台:
gitlab-rails console
Notify.test_email(‘马赛克@qq.com’,‘NIhao’,‘DAJIAHAO’).deliver_now
收件人邮箱 邮件标题 邮件的内容
Gitlab日常维护
1、数据的备份和恢复
gitlab-rake gitlab:backup:create #把所有的gitlab数据备份
这是备份的名称
默认备份到 ls /var/opt/gitlab/backups/ 一般数据都备份到这里
1554270313_2019_04_03_11.8.6_gitlab_backup.tar
时间戳 日期 版本
恢复数据需要停掉两个组件
unicorn
sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1554270313_2019_04_03_11.8.6 #需要恢复包的时间戳以及版本号
在把组件启动
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
忘记管理员密码
gitlab-rails console production #进入控制台
user = User.where(id:1).first #切换到root用户
user.password='12345678' #修改密码
user.save! #保存密码
图像化创建用户和组
Firefox 192.168.43.205
创建用户
创建组
创建项目:
然后创建密钥:
ssh-keygen -t rsa -C "马赛克@马赛克.com" #这个是创建用户的时候弄的邮箱
最后再去命令行:
在git命令行对project进行操作
git config --global user.name "lisi" #声明接下来的操作由用户cgl操作
git config --global user.email "马赛克@马赛克.com" #声明操作用户的邮箱
git config -l #查看当前用户的设置
user.name=lisi
user.email=lisi@马赛克.com
然后命令行:
mkdir test
cd test
cd app/ #刚才我们靠过来的仓库下面的文件夹
最后一步是
上传,然后去web界面查看结果