git 服务器搭建,在自己服务器上搭建私有仓库
创建一个简单的私人Git版本控制服务器,首先得有个服务器(屁话)。这种方式适合人比较少的情况,管理不需要很复杂,只要增加几个账号就能搞定。
如下面的情况,有一个服务器,两个客户端。
服务器:Debian7.5 (192.168.10.14)
用 户:git (git-shell)
仓 库:sample.git
地 址:git@192.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
收集客户端公钥,复制到服务器上。 客户端当前账号RSA或DSA的数字签名文件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.pub和mywin.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 git@192.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 <moguf_notify@163.com>
Date: Sun Apr 3 20:49:17 2016 +0800
first commit
3.3 在Win客户端获取
windows上可以直接使用git或TortoiseGit获取。
git@192.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命令更换地址,如新地址是git@192.168.10.14:/home/git/sample.git
$ git pull
$ git remote set-url origin git@192.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 下载编译
一般的编译安装方法,make并make 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命令查看剩余空间。
root@sunroom:/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 安装及用法 github 代码发布 gitlab私有仓库的搭建
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 这个版本控制软件,有 svn还有git,是一个工具. git是由linux的作者开发的 git是一个分布式版本控制系统 ...
- Centos 7上Docker私有仓库Registry实战
1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...
- docker上传私有仓库报错
docker 1.17 版本搭建私有仓库,上传镜像报错:server gave HTTP response to HTTPS client” 系统环境:centos7docker版本:1.17(注意版 ...
- kubernetes集群搭建(2):docker私有仓库
kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...
- docker 基于现有镜像修改后保存,上传私有仓库
docker:/root# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3cb864be528 192.168.3 ...
- 转载 ----MAC 上搭建lua
MAC 上搭建lua 其实mac上搭建lua环境,google上大把资料,我只是整合一下,因为小弟搭建的时候确实碰到一些问题. 下载和安装lua:(转自这里) 1. 下载最新版的lua-5.2. ...
- Kubernets二进制安装(5)之私有仓库harbor搭建
在IP地址为192.168.80.50,机器名为mfyxw50上搭建私有仓库harbor harbor下载地址: harbor下载连接地址:https://github.com/goharbor/ha ...
- 使用Rancher和私有仓库快速搭建Kubernetes集群
来来来,先出题:Rancher可以快速部署Kubernetes,但其使用的gcr.io上的镜像无法下载怎么办?使用Rancher可以快速部署Kubernetes,但我们需要下载哪些镜像?Rancher ...
- centos 7.1搭建docker本地私有仓库返回500错误
之前有一篇写到在ubuntu14.04系统上安装私有仓库,遇到了两个问题,本次在centos7上遇到了另外一个问题. 安装完仓库并运行registry镜像之后发现push和pull操作都会返回一个50 ...
- Gradle5.x打jar包上传maven仓库
1.上传本地仓库 1.1 build.gradle 项目设置 plugins { id 'java' id 'maven' //引入maven插件 } group 'com.inkyi' //包名 v ...
随机推荐
- 【homework #1】第一次作业被虐感受
当大二暑假结束,我发现我还是没有熟练掌握一门编程语言时,我就知道苦日子要来了. 这不,才开学第三周,就已经被虐的体无完肤了.连编译课用C语言写的词法分析,都要写很久.Debug很久才能写出来,更别提大 ...
- github 下载部分文件夹
1.下载svn: 记得勾上: 2.配置环境变量,将svn的bin目录添加到环境变量 3.svn checkout [链接](你的下载的项目地址) 不过,注意,要改一下哦: 比如我要下载todo项目里的 ...
- Unity 脚本<2>
UnityEngine; using System.Collections; public class PlayerControl : MonoBehaviour { [HideInInspector ...
- js处理浮点数计算误差
众所周知,浮点计算会产生舍入误差的问题,比如,0.1+0.2,结果应该是0.3,但是计算的结果并不是如此,而是0.30000000000000004,这是使用基于IEEE754数值的浮点计算的通病,j ...
- Codeforces Round #440(Div.2)
一句话题意: A:给出两个长为\(n\),\(m\)的的数组,每个数在\(1\)到\(9\)之间,求出一个最小的数使得至少有一位出现在一个数组中,且至少有一位出现在另一个数组中.\(n,m\leq9\ ...
- cocoaPod的Podfile文件的创建和内容格式
Podfile创建: 1.终端中,cd到项目总目录(cd +路径名) cd/........./......../...../项目名 2.终端中继续建立Podfile(配置文件) touch Podf ...
- pat 甲级 1022. Digital Library (30)
1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...
- Session 存储和失效方式
Session 一般的操作是放在本地的Asp.net StatService上.实现进程隔离,方便Session操作,下面说说Session各属性. 1)不使用Session <sessionS ...
- ubuntu 配置虚拟主机
ubuntu下Apache虚拟主机的配置 启用站点停用站点方法 a2ensite/a2dissite 比如添加一个ecshop 的虚拟机 首先到/etc/apache2/site-availa ...
- 先将Excel导入到gridview再添加进数据库【Excel批量添加】
原文发布时间为:2008-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 前台: <%@ Page Language="C#" AutoEventWireup=& ...