1. ================ git服务器安装 ====================
  2. CentOS安装Git服务器 Centos 6.4 + Git 1.8.2.2 + gitosis##
  3. .查看Linux系统服务器系统版本
  4. cat /etc/redhat-release # 查看系统版本
  5.  
  6. CentOS release 6.4 (Final)
  7.  
  8. ifconfig # 查看服务器的IP
  9. eth0
  10. Link encap:Ethernet HWaddr ::8B:FA::
  11. inet addr:192.168.100.202 Bcast:192.168.100.255 Mask:255.255.255.0
  12. inet6 addr: fe80:::8bff:fefa:/ Scope:Link
  13. UP BROADCAST RUNNING MULTICAST MTU: Metric:
  14. RX packets: errors: dropped: overruns: frame:
  15. TX packets: errors: dropped: overruns: carrier:
  16. collisions: txqueuelen:
  17. RX bytes: (365.7 MiB) TX bytes: (12.6 MiB)
  18. Interrupt:
  19. lo Link encap:Local Loopback
  20. inet addr:127.0.0.1 Mask:255.0.0.0
  21. inet6 addr: ::/ Scope:Host
  22. UP LOOPBACK RUNNING MTU: Metric:
  23. RX packets: errors: dropped: overruns: frame:
  24. TX packets: errors: dropped: overruns: carrier:
  25. collisions: txqueuelen:
  26. RX bytes: (0.0 b) TX bytes: (0.0 b)
  27. .在服务器上安装git及做些操作
  28. - 执行命令
  29. sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
  30. - 同时下载git-1.8.2.2.tar.gz文件,然后将其`mv` `/usr/local/src`目录。[git-1.8.2.2.tar.gz安装包下载地址][]
  31. cd /usr/local/src
  32. sudo tar -zvxf git-1.8.2.2.tar.gz
  33. cd git-1.8.2.2
  34. sudo make prefix=/usr/local/git all
  35. sudo make prefix=/usr/local/git install
  36. - 增加软连接
  37.  
  38. sudo ln -s /usr/local/git/bin/* /usr/bin/
  39. git --version #如果能显示版本号,即表示成功`
  40.  
  41. 3.在服务器安装gitosis
  42.  
  43. sudo yum install python python-setuptools
  44. cd /usr/local/src
  45. git clone git://github.com/res0nat0r/gitosis.git
  46. cd gitosis
  47. python setup.py install
  48. #显示Finished processing dependencies for gitosis==0.2即表示成功
  49. ================ 上面是别人的列子 ====================
  50. 我们这里使用一台服务器当做git服务器和客户端,操作git饿时候需要切换到git用户
  51. ================ git服务器端配置 ====================
  52. 服务器:安装git工具【root】/home
  53. yum install -y python python-setuptools git-core
  54. git clone git://github.com/res0nat0r/gitosis.git
  55. cd gitosis
  56. python setup.py install
  57. 这样提示表示安装成功:
  58. Using /usr/lib/python2.6/site-packages
  59. Finished processing dependencies for gitosis==0.2
  60. 服务器:新建一个git用户并创建管理git:【root】/home
  61. useradd -m git
  62. su - git
  63. 服务器:使用客户端ssh生成git管理【root切换git】/home
  64. ssh-keygen -t rsa
  65. scp ~/.ssh/id_rsa.pub root@服务器地址:/tmp/
  66. 生成ssh:
  67. ssh-keygen -t rsa -C "devil@meila.com"
  68. 客户端:使用客户端ssh生成git管理【git】/home
  69. gitosis-init<~/.ssh/id_rsa.pub
  70. 这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)。
  71. 客户端:下面需要在开发机克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。/home/git/data(目录没有则手动创建)
  72. git clone git@112.124.14.126:gitosis-admin.git //因为是同一台机器,所以可以用localhost
  73. 客户端:为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。gitosis.conf的格式如下:
  74. [gitosis]
  75. [group gitosis-admin]
  76. writable = gitosis-admin
  77. members = username #对应keydir下有一个 username.pub 公钥文件
  78. 客户端:现在可以按照这个格式增加新的项目。
  79. [gitosis]
  80.  
  81. [group gitosis-admin]
  82. writable = gitosis-admin
  83. members = username #对应keydir下有一个 username.pub 公钥文件
  84.  
  85. [group XXX]
  86. writable = XXX
  87. members = user1 user2 ... #多个用户用空格分开
  88. 假如这里新增了一个新的XXX项目:
  89. 同样用新用户的ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为user1.pub,更新gigosis-admin项目
  90. 客户端:更新项目在CentOS机器上克隆的gitosis-admin项目下执行下面的命令
  91. git add .
  92. git commit -a -m "add newuser"
  93. git push
  94. 完成之后,服务器就已经做好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push之后会自动生成。
  95. 客户端:创建新建的项目目录并添加
  96. mkdir XXX
  97. cd XXX
  98. git init
  99. touch hello.txt //创建一个空文件 才能提交成功
  100. git add hello.txt
  101. git commit -am '添加新项目'
  102. git remote add origin git@192.168.1.115:XXX.git
  103. git push origin master
  104. git push origin master //执行两遍
  105. 以上完成后看,XXX/.git/config文件里面是否有,如果没有增加或者执行命令
  106. [branch "master"]
  107. remote = origin
  108. merge = refs/heads/master
  109. 命令:(因此通过git config进行如下配置)
  110. git config branch.master.remote origin
  111. git config branch.master.merge refs/heads/master
  112. 个人电脑:克隆项目
  113. git clone git@192.168.1.115:XXX.git
  114.  
  115. 个人电脑提交代码后服务器同步更新:(添加自动更新)
  116. 文件位置:home/git/repositories/ecshop.git/hooks/post-receive
  117. #自动更新提交的代码到仓库 start
  118. cd /home/git/data/ecshop/ #ecshop是服务器客户端管理项目位置
  119. unset GIT_DIR #cd解决后还是在hoot目录下
  120. git pull origin master
  121. #自动更新提交的代码到仓库 end
  122.  
  123. 说明:
  124. hook脚本执行了cd之后,继续执行git语句拉取的时候还是在hooks文件夹下,而不是cd的文件路径。
  125. 上面主要是添加了unset GIT_DIR ,git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。
  126. ======================== 常见问题 ===========================
  127. 首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755
  128. 1. git操作需要输入密码
  129. 原因
  130. 公密未找到
  131. 解决
  132. 上传id_pub.rsa到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略
  133. 2. ERROR:gitosis.serve.main:Repository read access denied
  134. 原因
  135. gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
  136. 解决
  137. 使keydir的名称与gitosis中members所指的名称一致。
  138. 改为members = foo 或 公密名称改为foo@bar.pub

CentOS_6.5 64位系统,安装git服务器+客户端的更多相关文章

  1. Ubuntu 16.04 LTS 64位系统 安装Docker

    本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队 ...

  2. centos7.0 64位系统 安装PHP 支持 nginx

    1  安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...

  3. centos7.0 64位系统 安装PHP5.3 支持 nginx

    1  安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...

  4. 【转】如何在win10(64位系统)上安装apache服务器

    如何在win10(64位系统)上安装apache服务器 今天装了Apache服务器,下面是我总结的方法: 一,准备软件 1.64位的apache版本 传送门:http://www.apacheloun ...

  5. CentOS6.3(64位)下安装Oracle11gR2(64)服务器

    安装环境 Linux服务器:Centos6.3 64位 Oracle服务器:Oracle11gR2 64位 系统要求 1.Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内 ...

  6. Oracle 11g win7 64位【桌面类 && 服务器类】安装过程

    Oracle 11g  win7  64位[桌面类 && 服务器类]安装过程  一.首先,根据自己的操作系统位数(32位或64位),到官网下载相应的安装程序,如下图所示.       ...

  7. linux CentOs 7.4 64位 系统下 nuxt部署 、nginx 安装、node环境及软连接,pm2软连接

    一.nginx安装 1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2 ...

  8. 在64位系统上不能安装Matlab notebook的解决方案

    在64位系统上不能安装Matlab notebook的解决方案 过程分解 第一步:安装好matlab(附:Matalab R2015a界面) 第二步:在matlab中执行命令 >>note ...

  9. Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or dir

    问题: Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared obje ...

随机推荐

  1. hMailserver设置外部反病毒扫描程序

    刚在5dmail上发现有人提出一个问题,他在hmailserver的外部病毒扫描程序中使用了瑞星那个娱乐货,结果呢,说瑞星太勇猛了,所有附件都认为病毒了,这是怎么个情况呢? 先从hmailadmin里 ...

  2. WinForm 禁止调整大小、禁止最大化窗口

    这个设置代码必须添加到*.designer.cs中,就是自动隐藏的那部分: #region Windows Form Designer generated code 一般窗体设置的代码会生成到最后面, ...

  3. HDU 2444 The Accomodation of Students (偶图判定,匈牙利算法)

    题意: 有一堆的学生关系,要将他们先分成两个组,同组的人都不互不认识,如果不能分2组,输出No.若能,则继续.在两组中挑两个认识的人(每组各1人)到一个双人房.输出需要多少个双人房? 思路: 先判定是 ...

  4. android直接读取数据库文件

    public class Dictionary extends Activity  implements OnClickListener, TextWatcher{     private final ...

  5. mysql5.6子查询的优化

    https://dev.mysql.com/doc/refman/5.6/en/subquery-optimization.html Semi-join in MySQL 5.6   MySQL 5. ...

  6. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  7. csv文件与DataTable互相导入处理

    封装处理下,以后项目用到可以直接使用,比较简单. 1.首先看封装好的类 using System; using System.Data; using System.IO; using System.T ...

  8. 【C#】字符串与字符数组

    字符串与字符数组的相互转换. 字符串转换成字符数组: string ss="abcdefg"; char[] cc=ss.ToCharArray();     字符数组转换成字符串 ...

  9. support vector regression与 kernel ridge regression

    前一篇,我们将SVM与logistic regression联系起来,这一次我们将SVM与ridge regression(之前的linear regression)联系起来. (一)kernel r ...

  10. 《APUE》中的函数整理

    第1章 unix基础知识 1. char *strerror(int errnum) 该函数将errnum(就是errno值)映射为一个出错信息字符串,返回该字符串指针.声明在string.h文件中. ...