Github 开始入门
文章目录
Github 开始入门
1. 前提
2. 安装gitlab
3. 配置gitlab
4. 启动gitlab
5. GitLab构成
5.1 gitlab shell
5.2 gitlab workhorse
6. gitlab 命令
7. gitlab主要目录
8. gitlab 仓库管理
9. 创建用户create user
10. 用户授权(grant user)
11. 创建仓库create project
12. 配置ssh key
13. 推送本地客户端仓库到gitlab
14. 克隆gitlab仓库到本地客户端
15. 设置分支保护
16. Gitlab的备份、恢复、升级
16.1 手动备份
16.2 定时备份
16.3 恢复实践
1. 前提
jenkins插件地址: http://updates.jenkins-ci.org/download/plugins/
192.168.211.90 gitlab、jenkins、Maven
192.168.211.91 git、httpd
192.168.211.92 nexus、sonarqube、docker-ce
192.168.211.93 这个是单独的环境,用于测试jenkins和docker的
关闭防火墙 # systemctl disable firewalld.service 关闭NetworkManager # systemctl stop NetworkManager 关闭selinux # cat /etc/selinux/config SELINUX=disabled 安装常用命令 # yum install -y net-tools lrzsz tree screen lsof wget ntpdate 设置时间 # crontab -e 添加 # crontab -l */5 * * * * /usr/sbin/ntpdate time1.aliyun.com 更改时区 # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2. 安装gitlab
1.1 gitlab的安装192.168.211.90
GitHub 和 GitLab 都是基于 web 的 Git 仓库
安装依赖:
# yum install curl policycoreutils openssh-server openssh-clients policycoreutils-python -y
下载rpm包
# cd /usr/local/src/ #wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.1-ce.0.el7.x86_64.rpm # rpm -ivh gitlab-ce-11.9.1-ce.0.el7.x86_64.rpm
3. 配置gitlab
gitlab的默认配置文件位于:vim /etc/gitlab/gitlab.rb
,修改external_url
为本机的IP地址或者一个可以访问到本机的域名
external_url 'http://192.168.211.90'
修改完主配置文件后,使用gitlab-ctl reconfigure
重新配置加载gitlab
4. 启动gitlab
重新配置执行成功后,就可以重新启动gitlab
# gitlab-ctl restart ok: run: alertmanager: (pid 5060) 1s ok: run: gitaly: (pid 5078) 0s ok: run: gitlab-monitor: (pid 5091) 1s ok: run: gitlab-workhorse: (pid 5114) 0s ok: run: logrotate: (pid 5125) 0s ok: run: nginx: (pid 5132) 1s ok: run: node-exporter: (pid 5216) 0s ok: run: postgres-exporter: (pid 5227) 1s ok: run: postgresql: (pid 5238) 0s ok: run: prometheus: (pid 5246) 1s ok: run: redis: (pid 5260) 0s ok: run: redis-exporter: (pid 5430) 0s ok: run: sidekiq: (pid 5439) 0s ok: run: unicorn: (pid 5451) 0s
在浏览器里输入:http://192.168.211.90/
,首次登陆要求重设root密码
更改密码成功后
登陆即可
5. GitLab构成
gitlab由以下服务构成,他们共同承担了gitlab的运作需要
Nginx:静态的web服务器
gitlab-shell:用于处理git命令和修改authorized keys列表
gitlab-workhorse:轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:An HTTP server for Rack application,gitlab
rails应用是托管在这个服务器上面的可以使用命令来查看各个服务的状态
# gitlab-ctl status run: alertmanager: (pid 5060) 53429s; run: log: (pid 4308) 53665s run: gitaly: (pid 5078) 53428s; run: log: (pid 3570) 53739s run: gitlab-monitor: (pid 5091) 53428s; run: log: (pid 4171) 53683s run: gitlab-workhorse: (pid 5114) 53427s; run: log: (pid 3939) 53700s run: logrotate: (pid 5125) 53427s; run: log: (pid 4017) 53693s run: nginx: (pid 5132) 53427s; run: log: (pid 3967) 53699s run: node-exporter: (pid 5216) 53427s; run: log: (pid 4130) 53688s run: postgres-exporter: (pid 5227) 53427s; run: log: (pid 4356) 53660s run: postgresql: (pid 5238) 53426s; run: log: (pid 3660) 53735s run: prometheus: (pid 5246) 53426s; run: log: (pid 4242) 53672s run: redis: (pid 5260) 53425s; run: log: (pid 3387) 53746s run: redis-exporter: (pid 5430) 53425s; run: log: (pid 4210) 53678s run: sidekiq: (pid 5439) 53424s; run: log: (pid 3906) 53705s run: unicorn: (pid 5451) 53423s; run: log: (pid 3875) 53709s
5.1 gitlab shell
Gitlab Shell有两个作用:为Gitlab处理git命令、修改authorized keys列表。
当通过ssh访问gitlab server 时,gitlab shell会:
调用gitlab rails api检查权限
执行pre-receive钩子(在gitlab企业版中叫做git钩子)
执行你请求的动作 处理gitlab的post-receive动作
处理自定义的post-receive动作
当通过http\https访问gitlab server时,工作流程取决于你是从git仓库拉取(pull)代码还是向git仓库推送(push)代码
如果你是从git仓库拉取(pull)代码,gitlab rails应用会全权负责处理用户鉴权和执行git命令的工作
如果你是从git仓库推送(push)代码,gitlab rails应用既不会进行用户鉴权也不会执行git命令,它会把以下工作交由gitlab shell进行处理
调用gitlab rails api检查权限
执行pre-receive钩子(在gitlab企业版中叫做git钩子)
执行你请求的动作
处理gitlab的post-receive动作
处理自定义的post-receive动作
5.2 gitlab workhorse
gitlab workhorse
是一个敏捷的反向代理,它会处理一些大的http请求,比如文件的上传、文件的下载、git push/pull
和git包下载。其它的请求会反向代理到gitlab rails
应用,即反向代理给后端的unicorn
6. gitlab 命令
启动所有的gitlab组件
# gitlab-ctl start 停止所有gitlab组件 # gitlab-ctl stop 停止postgresql组件 # gitlab-ctl stop postgresql 停止相关的数据连接服务 # gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq 重启所有gitlab组件 # gitlab-ctl restart 重启gitlab-workhorse组件 # gitlab-ctl restart gitlab-workhorse 查看服务状态 # gitlab-ctl status 如果更改了配置文件[gitlab.rb 文件],使配置文件生效,但是会初始化除了gitlab.rb之外的所有文件 # sudo gitlab-ctl reconfigure 查看日志 # sudo gitlab-ctl tail 检查redis的日志 # sudo gitlab-ctl tail redis
7. gitlab主要目录
/var/opt/gitlab/git-data/repositories/ :库默认存储的目录
/opt/gitlab/ : 应用代码和相应的依赖程序存放目录
/var/opt/gitlab : gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
/etc/gitlab : 配置文件目录
/var/log/gitlab/ : 此目录下存放了各个组件产生的日志
/var/opt/gitlab/backups/ : 备份文件生成的目录
gitlab关闭用户注册功能
登录web界面后
点击上方导航栏的Admin Area
点击左边的设置setting
找到Sign-up restrictions配置区域,点击扩展
去掉Sign-up enabled前面的√
最后点击save保存按钮
8. gitlab 仓库管理
gitlab是通过组(group)的概念来统一管理仓库(project)和用户(user),通过创建组、在组下再创建仓库、再将用户加入到组,从而实现用户与仓库的权限管理
创建组 create group
在管理员页面顶部的Admin area按钮,进入管理员区域
点击new group按钮
填写必要的信息
组名、组路径、组描述
组可见级别
Visibility level :选择谁可以访问该组、我们默认选择private即可
Private:The group and its projects can only be viewed by members.
只有授权的用户才可以看到
Internal:The group and any internal projects can be viewed by any
logged in user. 只要是登录gitlab的用户都可以看到
Public:The group and any public projects can be viewed without any
authentication. 只要是可以访问gitlab web页面的人都可以看到
信息填完、点击创建组
进入创建好的组管理界面
可以再找个界面下创建组用户的
9. 创建用户create user
在管理员页面点击页面顶部的Admin Area按钮,进入管理员区域
点击创建用户
填写必要的信息
用户名昵称、用户名、电子邮箱、选择用户级别
点击创建用户
进入用户的管理界面
点击页面的右上页的Edit按钮,为用户设置初始密码
也可以设置用户的其他信息
最后点击save更改