gitlab安装和使用
gitlab是私有仓库,而github则经常被用作公有仓库。都是用来存放代码的地方
开源软件三部曲:安装、配置、启动
gitlab安装
方法一:官网下载安装
官网:gitlab.com
选择安装gitlab
即可
根据上面方法安装
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
方法二:使用清华镜像安装
清华镜像网站:https://mirrors.tuna.tsinghua.edu.cn/
gitlab-ce:社区版
gitlab-ee:企业版
下载社区版即可
进入这个目录:/gitlab-ce/yum/el7/
e17:centos7版
e16:centos6版
点击下载即可
下载后使用rpm命令安装
rpm -ivh gitlab-ce-10.2.5-ce.0.el7.x86_64.rpm
配置gitlab
gitlab的配置文件在/etc/gitlab/gitlab.rb
vim /etc/gitlab/gitlab.rb
我们可以修改gitlab的默认访问地址
external_url "http://10.0.0.11"
更改配置后,需要重启配置,使其生效
gitlab-ctl reconfigure
启动gitlab
gitlab是通过gitlab-ctl管理服务的
gitlab-ctl status 查看gitlab状态
gitlab-ctl restart 重启服务
同理stop为关闭,start为开启
gitlab服务介绍
我们使用gitlab-ctl status
查看gitlab状态
nginx:用于静态页面内容发布
logrotate:用于日志服务
postpresql:数据库服务
redis:缓存服务
sidekip:后台任务队列
unicorn:应用托管
gitlab-workhorse:反向代理
gitlab工作流程
http内容:ngixn-》gitlab-workhorse
git命令:gitlab-shell-》gitlab-workhorse
gitlab-workhorse会直接处理文件上传、文件下载、git push、git pull、git包下载;其他请求会反向代理给后端unicorn处理
gitlab 常见命令
gitlab-ctl stop 关闭整体
gitlab-ctl start nginx 启动单个服务nginx
gitlab-ctl tail 查看日志,总体日志
gitlab 相关目录
/etc/gitlab/gitlab.rb gitlab主要配置文件
/var/log/gitlab 日志地址
/var/opt/gitlab gitlab数据
/var/opt/gitlab/git-data gitlab仓库
/var/opt/gitlab/backups gitlab备份目录
/opt/gitlab gitlab程序代码目录
gitlab设置
我们可以进入网页设置gitlab
进入设置网络http://10.0.0.11 (因为之前在配置文件中已经修改了gitlab的默认访问地址)
取消注册入口
当我们不想要注册入口时,可以取消登录页面的注册入口
定制管理页面
仓库管理
我们可以建立组,人,仓库
建立组
私有、公开、内部区别
私有:组里面的人能看到
内部:能登录gitlab就能看到
公开:不用登录就能看到
同理建立用户,仓库也类似,和github操作方法一样
上传项目到gitlab上
使用ssh认证
ssh-keygegn -t rsa
cat .ssh/id_rsa.pub
创建ssh认证,中间交互只需要敲回车,默认配置即可
创建的文件会在家目录下生成.ssh文件夹,id_rsa.pub为公钥,复制下来填写到gitlab上即可
进入gitlab的设置页面-》SSH Keys
注意:一个key只能对应一个gitlab用户,一个用户可以有多个key
推送项目到远程仓库
git remote 查看远程分支
git remote add origin gitlab项目地址
origin为远程分支名,绑定gitlab项目地址
mygitlab为仓库名,可以自定义
远程分支用于连接远程仓库,一个远程分支连接一个远程项目
git add . 将文件加入暂存区
git commit -m "commit" 将暂存区所有文件提交到本地仓库
git push -u origin master 将本地仓库中的内容提交到远程仓库
master为该本地仓库的主分支
如果想推送其他分支
git branch dev 创建新分支
git checkout dev 切换分支到dev
touch dev 创建文件
git add . 提交到暂存区
git commit -m "commit dev on dev branch" 提交到本地仓库
git push -u origin dev 提交到远程仓库
将远程仓库的内容复制下来
git clone 远程仓库地址
默认创建一个远程分支origin
gitlab权限控制
我们可以设置保护分支,在一个项目中,只允许管理员以上级别的成员push代码到master分支上
一般情况master为稳定分支,用于版本发布
dev为研发分支,研发权限只在dev上
设置保护分支
即可,master分支被保护了,只有高于或等于master的成员才能merge,push分支
用户提出申请合并分支
当用户想要将其他分支合并到主分支master上面时,必须提出申请
即可
管理员可以处理相关请求
gitlab备份和恢复
修改gitlab配置文件
进入gitlab的配置文件,配置备份信息
vi /etc/gitlab/gitlab.rb
在末尾加上配置信息
gitlab_rails['backup_path'] = '/data/backup/gitlab'
gitlab_rails['backup_keep_time'] = 604800
添加备份路径和多久备份一次(单位s)
修改完配置信息后,重启配置文件
gitlab-ctl reconfigure
创建备份文件的目录
mkdir /data/backup/gitlab
chown -R git.git /data/backup/gitlab
创建备份目录同时,也要确保对备份目录有权限,所以递归的将该备份目录的所有者和所属组都这是为git用户和用户组
执行备份
/usr/bin/gitlab-rake gitlab:backup:create
设置定时备份
编辑定时任务
crontab -e
会弹出一个文件,在其中添加
0 2 * * * /usr/bin/gitlsb-rake gitlab:backup:create
分钟 小时 天 月 周 用户名 命令
*代表都满足,都会执行
这段代码意思是只在每天2点时候执行备份命令
恢复库
恢复库时要关闭相关写入服务
#停止数据写入服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#执行要恢复的备份文件
gitlab-rake gitlab:back:restore BACKUP=1512811475_2019_1_1_1.2.2
#重启服务
gitlab-ctl restart