11、Git之自建项目托管平台(GitLab极狐)
11.1、简介
Github 是国外的项目托管平台,由于网络问题,在国内访问和使用不是很方便。
Gitee 是国内的项目托管平台,虽然在访问和使用上挺方便的,但依然让人担忧项目代码可能会被泄露。
因此,从企业或机构的角度出发,是倾向于在内部自建一个项目托管平台,将绝对管理权控制在自己手中的。
GitLab 作为一个用于项目代码仓库管理的开源项目,则能很好地满足企业或机构在内部自建项目托管平台的需求。
11.2、安装
本节演示如何使用 rpm 安装包,在 CentOS 7 中离线安装 GitLab 。
11.2.1、下载安装包
gitlab 官网下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
清华大学开源软件镜像站下载地址(推荐):https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
如上图所示,本文选择使用 gitlab-ce-16.10.6-ce.0.el7.x86_64.rpm 版本的安装包。
提示:EL7 是 Red Hat 7.x,CentOS 7.x 和 CloudLinux 7.x 的下载。
11.2.2、服务器准备
本文将 GitLab 安装在 CentOS 7 虚拟机上,虚拟机配置为 2 核 CPU 、4G 内存、16G 磁盘。
关于 CentOS 7 虚拟机的安装方法,请参考安装CentOS7虚拟机这篇文章。
注意:16G 磁盘是最低配置要求;我使用过 8G 磁盘的虚拟机,安装完 GitLab 后,再新建一个普通用户账号,就用完了 8G 磁盘的空间,甚至都还没有创建任何项目仓库。 关于如何扩容 CentOS 7 虚拟机的磁盘,请参考VirtualBox扩容CentOS-7虚拟机磁盘这篇文章。
11.2.3、上传安装包到服务器
如上图所示,使用 mobaxterm 之类的工具,将 rpm 安装包上传到 CentOS 服务器。
11.2.4、运行安装包
rpm -ivh 安装包名称
错误:依赖检测失败:
policycoreutils-python 被 gitlab-ce-16.10.6-ce.0.el7.x86_64 需要
注意:如果运行 GitLab 安装包时存在上述错误,则需要先安装 policycoreutils-python 依赖。
11.2.5、修改external_url配置
如上图所示,external_url 配置在 /etc/gitlab/gitlab.rb 文件中。
vi /etc/gitlab/gitlab.rb
如上图所示,external_url 配置默认值为 http://gitlab.example.com 。
如上图所示,将 external_url 配置修改为 'http://192.168.56.120:10005 。
其中,192.168.56.120 是 GitLab 所在的服务器的 IP ;10005 是自定义的端口,否则 GitLab 会占用 80 端口。
11.2.6、重新加载配置文件
gitlab-ctl reconfigure
注意:重新加载配置文件的过程比较耗时,耐心等待即可,出现 gitlab Reconfigured! 即操作成功。
11.2.7、查看端口占用情况
上图为 CentOS 自身所使用的端口。
上图为重新加载 GitLab 配置文件后,端口的变化。
新加载 Gitlab 配置文件,会自动启动或重启 Gitlab ;所以不用再重复执行启动或重启命令。
11.2.8、常用命令速查表
命令 | 作用 |
---|---|
gitlab-ctl start | 启动 GitLab |
gitlab-ctl restart | 重启 GitLab |
gitlab-ctl stop | 停止 GitLab |
gitlab-ctl reconfigure | 新加载 GitLab 配置文件 |
gitlab-ctl status | 查看 GitLab 状态 |
gitlab-rake gitlab:check SANITIZE=true | 检查 GitLab |
gitlab-ctl tail | 查看 GitLab 日志 |
11.2.9、查看管理员初始化密码
如上图所示,在第一次成功重新加载配置文件后,会为 GitLab 的 root 管理员账号随机生成一个初始化密码;该密码会在 24 小时后自动删除。
cat /etc/gitlab/initial_root_password
11.3、Gitlab的基本使用
11.3.1、访问GitLab登录页
如上图所示,使用在 11.2.5 节配置的 external_url (http://192.168.56.120:10005)即可访问 GitLab 登录页。
注意:如果访问不了登录页,可能是服务器的防火墙问题,关掉防火墙即可;
systemctl stop firewalld
11.3.2、登录root管理员账号
如上图所示,使用生成的初始化密码,登录root管理员账号。
如上图所示,这便是 GitLab 的主页。
11.3.3、修改界面语言为中文
如上图所示,点击“Preference”。
如上图所示,将 Language 选择为简体中文,然后保存修改。
11.3.4、修改root管理员密码
如上图所示,点击“编辑个人资料”。
如上图所示,在“密码”界面中,即可修改密码。
如上图所示,修改密码后,需要重新登录。
11.3.5、停用注册功能
如上图所示,GitLab 默认开启自由注册账号功能,但是 GitLab 一般用于企业内部,因此一般都会停用注册功能,账号应由 root 管理员创建。
如上图所示,取消“已启用注册功能”,然后保存更改即可。
如上图所示,停用注册功能后,登陆页面的“立即注册”入口消失了。
如上图所示,如果想恢复启用注册功能,在“管理中心”->“设置”->“通用”中,可以找到“注册限制”的配置项恢复配置。
11.3.6、创建新账号
如上图所示,在“管理中心”->“概览”->“用户”中,可以找到创建新用户的按钮。
如上图所示,设置新用户的名称、用户名和电子邮件。
如上图所示,设置新用户的权限为“管理员”。
如上图所示,新建用户成功后,会自动跳转到该用户的资料页,可以点击“编辑”按钮,为该用户重置密码。
如上图所示,为该用户设置密码后,点击“保存更改”即可。
11.3.7、创建远程仓库
如上图所示,点击“创建项目”。
如上图所示,选择“创建空白项目”。
如上图所示,设置仓库名称、仓库归属用户、仓库可见级别,然后点击“新建项目”按钮,即可创建一个远程库仓库。
如上图所示,仓库新建成功,可以获取到这个仓库的 HTTP 和 SSH 地址。
11.3.8、配置SSH密钥
如上图所示,点击“编辑个人资料”->“SSH密钥”,进入配置SSH密钥的界面;然后点击“添加新密钥”按钮。
如上图所示,将在本地生成的 SSH 公钥复制到 GitLab,然后点击“添加密钥”即可完成SSH密钥的配置。
提示:关于本地生成和查看的 SSH 公钥方式,请参考7.10.2 和 7.10.3 小节。
如上图所示,已成功在 GitLab 中添加了一个本地电脑生成的公钥。
这样一来,以后在本地电脑,使用远程仓库的 SSH 地址执行 push (推送)命令的时候,就不需要登录了。
11.3.9、生成访问令牌
如上图所示,点击“编辑个人资料”->“访问令牌”,进入配置访问令牌的界面;然后点击“添加新令牌”按钮。
如上图所示,在添加访问令牌的配置界面中,设置该访问令牌的名称(任意名称,本例为for_idea),设置该令牌的过期时间,还有设置该令牌的权限(本例选中api,即全权限);然后点击“创建个人访问令牌”即可生成一个访问令牌。
如上图所示,访问令牌已成功生成。
注意:该访问令牌相当于 GitLab 的账号密码,所以不能向陌生人透露。
此外,该访问令牌要尽快复制保存,否则刷新页面后就消失;如果没能及时保存,也可以删除重新生成一个。
11.4、IDEA集成GitLab
11.4.1、安装GitLab插件
如上图所示,在“File”->“Settings”->“Version Control”中可以看到,IDEA 默认没有和 GitLab 的相关的功能,因此需要额外安装 GitLab 插件。
如上图所示,在“Plugins”->“Marketplace”中,搜索“GitLab”,即可找到 GitLab 插件来安装。
如上图所示,安装完成插件后,需要重启 IDEA 才能使用该插件。
如上图所示,GitLab 插件安装成功后,可以在“Version Control”中找到和 GitLab 的相关的功能。
11.4.2、配置GitLab服务器
如上图所示,在“Version Control”->“GitLab”中,点击“Add New GitLab Server”按钮,在弹窗中,配置 GitLab 服务器的地址。
注意:这里使用到了 11.3.9 节生成的访问令牌。
11.4.3、分享项目到GitLab
11.4.3.1、打开分享弹窗
如上图所示,点击“VCS”->“Import into Version Control”->“Share Project on GitLab”,即可打开分享项目到 GitLab 的弹窗。
11.4.3.2、设置远程库属性
如上图所示,在弹窗中设置远程库的名称(本例为 gitlab_gittest)、远程库的分组(本例为 lb-liaojy )、远程库的连接类型(本例为 SSH)以及远程库的可见级别(本例为 Public )。
11.4.3.3、分享操作效果
如上图所示,确认进行 SSH 连接。
如上图所示,在弹窗中点击“share”按钮(相当于创建远程库然后push操作)后,项目成功地被分享到 GitLab 。
如上图所示,在 GitLab 中可以看到远程库已存在。
关于如何使用 IDEA 推送更新到远程库、拉取更新到本地库以及克隆远程库到本地,请参考10.4.4、10.4.5 和 10.4.6 节,本文不再赘述。
11、Git之自建项目托管平台(GitLab极狐)的更多相关文章
- Git03 自建代码托管平台-GitLab
1 GitLab 简介 GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有wiki 和 issue 跟踪功能.使用 Git 作为代码管理工具, ...
- Git系列①之仓库管理互联网托管平台github.com的使用
互联网项目托管平台github.com的使用 1.安装git客户端 # yum install -y git 配置git全局用户以及邮箱 [root@web01 ~]# git config --gl ...
- 干货!Git 如何使用多个托管平台管理代码
考虑到github不能免费创建私有仓库原因,最近开始在使用码云托管项目,这样避免了连接数据库的用户密码等信息直接暴露在公共仓库中.今天突然想到一个点,就是能不能同时把代码推送到github和码云上呢? ...
- 国内git项目托管平台
以前一直使用github托管项目,最近换了阿里云的vps,连接github出奇的慢,找了一下国内的代码托管平台. 有几个都不错,我刚好有csdn的账号,就试了一下csdn的托管平台,创建一个项目,发现 ...
- git几个必知托管平台
程序员必须知道的几个Git代码托管平台 说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的 ...
- 如何导入外部Git仓库到中国源代码托管平台(Git@OSC)
git clone --bare http://git.rcrtm.com/git/dianli.git git clone --mirror https://git.oschina.net/cand ...
- 【开发工具 - Git】之本地项目托管到远程仓库
这里所说的“本地项目托管到远程仓库”,说的是:例如,我们在本地有一个写了很长时间的项目,现在想要托管到GitHub或码云上进行版本控制. 这个过程大致需要以下几个步骤: (1)在本地初始化Git项目本 ...
- 代码托管平台(Git)
1,可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS社区.GitHub真正 迷人的是它的创新能力与Geek精神,这些都是无法模 ...
- Git 本地项目上传至托管平台(OsChina/GitHub)
为了方便自己的代码管理,通常是把自己的写的一些小项目分享到GitHub 或者git.oschina上面! 区别: GitHub 只能创建公开的项目,国外的,速度慢! git.oschina 开源中国的 ...
- 探讨 Git 代码托管平台的若干问题
关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...
随机推荐
- 【jetson nano】yolov5环境配置tensorrt部署加速
安装pytorch Nano上预装的Jetpack版本为4.6.1,Python为3.6.9,CUDA环境为10.2.在PyTorch for Jetson中可以下载不同版本的torch,torch& ...
- 基于WebSocket的modbus通信(三)- websocket和串口
WebSocket传递ModbusTCP数据包 错误纠正 上一篇还有个错误,就是客户端写数据时服务端不需要响应,但我的服务端响应了的.我选择改客户端,把写数据时接收到的响应丢弃. PrintBytes ...
- 01.Alpine编译glibc
概要 本文档采用glibc2.28版本作为示例,模拟内网环境无法访问github等开源社区 为精简docker容器镜像,采用Alpine镜像,需要手动编译glibc源代码 制作编译好的glibc二进制 ...
- 一周万星的文本转语音开源项目「GitHub 热点速览」
上周的热门开源项目让我想起了「图灵测试」,测试者在不知道对面是机器还是人类的前提下随意提问,最后根据对方回复的内容,判断与他们交谈的是人还是计算机.如果无法分辨出回答者是机器还是人类,则说明机器已通过 ...
- ElasticSearch性能原理拆解
逐层拆分ElasticSearch的概念 Cluster:集群,Es是一个可以横向扩展的检索引擎(部分时候当作存储数据库使用),一个Es集群由一个唯一的名字标识,默认为"elasticsea ...
- ES5的继承语法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- mongodb基于角色的访问控制
https://www.mongodb.com/docs/v4.4/tutorial/enable-authentication/ https://www.mongodb.com/docs/manua ...
- Redis的特点什么是?
a.支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set).hyperloglog(基数估算) b.支持持久化操作,可以进 ...
- IT运维全面数字化|芯片设计行业领跑打造运维流程闭环
在当今数字化转型的浪潮中,科技行业正经历着前所未有的变革.随着5G.人工智能.物联网等新兴技术的快速发展,企业对于高效.智能的运营模式的需求日益迫切. 芯片设计公司作为科技产业链中的关键一环,不仅要在 ...
- vue3实现模拟地图上,站点名称按需显示的功能
很久很久没有更新博客了,因为实在是太忙了,每天都有公司的事情忙不完....... 最近在做车辆模拟地图,在实现控制站点名称按需显示时,折腾了好一段时间,特此记录一下.最终界面如下图所示: 站点显示需求 ...