怎么在自己的服务器上建立git仓库

怎么在自己的服务器上建立git仓库,第1张

1架设Git服务器我们以Ubuntu为例。首先,在git服务器上创建一个名为'git'的用户,并为其创建一个ssh目录。并将其权限设置为仅git用户有读写权限$sudoaddusergit$sugit$cd$mkdirssh$chmod700ssh接下来,把开发者的SSH公钥添加到这个用户的authorized_keys文件中。假设你通过电邮收到了几个公钥并存到了临时文件里。重复一下,公钥大致看起来是这个样子:$cat/tmp/id_rsajohnpubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它们逐个追加到authorized_keys文件尾部即可,同时将authorized_keys设置为仅git用户有读写权限。$cat/tmp/id_rsajohnpub>>~/ssh/authorized_keys$cat/tmp/id_rsajosiepub>>~/ssh/authorized_keys$cat/tmp/id_rsajessicapub>>~/ssh/authorized_keys$chmod600~/ssh/authorized_keys现在可以用--bare选项运行gitinit来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。$cd/opt/git$mkdirprojectgit$cdprojectgit$git--bareinit这时,Join,Josie或者Jessica就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过shell登入主机并创建一个裸仓库目录。我们不妨以gitserver作为git用户及项目仓库所在的主机名。如果在网络内部运行该主机,并在DNS中设定gitserver指向该主机,那么以下这些命令都是可用的:#在John的电脑上$cdmyproject$gitinit$gitadd$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/projectgit$gitpushoriginmaster这样,其他人的克隆和推送也一样变得很简单:$gitclonegit@gitserver:/opt/git/projectgit$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用这个方法可以很快捷地为少数几个开发者架设一个可读写的Git服务。作为一个额外的防范措施,你可以用Git自带的git-shell工具限制git用户的活动范围。只要把它设为git用户登入的shell,那么该用户就无法使用普通的bash或者csh什么的shell程序。编辑/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你应该能找到类似这样的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改为/usr/bin/git-shell(或者用whichgit-shell查看它的实际安装路径)。该行修改后的样子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell现在git用户只能用SSH连接来推送和获取Git仓库,而不能直接使用主机shell。尝试普通SSH登录的话,会看到下面这样的拒绝信息:$sshgit@gitserverfatal:WhatdoyouthinkIamAshellConnectiontogitserverclosed这里提供的方法,组内所有成员对project都有读写权限,也就是说每个分支都可以push代码,如果需要更加细致的权限控制,请使用Gitosis或者Gitolite。2搭建Gitweb安装gitweb之后就可以通过网站访问我们的项目了。就像gitwebconf#pathtogitprojects(git)$projectroot="/opt/git";至此gitweb就可以使用了,现在可以通过config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="example@gmailcom,example2@gmailcom"#收件人列表envelopesender=projectgit@examplecom#送件人地址emailprefix="[Projectcommit]"#邮件标题前缀showrev="gitshow-C%s;echo"#不只显示有变化的文件,同时也显示改变的内容为了使邮件显示的更清楚,还要修改一下工程目录当中的description文件,在description文件中,默认第一行是项目名称,所以要在第一行填入该项目的名称,这个在邮件中会有显示。$vim/opt/git/projectgit/descriptionProject_A

Git 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序,它可以用作许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以让你的生活更轻松、更有条理。在这个 Git 系列中,我们将分享七种鲜为人知的使用 Git 的方法。

创建一个网站曾经是极其简单的,而同时它又是一种黑魔法。回到 Web 10 的旧时代(不是每个人都会这样称呼它),你可以打开任何网站,查看其源代码,并对 HTML 及其内联样式和基于表格的布局进行反向工程,在这样的一两个下午之后,你就会感觉自己像一个程序员一样。不过要让你创建的页面放到互联网上,仍然有一些问题,因为这意味着你需要处理服务器、FTP 以及 webroot 目录和文件权限。虽然从那时起,现代网站变得愈加复杂,但如果你让 Git 帮助你,自出版可以同样容易(或更容易!)。

Hugo 是一个开源的静态站点生成器。静态网站是过去的 Web 的基础(如果你回溯到很久以前,那就是 Web 的全部了)。静态站点有几个优点:它们相对容易编写,因为你不必编写代码;它们相对安全,因为页面上没有执行代码;并且它们可以非常快,因为除了在页面上传输的任何内容之外没有任何处理。

