git服务器弄了半天终于搞定了,还是记录下吧,不然下次有得忘了

流程:

服务器

  • 构建git目录

    • git用户,git组作为仓库管理
    • ssh授权(远程无需密码接入)
    • hook(post-receive)自动部署代码到网站目录
  • 网站目录
    • 准备接代码就行啦

客户端

  • 建立开发目录
  • ssh连接key生成
  • git操作。。。

开始实作吧!

先是git源码编译

https://www.kernel.org/pub/software/scm/git/

下载最新版本git(.gz)到/usr/local

安装

tar -zxf git-2.2.1.tar.gz
cd git.2.2.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install

源码编译是不如 yum install git-all 方便,但是版本可以更新点,笔者用的阿里centos6.5,对应的git版本只能到1.7.2

自己装的git没有在系统PATH环境里,用修改 /etc/profile 的方法手动贴入

vim /etc/profile
#找到 PATH=/usr/local/php/bin:$PATH 这行修改为
PATH=/usr/local/php/bin:/usr/local/git/bin:$PATH
#保存,退出shell重新连接就生效了

git仓库

groupadd git
useradd git -g git
cd /home/git
mkdir repo.git #名字自定义
cd repo.git
git init --bare #生成裸仓库,存放除代码的版本信息
chown -R git:git /home/git/repo.git

这里有一点要注意,网上有为安全考虑,只为git用户的ssh连接启用git-shell,源码安装需如下操作

#修改/etc/passwd
vim /etc/passwd
#找到git的用户设置 如:
git:x:502:503::/home/newbmiao:/bin/bash #将最后一个执行文件路径改为
git:x:502:503::/home/git:/usr/local/git/bin/git-shell #在安装包bin目录下
#要启用还需源码报的git-shell命令交互
cp /usr/local/git-2.2.1/contrib/git-shell-commands /home/git/
#这样用户用git账户ssh连接后只能使用git命令了

ssh免密码验证连接

su git #切换git身份
cd /home/git/
ssh-keygen -C 'your@email.com' -t rsa #为你生成rsa密钥,可以直接一路回车,执行默认操作

客户端生成密要方式同上。

生成密钥后,会出现

.ssh
├── id_rsa
└── id_rsa.pub #公钥 服务端需要里边内容验证连接着身份

在客户端上,打开 id_rsa.pub 复制里边内容

vim /home/git/.ssh/authorized_keys
#粘贴客户端生成的公钥,保存退出
#然后要启动sshd和git-daemon
/etc/init.d/git-daemon restart
#上边git-daemon在安装目录下/usr/local/git/libexec/git-core/git-daemon,直接复制过去就行
/etc/init.d/sshd start

这样服务端的git仓库就搭好了

客户端 git开发

在客户端(笔者的是window的git bash)git操作提交试试

#进入一个空的工作目录
git init #初始化git
vim test
#编辑些内容保存退出
git add test #添加到git缓存中
git commit -m 'init test' #提交修改
#添加远程git仓库
git remote add origin git@your_host_name:/home/git/repo.git
git push origin master #这样就同步到服务器了

其他人要同步

#克隆和推送:
git clone git@your_host_name:/home/git/repo.git
cd repo
vim README
git commit -am 'fix for the README file'
git push origin master

代码同步(HOOK)

上边git用于做了中心的版本控制

但是还想让服务器接到修改更新后自动同步代码到网站目录中,便于测试开发

如下操作是可以实现

#假定网站目录在/www/web下
cd /home/git/repo.git/hooks
vim post-receive #创建一个钩子
#写入下面内容
GIT_WORK_TREE=/www/web git checkout -f
#保存退出
chown git:git post-receive
chmod +x post-receive

如此,下次提交修改,代码会自动同步到指定目录中

不过开始时笔者还是遇到一个问题解决不了,就是ssh公钥交给服务器,也启动git-daemonsshd后,客户端 git clone 时居然还要密码,而且输入密码后提示 Permission denied, please try again.

后边却又离奇的可以了,可能是权限更改,不知道为什么,尤其是ssh怎么免密连接过程

大家有了解的告我一下,原理还没搞明白。


本文链接 : http://blog.newbmiao.com/2014/12/28/build-your-git-server-on-linux.html

