玖叶教程网

前端编程开发入门

如何搭建Git服务端(搭建git服务器(在windows server))

上一节我们讲了git如何使用,这节我们讲下如何搭建git服务端,也就是远程仓库。

1、准备工作:

centos 是自带git 的; 但是版本太低,可能在后面的工作中会遇到一些异常,所以:

yum -y remove git #卸载git

由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装。

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

查看ssh版本

$ ssh -V # 输出以下表示没问题,可以继续。 版本可能不一致,能用即可。 OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

2、安装git

# 请确保您切换到了root账户

$ su root

(a)、centos环境

$ yum install -y git

(b)、Ubuntu环境

apt-get install git

注意:Ubuntu跳过下面第3步骤

# 验证是否安装成功

$ git --version

# 输出如下内容表示成功:

git version x.x.x.x

3、添加git的管理的账户和设置密码

# 添加git账户

$ adduser git

# 修改git的密码

$ passwd git

# 然后两次输入git的密码确认后。

# 查看git是否安装成功

$ cd /home && ls -al

# 如果已经有了git,那么表示成功,参考如下:

drwxr-xr-x. 5 root root 4096 Apr 4 15:03 .

dr-xr-xr-x. 19 root root 4096 Apr 4 15:05 ..

drwx------ 10 git git 4096 Apr 4 00:26 git

# 默认还给我们分配一个名字叫git的组。

4、git的权限管理

git仓库的权限管理,我们可以手动进行管理和配置,也可以通过其他辅助工具。如果小团队的话,直接通过ssh公钥进行管理即可,如果大点的团队,最好用gitolite 或者 gitosis,两者都差不多,一个是Perl开发,一个是Python开发。

# 1.切换到git账号

$ su git

# 2.进入 git账户的主目录

$ cd /home/git

# 3.创建.ssh的配置,如果此文件夹已经存在请忽略此步。

$ mkdir .ssh

# 4. 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。

$ cd /home/git/.ssh

$ touch authorized_keys

# 5. 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。

$ chmod 700 /home/git/.ssh/

$ chmod 600 /home/git/.ssh/authorized_keys

5、配置客户端的ssh公钥并上传服务器

第一步: 创建客户端的ssh私钥和公钥

检查是否已经拥有ssh公钥和私钥:进入用户的主目录。

用户主目录:

Windows系统:C:\Users\用户名

Linux系统:/home/用户名

Mac系统:/Users/用户名

然后查看是否有.ssh文件夹,此文件夹下是否有如下几个文件。

# 用户主目录的.ssh文件夹下.ssh

├── id_rsa

└── id_rsa.pub # 我们要用的公钥

如果没有,那么用ssh-keygen创建ssh的私钥。

$ ssh-keygen -t rsa

# 接下来,三个回车默认即可。

创建私钥成功后,在查看用户目录是否有意加有了公钥文件id_rsa.pub

第二步: 拷贝私钥到git的服务器

如何把客户端的文件拷贝到服务器端,我建议用scp命令进行拷贝。也可以用ssh工具手动上传。

以下以mac系统为例:

# 首先进入我的用户主目录的.ssh目录下,注意用户名xxx替换成自己的$ cd /Users/xxx/.ssh

# 以下命令是:把本地的id_rsa.pub文件拷贝到 aicoder.com服务器,登录aicoder.com服务的账号是git。# 冒号后面默认就是git账号的主目录,最后文件被保存成laoma.pub# 注意:把域名换成你自己的或者ip,最后的文件名可以自己定,后面还有用。$ scp ./id_rsa.pub [email protected]:.ssh/laoma.pub

6、服务器端添加客户端的SSH公钥

切换到服务器端,把刚才上传的客户端公钥id_rsa.pub文件的内容添加到 authorized_keys中,一个id_rsa.pub一行,就可以允许客户端ssh访问了。

# 切换到git账户

$ su git

$ cd /home/git/.ssh

$ ls -al

# 查看一下.ssh目录是否有authorized_keys和laoma.pub文件

# .

# |-- authorized_keys

# `-- laoma.pub

# 如果有,那么进行下面的把laoma.pub文件中的内容添加到authorized_keys中.

$ cat laoma.pub >> authorized_keys

# >> 是在文件后面追加的意思,主要如果用其他编辑器,每个ssh的pub要单独一行,建议用cat命令方便简单。

7、服务器端创建测试git仓库

进入服务器的终端。

# 切换到git账号

$ su git

# 进入git账号的用户主目录。

$ mkdir /home/git/repository

$ cd /home/git/repository

# 初始化一个空仓库

$ git init --bare test.git

# 输出如下内容,表示成功,此目录仅用于存储仓库的历史版本等数据。

Initialized empty Git repository in /home/git/repository/test.git/

我这里是abc.parent.git

8、git利用post-receive自动化部署push代码

#编写自动更新钩子,实现git push 直接完成代码部署到服务器的目录

$ cd /home/git/repository/test.git/hooks/

$ touch post-receive

$ vim post-receive

#加入以下内容

# 指定我的代码检出目录,DIR是你要把代码push到git服务端部署的工作目录

DIR=/home/git/repository/test.git/code/

git --work-tree=${DIR} clean -fd

# 直接强制检出

git --work-tree=${DIR} checkout --force

#添加执行权限

$ chmod +x post-receiv

9、客户端映射到git远程仓库

#本地安装git客户端并提交到本地仓库

$ git init

$ touch a.txt

$ echo 'aicoder.com' >> a.txt

$ git add .

$ git commit -m 'the first commit'

# 把当前仓库跟远程仓库添映射

$ git remote add origin git@服务端的ip或域名:/home/git/repository/test.git

# 把当前客户端仓库push到远程仓库。

$ git push -u origin master

10、禁止git账户的shell登录

$usermod -s /usr/bin/git-shell git #git为前面创建的用户名

11、git客户端clone远程仓库代码

git clone git@服务端的ip或域名:/home/git/repository/test.git

欢迎大家关注,后期还有干货哦!如有不对的地方,请大家指正!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言