git 服务器搭建,在自己服务器上搭建私有仓库

创建一个简单的私人Git版本控制服务器,首先得有个服务器(屁话)。这种方式适合人比较少的情况,管理不需要很复杂,只要增加几个账号就能搞定。

如下面的情况,有一个服务器,两个客户端。

服务器:Debian7.5 (192.168.10.14)
用  户:git (git-shell)
仓  库:sample.git
地  址:[email protected].168.10.14:/home/git/sample.git

客户端:Mac    mymac.pub(mac git公钥)
       win7   mywin.pub(win7 git公钥)

简单步骤:

  • 1、安装git服务,并创建git账号
  • 2、创建示例仓库sample
  • 3、导入客户端公钥
  • 4、客户端连接并提交内容
  • 5、修改Git权限,只使用git-shell命令
    -- OK --

一、安装git

直接通过apt-get安装git。使用这个方式比较简单,当然也可以使用git源代码自己编译最新版本。

# apt-get update
# apt-get install git -y

1.1 创建git用户

创建git账户并登录,直接指定用户目录到/home/git

# useradd git -d /home/git -m -s /bin/bash
# su git

添加用户 user add
-d:指定用户目录
-m:如果目录不存在则创建
-s:可以指定用户使用的命令

二、创建sample库

创建库很简单,注意使用--bare参数。作为代码仓库服务器并不会在上面修改东西,所以只要有相关提交日子就可以。

$ cd ~
$ git init --bare sample.git

三、设置SSH Key

收集客户端公钥,复制到服务器上。 客户端当前账号RSADSA的数字签名文件id_rsa.pub.ssh用户目录中。通常情况下windows在 %userprofile%\.ssh 目录中,Mac在~/.ssh目录中。

mac上可以直接使用下面命令复制粘贴板上,或使用ssh上传

$ pbcopy < ~/.ssh/id_rsa.pub

win7上可以打开Git GUI界面有个帮助->show SSH Key菜单,如果没创建过可以点击创建SSH的签名文件,并复制公钥保存到服务器上。如果使用第三方的SSHKey服务,那可能实际位置会有些差异。

生成本地用户的签名文件,并把客户端上公钥导入到服务器上。如果有多个的话可以放在一个目录中,方便导入。如果是团队人比较多这种方式可能就不太适合了。

如把客户端的key文件mymac.pubmywin.pub导入。

$ ssh-keygen -t rsa -b 4096
$ cat mymac.pub >> ~/.ssh/authorized_keys
$ cat mywin.pub >> ~/.ssh/authorized_keys

3.1 客户端获取sample库,并增加文件上传到服务器

在Mac客户端获取。

$ git clone [email protected].168.10.14:/home/git/sample.git
Cloning into ‘sample‘...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

获取成功OK,增加一个文件,并提交到服务器上

$ cd sample
$ cat >> readme.md
first file.
^c
$ git add .
$ git commit -m "first commit"
$ git push

3.2 服务器上查看状态

$ git log
commit 8b070256af351b43a74753f0b05969fcfe9c7310
Author: moguf <[email protected].com>
Date:   Sun Apr 3 20:49:17 2016 +0800

    first commit

3.3 在Win客户端获取

windows上可以直接使用gitTortoiseGit获取。

[email protected].168.10.14:/home/git/sample.git

新建一个文件并提交到服务器上。在服务器上通过git log就能看到第二提交的内容。mac客户机上git pull能看到刚才新加的文件。

这样Git服务器仓库功能基本完成。

四、安全问题

为安全考虑Git账号只允许使用git-shell。在passwd文件中找到git用户,把/bin/bash直接修改成/usr/bin/git-shell 登录root账号,并修改git的用户权限。

$ su
# vim /etc/passwd

这样git用户只能git-shell命令不能登录了。

使用 su git 命令就会出现下面提示,git用户就无法登录到shell,这样就OK了。

# su git
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

五、数据仓库迁移

上面的情况是空仓库,如果原来已经有在使用的仓库,想迁移到新仓库。

mac 下切换

先看一下remote的名字。

$ git remote
origin

一般可以看到origin,这个就是原来仓库名称。使用git remote set_url命令更换地址,如新地址是[email protected]:/home/git/sample.git

$ git pull
$ git remote set-url origin [email protected].168.10.14:/home/git/sample.git
$ git push
  • 获取原来最新代码
  • 切换到新地址
  • 提交当前库内容

win7下切换

如果有装‘TortoiseGit’。直接右击当前目录,进入Settings把Remote中地址替换掉。没装就用上Git自带的,使用上面命令替换。

提示:这种方式在空仓库下迁移比较方便,如果新地址有数据那就比较麻烦了。

六、其它相关:从源码安装Git

系统提供的包比较文档,当然可能会发现有些不得不安装最新版本才能解决。反正会有各种原有会须要升级git。

6.1 安装依赖包

$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc xmlto docbook2x

6.2 下载编译

一般的编译安装方法,makemake install

$ wget https://github.com/git/git/archive/v2.9.1.tar.gz
$ tar fvxz v2.9.1.tar.gz
$ cd git-2.9.1
$ make prefix=/usr all doc info
$ su
# make prefix=/usr install install-doc install-html install-info

安装完成后验证一下git版本

# git --version
git version 2.9.1

上面的方法是全局安装的,如果须要更细节的控制安装可以参考git提供的安装帮助原始文档

