版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
GITLAB介绍
Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百 万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git 版本仓库,还拥有了更美观的Web界面,您的代码文件可以被任何人克隆,使得开发 者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私 有库真的是帮助到了很多团队和企业。
- 特点:
- 是一个开源分布式版本控制系统
- 开发语言:ruby
功能:管理项目源代码、版本控制、代码复用与查找
- 与GitHub的不同点
- GitHub分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
- gitlab分布式在线代码仓库托管软件,分社区免费版与企业收费版,都需要服务器安装
- 优势和应用场景:
- 开源免费,适合中小型公司将代码放置在该系统中
- 差异化的版本管理,离线同步以及强大的分支管理功能
- 便捷的GUI操作界面以及强大的账户权限管理功能
- 集成度很高,能够集成绝大多数的开发工具
- 支持内置HA,保证在高并发下仍旧实现高可用性
- gitlab主要服务构成:
- nginx静态web服务器 #proxy代理,处理所有静态请求
- gitlab-workhorse #轻量级的反向代理服务器 #处理较大的文件上传下载以及git push等
- gitlab-shell #用于处理git命令和修改公钥authorized keys列表
- logrotate #日志文件管理工具,负责日志的切割打包
- postgresql # 数据库保存gitlab的数据信息
- redis #缓存服务器,缓存数据库信息加快前台访问速度及数据的读写
gitlab工作流程:
-
创建并克隆项目 #在gitlabweb界面创建项目,本地安装git并克隆项目
-
创建项目某Feature分支
#分支也是管理员事先根据项目要求创建好的,这些分支以任务的形式分发给开发人员并编写代码并初步提交至该分支 -
编写代码并提交至该分支
-
推送该项目分支至远程gitlab服务器
-
在gitlab的web界面进行代码检查并提交master主分支合并申请
-
项目领导审查代码并确认合并申请
gitlab安装配置管理:
- 安装gitlab前系统预配置准备工作:
- 关闭firewalld防火墙
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #禁用防火墙开机自启
- 关闭SELINUX并重启系统
vi /etc/sysconfig/selinux
SELINUX=disabled
reboot #重启系统
getenforce #查看防火墙状态
- 安装omnibus(一键安装包) gitlab-ce package(gitlab社区安装包) #或者官网yum安装
- 安装gitlab组件
yum -y install curl policycoreutils openssh-server openssh-clients postfix
- 配置yum仓库
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
- 启动postfix邮件服务
systemctl start postfix && systemctl enable postfix
- 安装gitlab-ce社区版
yum -y install gitlab-ce
- omnibus gitlab 等相关配置初始化并完成安装
- 证书创建与配置加载 #OpenSSL创建本地证书并配置gitlab.conf加载改证书
[root@gitlab ~] mkdir -p /etc/gitlab/ssl
[root@gitlab ~] openssl genrsa -out /etc/gitlab/ssl/gitlab.example.com.key 2048
[root@gitlab ~] openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:gitlab.example.com #gitlab的域名
Email Address []:[email protected] #邮箱地址
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #证书密码
An optional company name []:
[root@gitlab ~]#
[root@gitlab ~]# ll /etc/gitlab/ssl/
总用量 8
-rw-r--r-- 1 root root 1074 9月 29 16:04 gitlab.example.com.csr
-rw-r--r-- 1 root root 1675 9月 29 16:02 gitlab.example.com.key
- nginx SSL代理服务配置 #使我们可以通过域名直接访问gitlab的系统资源
- 初始化gitlab相关服务并完成安装
私有仓库GITLAB
-
安装文档 centos7官网安装文档
-
机器内存给大点 (官方推荐至少4G)
yum localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
gitlab-ctl reconfigure #→初始化,就执行一次
gitlab-ctl status/stop/start
通过浏览器访问页面,设置初始密码,其他操作类似GitHUB。
账户:root 密码自己设置为12345678(8位
ls /var/log/gitlab/
posrfresql #数据库
具体使用方法见博客老男孩博客
-
一般用私人仓库
-
密钥认证
-
客户机生成密钥对
ssh-keygen #不用邮箱,直接执行这个命令
公钥放入
- 常用推送命令
git clone [email protected]:my-test/test.git #直接克隆这个项目,不解析就用IP地址
git pull #如果仓库更新了,本地更新用这个
git push orgin master #推送到远程主分支
pycharm开发代码上传到gitlab
-
settings---->version control—>github
-
或者
第一遍输入gitlab密码
第二遍设置pycharm管理员密码
vsc上下箭头提交,下载
git–》resipotory—》New branch 创建新分支
合并分支:
代码上线
- 运维操作 uwsgi(Python发布)
uwsgi + nginx
- 代码回滚
ln -s /root/oldboyedu34 /application/oldboyedu34 #代码目录操作做软连接,方便回滚
# 到/root/oldboyedu34 git pull,在/application/oldboyedu34修改
-
pycharm代码上线,在pycharm也要merge(开发)
-
第一步
ls -a /application/oldboyguangwang/ /application/oldboyedu
cp -a /root/oldboyedu34/* /application/odlboyguangwang/
cp -a odlboyguangwang odlboyguangwang20190929 #备份
gitlab
内存要很大
发邮件postfix
初始化执一次就开始了
设置密码
管理员root
ls /log/gitlab
gitlab-ctl status #冲突服务关闭
private(一般)
internal
做个地址解析