gitlab
gitlab作为一个开源项目开始帮助团队在团建开发上进行合作,通过以业界领先的步伐交付新的功能为整个软件开发制作生命周期提供了一个单独的应用平台,gitlab提供了管理,计划的一切,gitlab是一个基于git实现的在线代码仓库托管平台软件,一般用于企业,学校等内部网络搭建git私服,gitlab是一个提供代码托管,提交审核和问题跟踪的代码管理平台,gitlab分区社区版(CE)和企业版(EE)
类似的有:GitHub、 git、 svn、 gitlab
配置建议
CPU 2核心,内存4G及以上
git、gitlab、github的简单区别
- git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面
- gitlab 是一个基于git实现的在现代吗仓库软件,提供web可视化管理界面,通常用于企业团队内部写作开发
- GitHub 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择GitHub作为代码托管仓库
服务组成
- nginx:静态web服务器
- gitlab-shell:用于处理git命令和修改authorized keys列表
- gitlab-workhorse:轻量级反向代理服务器(go),他会处理一些答案的HTTP请求,比如文件上传,文件下载,git push pull 和git包下载,其他请求会反向代理到gitlab rails应用,即反向代理给后端的unicorn
- logrotate:日志文件管理工具
- postgresql:数据库
- Redis:缓存数据库
- sidekiq:用于在后台执行队列任务(异步执行)(ruby)
- unicorn:用ruby编写一个HTTP服务器,gitlab、rails应用是托管在这个服务器上
功能介绍
- 基于web方式的管理平台
- 拥有完善的权限控制和身份认证模块
- 问题追踪和代码质量管理
Gitlab操作命令
gitlab-ctl start/stop/restart # 开启/关闭/重启 gitlab
gitlab-ctl start/stop/restart sidekiq # 对某个组件进行操作
gitlab-ctl status # 查看服务状态
gitlab-ctl reconfigure # 重新编译(修改配置文件需要重新编程)
gitlab-ctl tail # 查看gitlab的日志(全局日志)
gitlab-ctl tail nginx/postgresql # 查看gitlab的组件日志
gitlab-rails console # 进入gitlab控制台
gitlab-rake gitlab:backup:create # 备份
gitlab-rake gitlab:backup:restore BACKUP=1561442210_2019_06_25_11.9.8 # 恢复数据
gitlab安装
首先点击下载gitlab安装包
[root@localhost ~]# yum -y install curl git openssh-server openssh-clients cronie policycoreutils-python
[root@localhost ~]# yum -y localinstall gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm
[root@localhost ~]# echo '192.168.1.11 gitlab.shuai.com' >> /etc/hosts
# 修改GitLab URL配置
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
[root@gitlab ~]# gitlab-ctl reconfigure # 每次修改完配置文件一定要记得重新编译
[root@gitlab ~]# firefox gitlab.shuai.com
设置密码,然后登陆 # root登陆,密码至少8位数
后面域名统一改为:gitlab.kgc.cn
设置邮箱
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
[root@gitlab ~]# gitlab-ctl reconfigure # 每次修改完配置文件一定要记得重新编译
# 进入gitlab控制台,并发送邮件 邮件发送格式:Notify.test_email('收件人邮箱','邮件标题','邮件内容').deliver_now
[root@gitlab ~]# gitlab-rails console
irb(main):003:0> Notify.test_email('ls12345666@qq.com','test','email_test').deliver_now
gitlab数据备份和恢复
备份
[root@gitlab ~]# gitlab-rake gitlab:backup:create # 备份
[root@gitlab ~]# cd /var/opt/gitlab/backups/ # 备份的存放位置
[root@gitlab backups]# ls
1561442210_2019_06_25_11.9.8_gitlab_backup.tar
恢复
# 首先停止这两个组件(避免备份过程中产生新的数据)
[root@gitlab backups]# gitlab-ctl stop sidekiq # 停止消息队列(异步执行)
ok: down: sidekiq: 0s, normally up
[root@gitlab backups]# gitlab-ctl stop unicorn # GitLab Rails应用是托管在这个服务器上面的
ok: down: unicorn: 0s, normally up
# 恢复数据
[root@gitlab backups]# gitlab-rake gitlab:backup:restore BACKUP=1561442210_2019_06_25_11.9.8 # 后面跟备份文件的名称
# 然后再启动这两个组件
[root@gitlab backups]# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 7946) 1s
[root@gitlab backups]# gitlab-ctl start unicorn
ok: run: unicorn: (pid 7972) 1s
root用户忘记密码
[root@gitlab backups]# gitlab-rails console production
irb(main):036:0> user = User.where(id:1).first # 切换到root用户
=> #<User id:1 @root>
irb(main):037:0>
irb(main):038:0> user.password='12345.com' # 修改密码
=> "12345.com"
irb(main):039:0> user.save! # user.save后面必须加上感叹号!
Enqueued ActionMailer::DeliveryJob (Job ID: ee3c54e0-c528-4db0-9524-7dd9a22e9f0f) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007f5836123f78 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
创建用户
创建组
创建项目
上传项目
[root@gitlab ~]# ssh-keygen -t rsa -C "lisi@kgc.cn" # 生成秘钥
[root@gitlab ~]# cat /root/.ssh/id_rsa.pub # 查看秘钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/Q6rKwiTXo+dwGhbrRLymyYe0akc6JslsblMMB6TMNHy9aByOqQQ3n6FeBK23d/YvN7zZIzAO516WAn5nLFMzZ6+lOdRKyND0VxYIWnyEQ3jDcTOnZQu/OqgmRk1NZqKlkCrTWlCW/yhYKyLSoEgL0HasELqa3OsTG4z0P3v+X1YGRdTz3grwVJhW+KRHog+5tqKA+S8lPiw32uiylNKvNG8wJN8eKEeUtBpfPfwd0FdaD5POSB8DYmEpK2MHatz7f7dRMmN5rtxZvcVKofWyLRWlPdJAeiEn2TrZL5BJ5dzaH0EIe64oQF9+9NSeMJshAv7qv25ExvAZlREL9Hrz lisi@kgc.cn
[root@gitlab ~]# git clone git@gitlab.kgc.cn:kgc/kgcweb.git # 克隆到仓库
正克隆到 'kgcweb'...
The authenticity of host 'gitlab.kgc.cn (192.168.43.111)' can't be established.
ECDSA key fingerprint is SHA256:wCFsQC1wnOel8I7h9SGZ3PZaMNuqhZkzngFh2OF0zcQ.
ECDSA key fingerprint is MD5:17:6c:7a:b5:42:77:7b:3a:79:69:7e:48:97:79:46:63.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.kgc.cn,192.168.43.111' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
接收对象中: 100% (3/3), done.
[root@gitlab ~]# cd kgcweb/ # 切换到项目目录,并查看
[root@gitlab kgcweb]# ls -a
. .. .git README.md
[root@gitlab kgcweb]# echo "hello world" > test.txt
[root@gitlab kgcweb]# git add test.txt # 添加项目到git
[root@gitlab kgcweb]# git commit -m "test" # 提交项目,并命名为test
[master 5afe7bc] test
1 file changed, 1 insertion(+)
create mode 100644 test.txt
[root@gitlab kgcweb]# git push origin master # 上传项目到git仓库
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitlab.kgc.cn:kgc/kgcweb.git
8291988..5afe7bc master -> master
上传本地文件到GitLab项目
首先需要下载kgc.tar.gz到/root目录
[root@gitlab ~]# tar -zxf kgcweb.tar.gz -C /usr/src/
[root@gitlab ~]# cd kgcweb/
[root@gitlab kgcweb]# cp -r /usr/src/kgcweb/* .
[root@gitlab kgcweb]# git add pom.xml
[root@gitlab kgcweb]# git commit -m "pom"
[root@gitlab kgcweb]# git push origin master
[root@gitlab kgcweb]# git add src/
[root@gitlab kgcweb]# git commit -m "src"
[root@gitlab kgcweb]# git push origin master