提示: 最新版本获取在github上 https://github.com/git/git/releases

6.3 磁盘爆了!

上面的依赖包尺寸有些大。虚拟机本来就是用来测试的,分配的磁盘空间比较小。发生了磁盘空间不足问题,100%占用-_-!!有些杯具,这是意外中的意外。可以使用df -hl命令查看剩余空间。

[email protected]:/home/abc# df -hl
Filesystem              Size  Used Avail Use% Mounted on
rootfs                  2.5G  2.5G     0 100% /
udev                    10M     0   10M   0% /dev
tmpfs                   76M  224K   76M   1% /run
/dev/disk/by-uuid/371b6c92-bdc9-417d-b37f-fae99e6ecce1  2.5G  2.5G     0 100% /
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   213M     0  213M   0% /run/shm
/dev/sda6               5.2G  139M  4.8G   3% /home
tmpfs                   213M     0  213M   0% /tmp

简单清理 删除缓存文件

清理旧版本的软件缓存

# apt-get autoclean

清理所有软件缓存:

# apt-get clean

七、相关问题

提示:
可能会出现 bash: vim: command not found 。安装个vim 或使用vi命令都可以。
apt-get install vim -y

更多相关git的问题可以直接到官网查找。有中文版本帮助,内容比较详实。

git 官网:git-scm.com

时间: 2024-10-22 17:20:49

git 服务器搭建,在自己服务器上搭建私有仓库的相关文章

在Centos7上搭建Nginx+rtmp服务器

在VPS服务器上配置一个直播环境,在iOS客户端实现推流到直播服务器,通过VLC播放器实现拉取服务器上的流观看直播. 效果图 Demo_01 Centos7上搭建Nginx+rtmp服务器 今天第一次在Centos7上搭建Nginx+rtmp服务器,以前在Mac上成功搭建,所以今天想在Centos7上试一试,在此记录一下,过程还是比较顺利. (1)准备需要的模块及工具(nginx-rtmp-module,openssl和git) 1.使用yum安装git [root~]# yum -y inst

转载 ----MAC 上搭建lua

MAC 上搭建lua 其实mac上搭建lua环境,google上大把资料,我只是整合一下,因为小弟搭建的时候确实碰到一些问题. 下载和安装lua:(转自这里) 1.  下载最新版的lua-5.2.0 请点击,然后解压 2. 运行"终端"进入到该文件夹下  ,主要是cd [文件夹名] 3.在"终端"输入    make macosx   (回车)4.在"终端"输入    make test  (回车)正常情况下会出现: src/lua -vLua

使用Rancher和私有仓库快速搭建Kubernetes集群

来来来,先出题:Rancher可以快速部署Kubernetes,但其使用的gcr.io上的镜像无法下载怎么办?使用Rancher可以快速部署Kubernetes,但我们需要下载哪些镜像?Rancher支持私有镜像仓库,如何设置呢? 解题思路: 国内网络虽然不能直接访问gcr.io服务器,但是能够访问hub.docker.com镜像仓库,而hub.docker.com能够访问gcr.io服务器.利用这个特性,以及hub.docker.com自身的"Create Automated Build&qu

centos 7.1搭建本地私有仓库返回500错误

之前有一篇写到在ubuntu14.04系统上安装私有仓库,遇到了两个问题,本次在centos7上遇到了另外一个问题. 安装完仓库并运行registry镜像之后发现push和pull操作都会返回一个500的错误提示,后来发现原来是selinux防火墙没有关(centos7安装完docker之后默认selinux防火墙就是开着的),解决办法如下: vi /etc/sysconfig/selinux 修改该行 SELINUX=disabled

docker私有仓库的搭建和使用。

1.下载仓库镜像docker pull registry 2.创建私有仓库容器-d表示后台启动docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 3.防火墙解除5000端口限制firewall-cmd --zone=public --add-port=5000/tcp --permanent 4.验证私有仓库是否启动成功http://192.3.8.12:5000/v2 5.打包镜像docker

在阿里云创建私有仓库上传并拉取

在阿里云上创建私有仓库,为后面的微服务上传镜像做准备,后面会安装harbor 操作指南: 1. 登录阿里云Docker Registry $ sudo docker login --username=wgr332574835 registry.cn-hangzhou.aliyuncs.com 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码. 您可以在产品控制台首页修改登录密码. 2. 从Registry中拉取镜像 $ sudo docker pull registry.cn-han

Ubuntu上搭建Git服务器

下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无密码登陆 通过命令 sudo apt-get install openssh-server,安装SSH服务. 通过命令 ps –e|grep ssh,查看ssh服务是否启动. 通过以上命令,我们为Ubantu系统安装SSH服务,并配置SSH无密码登陆,首先我们修改主机和ip配置文件:gedit /e

服务器上的 Git - 在服务器上搭建 Git

http://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git 在服务器上搭建 Git 现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议. NOTE 这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac

如何在服务器上搭建git服务器

参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 http://wlog.cn/soft/git-ssh-server-for-debian.html 在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就

在阿里云上搭建自己的git服务器

这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: $ yum install git # centos $ apt-get install git # ubuntu 上面是直接用root登陆服务器进行操作,也是为了演示方便. git和mysql不一样,mysql在安装时,得安装mysql-server,即mysql服务器,git是分布式的,每一个