搭建git服务器web界面 git服务端

私有化代码仓库Gitlab的落地与应用(一)

前段时间,我接到任务:尝试搭建一个私有化的代码仓库给前端团队使用。之前我用Docker搭建过一个Gitlab,但使用过程中遇到了很多问题,维护起来也比较复杂,所以我决定按照传统方法重新搭建。到目前为止,服务已经平稳运行了数月。本文主要记录《私有化代码仓库Gitlab的落地与应用》系列(一):Gitlab传统搭建方式及后台维护,内容主要分为以下几个部分:

一、Gitlab简介

GitLab是一个由GitLabInc.开发的开源应用程序,使用Ruby on Rail开发,主要用于实现一个自托管的Git项目仓库。用户可以通过web界面访问公开或私人项目。它使用Git作为代码管理工具,并在此基础上搭建web服务。GitLab的功能与GitHub类似,包括浏览源代码、管理缺陷和注释,以及管理团队对仓库的访问。GitLab专门为Unix操作系统开发,不能在Windows操作系统上运行,因此需要在Linux虚拟机或Docker上安装。GitLab分为社区版(Community Edition)和企业版(Enterprise Edition)。

二、Gitlab搭建步骤

1.安装依赖

2.下载镜像文件并上传至服务器

国内镜像地址:mirrors.tuna.tsinghua.edu.cn...

3.安装Gitlab

4.配置Gitlab

编辑配置文件:

主要涉及两处改动:

5.启动Gitlab

6.访问Gitlab

192.168.1.122:8090

三、常见问题及解决

1.前端页面访问出现502

出现502可能有以下原因:

通过后台运行日志,排查如果是因为端口被占用引起的,可以按照上述修改配置文件方法,将配置文件中的端口号修改即可,修改后需要按照第4步重新加载配置文件、重启服务。更多配置信息,可以在/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml中进行查看。

四、Gitlab配置信息及常用操作命令

1.常见配置

默认安装的gitlab,主要有四个目录:

◆/opt/gitlab/#主目录

◆/etc/gitlab/#放置配置文件

◆/var/opt/gitlab/#各个组件

◆/var/log/gitlab/#放置日志文件

2.常用命令

◆ gitlab-ctl start#启动所有 gitlab组件;

◆ gitlab-ctl stop#停止所有 gitlab组件;

◆ gitlab-ctl restart#重启所有 gitlab组件;

◆ gitlab-ctl status#查看服务状态;

◆ vim/etc/gitlab/gitlab.rb#修改gitlab配置文件;

◆ gitlab-ctl reconfigure#重新编译gitlab配置;

◆ gitlab-ctl tail#查看日志;

◆ gitlab-ctl help#查看相关的帮助

五、代码仓库数据迁移

1.旧服务器数据手动备份

先停掉gitlab,然后执行备份命令

生成的备份文件会存在/var/opt/backups/目录下,生成的文件名如1633777959_2021_10_09_14.0.6_gitlab_backup.tar,其中14.0.6是当前gitlab的版本号,恢复时使用的gitlab必须是同样的版本号,否则没法进行恢复。该文件里面包含了所有user、group、git repository数据。

2.新服务器上恢复数据

将备份文件复制到新服务器的/var/opt/backups/目录下,停掉gitlab的puma、sidekiq两个服务,然后执行恢复操作

特别注意:

六、代码仓库自动备份方式一:使用gitlab配置文件设置自动备份

1.编辑/etc/gitlab/gitlab.rb文件,找到以下内容并按照如下配置:

2.更新配置

方式二:使用Linux系统crondtab服务自动备份

1.配置定时任务:crontab-e

查看定时任务:crontab-l

0 2***/opt/gitlab/bin/gitlab-rake gitlab:backup:create表示每天凌晨两点执行备份命令

设置cron服务开机自启:systemctl enable crond.service

修改后重启cron服务:systemctl restart crond

【tips】:

2.自动上传gitlab的备份文件到另一台服务器

1)设置两台服务器免密登录

2)编写自动上传备份文件shell脚本:gitlab-upload.sh,内容如下:

编写完成后要对文件赋予执行权限:chmod+x gitlab-upload.sh

3)设置crondtab定时任务

执行crondtab-e命令,设置为每天凌晨三点执行远程传输备份文件任务,内容如下,

保存后要重载crond服务:systemctl reload crond.service

七、小结

总的来说,Gitlab的搭建过程比一般软件的搭建要繁琐,另外像数据自动备份、数据迁移所用到的Linux技能也较多,可以按需配置和操作。最后,总结一下本次用到的Linux技能:

GitLab搭建个人(或公司)版本控制系统

说明:Git,Github,GitLab三者关系。

Git-是一款自由和开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。(svn是集中化的版本控制系统)。