Git搭建自己的网站服务器(Linux)的更多相关文章

  1. USBWebServer 中文便携版 快速搭建 PHP/MySQL 网站服务器环境

    如果你是一位 WEB 开发者,或正在学习网页编程,你一定会发现,每到一台新电脑上想要在本地调试测试/运行网站代码都得搭建配置一遍 WAMP (Win.Apache.PHP.MySQL) 环境简直烦透了 ...

  2. 腾讯云,搭建nginx静态网站服务器

    搭建Http静态服务器环境 任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 ...

  3. 利用git+hugo+markdown 搭建一个静态网站

    利用git+hugo+markdown 搭建一个静态网站 一直想要有一个自己的文档管理系统: 可以很方便书写,而且相应的文档很容易被分享 很方便的存储.管理.历史记录 比较方面的浏览和查询 第一点用M ...

  4. linux系统下搭建自己的web服务器

    之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...

  5. Apache搭建http网站服务器入门教程

    Apache搭建http网站服务器入门教程 准备工具 一台带有Linux系统的主机,这里使用CentOS 7.1 64位系统 一个备案过的域名,这里使用www.hellopage.cn 一台可以访问网 ...

  6. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  7. 服务器linux centos 7.4 搭建ftp服务器

    此操作是在腾讯云服务器linux centos 7.4 完成搭建ftp服务器 vsftpd 的: 安装 vsftpd $ yum install vsftpd -y 启动 $ service vsft ...

  8. asp.net网站服务器搭建之从零开始

    asp.net网站服务器搭建之从零开始 一 IIS(Internet Information Services)安装:  1.选择"控制面板".  2.点"添加或删除程序 ...

  9. 腾讯云服务器linux centOS7.4 搭建ftp服务器 vsftpd

    腾讯云服务器linux centos 7.4 搭建ftp服务器 vsftpd 在centos 7.3测试也是OK的,其它版本没有实验 # 安装 vsftpd $ yum install vsftpd ...

随机推荐

  1. 屏幕适配-使用autoLayout

    当遇见xib中无法删除的控件时. 将这个错误的控件拖离本xib(第一个元素.xib文件是有许多元素组成的集合),确保这个xib是正确的.重新创建一个xib文件,将这个正确的xib元素整个复制过去. 在 ...

  2. I.MX6 boot from Micro SD

    /***************************************************************************** * I.MX6 boot from Mic ...

  3. 安装YouCompleteMe时,编译依赖的python版本不对

    启动vim打开文件时出错: The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). YCM core library compile ...

  4. POJ3020 二分图匹配——最小路径覆盖

    Description The Global Aerial Research Centre has been allotted the task of building the fifth gener ...

  5. 英特尔、联发科、展讯等开始支持开源的物联网轻量化操作系统AliOS Lite

    操作系统AliOS Lite Chaos 12-21 11:03 在 12 月 20 日的云栖大会北京峰会上,阿里宣布即将开源 AliOS Lite,此前面向 IoT 领域的轻量级物联网嵌入式操作系统 ...

  6. windows上搭建php环境

    在Windows 7下进行PHP环境搭建,首先需要下载PHP代码包和Apache与Mysql的安装软件包. PHP版本:php-5.3.2-Win32-VC6-x86,VC9是专门为IIS定制的,VC ...

  7. perceptron and ANN

    %% Perceptron Regression close all clear %%load data x = load('ex4x.dat'); y = load('ex4y.dat'); x=o ...

  8. SCUT - 290 - PARCO的因数游戏 - 博弈论

    https://scut.online/p/290 一个 N 个数的取数游戏,Kaildls 和 Parco 轮流操作,每次操作从 N 个数中取一个数 y 并把他变成 y-x(满足 x | y 且x  ...

  9. bzoj 1022: [SHOI2008]小约翰的游戏John【anti-nim】

    如果全是1,那么n是奇数先手必败 否则,xor和为0先手必败 证明见 https://www.cnblogs.com/Wolfycz/p/8430991.html #include<iostre ...

  10. 7天学完Java基础之7/7

    Object类的toString方法 类Object是类层次结构的根类 每个都使用Object作为超类 所有对象都实现这个类的方法 //这个是Object类的子类,实现了其所有方法 public cl ...