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 ...
随机推荐
- js 判断闰年
首先,我们需要了解闰年的判断方式 1.能被4整除 2.并且不能被100整除 3.或者被400整除的 其次我们再来回顾下函数封装的知识,所谓的函数封装就是将一段函数封装成一个工具,有人用到了拿过来就可以 ...
- (八十八)c#Winform自定义控件-转子
官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...
- mongodb常用数据库指令
通过客户端的命令进入到mongodb服务中 mongo命令进入客户端 show dbs 查看数据库 show tables/show collections 查看集合(查看当前库里面的表) db 查 ...
- Vulkan Support Check and Dynamic Loader C++ code sample
很多时候不想静态依赖VulkanSDK所提供的静态库,因为会遇到一些过早的电脑不支持vulkan, 那么就需要使用动态加载vulkan-1.dll(for Windows)或libMoltenVK.d ...
- 关于 cnblogs 中的神秘操作
关于 cnblogs 中的神秘操作 批量替换 利用 metaweblog 批量操作 代码参考:jeefies - jcnapi 不是很完整 其中 BLOGS_BLOGID 指的是 https://ww ...
- minos 1.1 内存虚拟化——hyp
首发公号:Rand_cs minos 1.1 内存虚拟化--hyp 内存虚拟化,目前理解主要两方面: 内存管理,没有虚拟化的情况时,对于 Linux 内核运行在物理硬件之上,内核需要管理物理内存,需要 ...
- json null (空值)不序列化
json null (空值)不序列化 JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.DefaultV ...
- Kubernetes监控手册04-监控Kube-Proxy
简介 首先,请阅读文章<Kubernetes监控手册01-体系介绍>,回顾一下 Kubernetes 架构,Kube-Proxy 是在所有工作负载节点上的. Kube-Proxy 默认暴露 ...
- maven常用命令大全(附详细解释)
1.常用打包命令 mvn clean package -Dmaven.test.skip=true -- 跳过单测打包mvn clean install -Dmaven.test.skip=true ...
- Unity下简易字符串指令调试
Unity下简易字符串指令调试 输入相应的字符串命令即可调用特定的方法,比如让角色等级提升,生成特定数量的Boss等 using System; using UnityEngine; using Sy ...