GitHub-是一个面向开源及私有软件项目的托管平台(也就一个网站),提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等。它可以托管各种git库,并提供一个web界面。被戏称为“全世界最大的同性交流社区”。

GitLab-基于Git的项目管理软件。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

当然啦国内开源中国出的“码云”,第一次听得人还以为是“马云”。我酱紫。它跟Github功能差不多,都能建立公有和私有的仓库。不过嘛感觉有点封闭,社区没有Github热闹。

有的人就说啦,我完全可以在Github或者GitLab上做远端代码仓库,为啥还要倒腾GitLab自建代码托管系统?就一个字:“代码安全性”(公司保密规定)。对于公司来说,GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:

一、自建代码托管系统都需要做些什么工作?

1.选择开源软件

Git大家族的 GitLab,它提供了完善的用户权限管理,除了涵盖 Git所有的功能,同时又提供方便的后台管理。分别有CE(社区版)、EE(企业版)、OM(RPM包完整版)三个版本,目前市面上开发者们的普遍选择是使用 CE版的源码,成本较低且相对方便。

2.硬件设施方面

如果是对于中小型企业来讲,自建机房一般成本较高,所以除非是大型集团企业。现在市面上存在太多的云服务器厂商,平均价格多在 5000元/年以上,都是不错的选择。

可能遇到的坑:

3.由于个人眼界以及信息不对称,目前大部分公司都是在公司局域网内自行用GitLab搭建代码托管系统。部署Gitlab是对服务器有配置要求的建议是CPU两核,内存4G以上。个人经验,勿喷啦。

二、搭建过程(这里仅是作者接触的,其实还有很多更高级的盘法)

Gitlab的服务构成

1.搭建方法分为:传统方式安装GitLab和Docker安装(推荐)。

2.传统安装过程(平台使用centos7安装)

安装和配置必要的依赖项:

安装Postfix以发送通知邮件:

在安装Postfix期间,可能会出现配置屏幕。选择“Internet Site”并按enter键。使用您的服务器的外部DNS以“mail name”并按enter。如果出现额外的屏幕,继续按enter键接受默认值。

添加GitLab镜像源并安装gitlab服务器:

注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口。

重置并启动GitLab:

访问 GitLab页面:如果没有域名,直接输入服务器ip和指定端口进行访问

获取/修改超级管理员root的密码:

最后我们使用默认的账号:root和刚刚设置好的密码12345678进行登录。

后面的步骤配置SSH key,git Bash的global config等初始化设置跟GitHub一样。可是还有一点就是“汉化”。(英文不好的小伙伴)但是有一定风险,后面我打开报502错误。有两种方法:用git比对出英文与中文的补丁,将英文打补丁。第二是直接下载中文版,替换英文。

3.Docker安装(推荐)

(1)配置docker镜像

直接从 docker hub获取的话速度非常慢,所以需要配置一个镜像。我使用的是 daocloud.io提供的加速器,速度很快。

(2)获取 GitLab镜像

下载完成后,查看镜像列表

(3)启动容器

3个--publish指定容器与主机的端口映射,分别是 http、https、ssh

3个--volume指定数据卷的映射,分别是 gitlab的配置、日志、数据

(4)配置外部访问 URL

修改 gitlab配置文件:

找到 external_url这一项修改为自己服务器的访问地址:

保存后,重启容器

(5)访问

初次访问时,gitlab要求我们重置管理员密码,修改完成后登录。默认用户root。

当然以上为个人实验,公司里面大部分为CTO等大佬已经搭建完毕,我们主要是折腾。

最后推荐个人用很顺手的工具: SourceTree(可视化界面的Git),当然啦要想成为大牛或者装13也好,还是从Git Bash里敲命令行。

如何在自己的linux服务器上搭建网站

1.根据机器的用途,许多服务是不需要的。如果Linux只是一个桌面,那么就不需要sendmail、HTTPD和许多其他服务。

如果您的服务器只是一个Web服务器,您还可以关闭许多服务。为此,转到administration菜单并检查服务项。只需撤消您不想启动的任何服务选项。

2.使用轻量级窗口管理器,而不是GNOME或KDE。我插入内存占用窗口管理器的原因是,它们极大地减少了图形化(界面)启动时间。而不必等待额外的30到60秒来启动GNOME或KDE。

3.确保内网的正常使用。指定内联网LINUX访问地址,并确保LINUX服务器的SSH服务正常工作。

4.在被访问的LINUX服务器上安装nat123clientLINUX并使用它。登录网站,左用户中心,添加端口映射。选择完整的端口映射类型。

填写内部网LINUX固定地址端口,外部网络访问域名。您可以使用自己的域名或二级域名。

5.安装nat123客户机并在外部网络访问端使用访问器。

阅读剩余
THE END