Hugo 并不是唯一一个静态站点生成器。 Grav 、 Pico 、 Jekyll 、 Podwrite 以及许多其他的同类软件都提供了一种创建一个功能最少的、只需要很少维护的网站的简单方法。Hugo 恰好是内置集成了 GitLab 集成的一个静态站点生成器,这意味着你可以使用免费的 GitLab 帐户生成和托管你的网站。

Hugo 也有一些非常大的用户。例如,如果你曾经去过 Let’s Encrypt 网站,那么你已经用过了一个用 Hugo 构建的网站。

Hugo 是跨平台的,你可以在 Hugo 的入门资源 中找到适用于 MacOS、Windows、Linux、OpenBSD 和 FreeBSD 的安装说明。

如果你使用的是 Linux 或 BSD,最简单的方法是从软件存储库或 ports 树安装 Hugo。确切的命令取决于你的发行版,但在 Fedora 上,你应该输入:

通过打开终端并键入以下内容确认你已正确安装:

这将打印 hugo 命令的所有可用选项。如果你没有看到,你可能没有正确安装 Hugo 或需要 将该命令添加到你的路径 。

要构建 Hugo 站点,你必须有个特定的目录结构,通过输入以下命令 Hugo 将为你生成它:

你现在有了一个名为 mysite 的目录,它包含构建 Hugo 网站所需的默认目录。

Git 是你将网站放到互联网上的接口,因此切换到你新的 mysite 文件夹,并将其初始化为 Git 存储库:

Hugo 与 Git 配合的很好,所以你甚至可以使用 Git 为你的网站安装主题。除非你计划开发你正在安装的主题,否则可以使用 --depth 选项克隆该主题的源的最新状态:

现在为你的网站创建一些内容:

使用你喜欢的文本编辑器编辑 content/posts 目录中的 hellomd 文件。Hugo 接受 Markdown 文件,并会在发布时将它们转换为经过主题化的 HTML 文件,因此你的内容必须采用 Markdown 格式 。

如果要在帖子中包含图像,请在 static 目录中创建一个名为 images 的文件夹。将图像放入此文件夹,并使用以 /images 开头的绝对路径在标记中引用它们。例如:

你可以在 themesgohugoio 找到更多主题,但最好在测试时保持一个基本主题。标准的 Hugo 测试主题是 Ananke 。某些主题具有复杂的依赖关系,而另外一些主题如果没有复杂的配置的话,也许不会以你预期的方式呈现页面。本例中使用的 Mero 主题捆绑了一个详细的 configtoml 配置文件,但是(为了简单起见)我将在这里只提供基本的配置。在文本编辑器中打开名为 configtoml 的文件,并添加三个配置参数:

在你准备发布之前不必(预先)在互联网上放置任何内容。在你开发网站时,你可以通过启动 Hugo 附带的仅限本地访问的 Web 服务器来预览你的站点。

打开 Web 浏览器并导航到 >在D盘新建一个目录,例如"D:\Git",并进入目录右键目录空白处选择"Git Create repository here",d出对话框点确认,这样即建立了一个本地Git仓库
在该仓库目录下创建一个测试项目文本文件,右键目录空白处,选择Git Commit -> "master" ,在d出对话框里输入提示注释,选择要加入的版本控制文件,确定即可提交
现在只是在本地实现使用Git管理项目,在此界面若显示Success则本地提交成功,接下来点击Push,把之前的改动递交到Git服务器上

1、环境准备
服务器:CentOS 73 + git (1831)
客户端:win10 + git (2170windows1)
2、服务器安装git
yum install -y git 
3、创建git用户,管理 git服务
[root@localhost home]# useradd git
[root@localhost home]# passwd git
4、服务器创建git 仓库
设置/home/git/repository-git 为git 服务器仓库,然后把 git 仓库的 owner 修改为 git 用户。
复制代码
[root@localhost git]# mkdir repository-git
[root@localhost git]# git init --bare repository-git/
Initialized empty Git repository in /home/git/repository-gt/
[root@localhost git]# chown -R git:git repository-git/
5、客户端安装git
下载 Git for Windows,地址:>

说明: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比对出英文与中文的补丁,将英文打补丁。第二是直接下载中文版,替换英文。

3Docker安装(推荐)

(1)配置docker镜像

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

(2)获取 GitLab 镜像

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

(3)启动容器

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10656167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存