GIT服务器的搭建|菜鸟实践(实验室)

Posted 轩辕泪1020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIT服务器的搭建|菜鸟实践(实验室)相关的知识,希望对你有一定的参考价值。

原材料:装有Ubuntu12.04系统的台式机一台,腾达/Tenda路由器一台(选他是因为便宜一点)
安装环境:校园网(按道理来说那个Ubuntu的台式机连上一个网线就行了,但是因为我们屋只有一个网线,所以我是将路由器当无线交换机使)
关于服务器IP地址:因为我是校园网,相当于我路由器(交换机)的上一级有一个交换机(学校的),然后他会根据电脑的信息分配一个IP地址给你,所以你只要将服务器自动连接上的IP地址信息记录下来,然后设置为静态连接就可以了。
另一个图文教程:Ubuntu12.04 Git 服务器配置图文详解

对于Ubuntu的配置

一:搭建GIT服务器
下面一段转自:廖雪峰的Git教程:搭建Git服务器
假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步: 安装git

    $ sudo apt-get install git

第二步:创建一个git用户,用来运行git服务

     $ sudo adduser git

第三步:开启SSH服务(使用用户git)

1.查看是否有sshd_config

cat /etc/ssh/sshd_config  //查看是否有sshd_config文件  

2.如果没有进行安装

sudo apt-get install openssh-server  //安装sshd-server,Ubuntu缺省安装了openssh-client,如果你的没有安装,用apt-get install 进行

安装即可。
3.查看sshsever是否启动()

ps -e |grep ssh   
1207 ?        00:00:00 ssh-agent  
21834 ?        00:00:00 sshd

如果看到sshd则表示sshserver已经启动,如果只有ssh-agent,则表示没有启动,用

sudo /etc/init.d/ssh start 启动sshserver  

4.ssh-server的配置文件位于 /etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后用以下命令重启SSH服务:

sudo /etc/init.d/ssh restart  
  1. 还可以用sudo netstat -tlp 命令来检测, 如果看到:
tcp6       0      0 [::]:ssh                [::]:*  

就表示sshserver启动正常。
通过puty就可以访问了。

第四步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
提示在这一步也许大家会找不到.ssh文件夹,这个不知道是不是没有首先开启ssh服务的原因(这个实验了一下,发现先装ssh好像也不行)(下文有怎么开启SSH服务的介绍),如果开启了也没有,按照下面去做(以git的身份,而非root):

mkdir /home/git/.ssh  
chmod 700 /home/git/.ssh  
touch /home/git/.ssh/authorized_keys  
chmod 600 /home/git/.ssh/authorized_keys  
chown git /home/git/.ssh/  
chown git /home/git/.ssh/authorized_keys 

其中如果权限不够的话可以使用root去做,教程:新装LINUX系统如何获得ROOT权限,图文教程
如何快速导入证书

如果首次登陆git服务器,需要申请ssh秘钥,在本地电脑(自己的电脑)打开git bash 输入

       ssh-keygen -t rsa -C "YourEmail"
       git config --global core.quotepath false

其中git config --global core.quotepath false用来解决中文显示问题
把本人的rsa_id.pub添加到/home/git/.ssh/authorized_keys中去,在本人电脑C:\\Users\\UserName\\.ssh中打开git bash,输入:

       scp id_rsa.pub git@172.18.34.59:/tmp/sshkey/id_rsa_user.pub
       cat  /tmp/sshkey/id_rsa_user.pub >> /home/git/.ssh/authorized_keys

注意权限,git需要有authorized_keys写权限。
如果还是需要密码,则还是要(作者没有用到):
.sshauthorized_keys
都需要设置权限(需要再git用户下设置,非root)
另外etc/ssh/sshd_config里面要修改几个参数

StrictModes no  

RSAAuthentication yes  

PubkeyAuthentication yes  

AuthorizedKeysFile .ssh/authorized_keys

(均需要去掉前面的#,使其生效)

第五步 初始化git仓库

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:(因为第6步的原因,不能用git用户,所以git用户选择禁用shell)

    $ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

第六步,禁用shell登录(这个最后都搞好了再搞,不然会很麻烦):

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出

第七步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

问题补充

作者的网络环境是校园网,那么我只要服务器有一个确定的IP地址就可以了,这个可以通过先连上校园网,然后在网络连接中看详细信息就可以知道服务器的IP地址,然后就可以访问我的服务器了。这个配置可以在GUI界面中进行。有时间再补充
那么通过前面两个环节的配置,现在是可以在客户端上clone服务器上的东西了,但是我是到这里就卡着了,自己在客户端上push不上去
push问题的最终的解决办法:
首先在本地.git文件夹中:修改config文件(其中serverID是你服务器的IP地址)

[remote "origin"]
url =root@serverID:/srv/sample.git
fetch = +refs/heads/*:refs/remotes/origin/*

如果现在可以push上去,那么就是你sample.git的权限问题,登录到服务器

cd /srv
ls -al

如果看到下面的就说明是权限的问题了

drwxr-xr-x  8 root  root 4096  414 18:32 sample.git

修改方法:

sudo chown git -R sample.git
sudo chgrp git -R sample.git

现在修改config文件(其中serverID是你服务器的IP地址)

[remote "origin"]
url =git@serverID:/srv/sample.git
fetch = +refs/heads/*:refs/remotes/origin/*

如果还是不可以,再查找其他的问题

git服务器搭建完成给小伙伴的通知

体验本地git服务器:

  1. 使用putty输入IP地址:172.18.xx.xxx,选择协议为ssh协议–>连接
    登录名:YourName
    登录密码:xxxxxx
    如果可以登录,那么就说明服务器是正常的
  2. 怎样使用git服务器(前提是咱们会在本地操作了,不会请看廖雪峰的教程)
    1. 如果首次登陆git服务器,需要申请ssh秘钥,打开git bash 输入
          ssh-keygen -t rsa -C "YourEmail"
          git config --global core.quotepath false
  其中`git config --global core.quotepath false` 用来解决中文显示问题

2. 把本人的rsa_id.pub添加到/home/git/.ssh/authorized_keys中去,在本人电脑C:\\Users\\UserName\\.ssh中打开git bash,输入:
`
scp id_rsa.pub root@172.18.34.59:/tmp/sshkey/id_rsa_user.pub
cat /tmp/sshkey/id_rsa_user.pub >> /home/git/.ssh/authorized_keys

3. 将git服务器中的存储目录clone下来
git clone git@172.18.xx.xxx:/srv/sample2.git
如果成功,添加这个地址为gitServer地址(这是自定义的)
git remote add gitServer git@172.18.xx.xxx:/srv/sample2.git//此步可以没有,默认是origin
如果再次成功,尝试修改test.txt
git status
git add test.txt
git commit -m "my test"
git push -u gitServer master //(第一次需要这么做,以后直接 git push gitServer就行了)
如果成功了,那么我们就可以愉快的写代码了。
3. PLUS:连接着校网的无线网络也是可以运行的。

完整添加一个工程的步骤

  1. 申请ssh秘钥,利用git bash,如果已经添加ssh秘钥,则不需要再进行。
    ssh-keygen -t rsa -C "YourEmail"
    git config --global core.quotepath false
  2. 利用puty 在/srv文件夹下生成一个空的git存储工程(使用用户YourName):
    sudo git init --bare YourProject.git
    sudo chown -R git:git YourProject.git
  3. 两种方法:
    方法1:
    1. 在自己要同步的文件夹中,打开git bash,并输入:
      git init
    2. 在git bash中输入:
      git remote add origin git@178.18.34.88:/srv/YourProject.git
      git push -u origin master
      第一次输入git push -u origin master,以后可以直接输入git push origin master 就可以了
      方法2:
    3. 利用git bash将空的储存工程clone下来,然后向里面添加自己的东西亦可
      git clone git@172.18.xx.xxx:/srv/sample2.git
    4. 将文件拷贝到自己要同步的文件夹,按照git的步骤进行操作
      git status
      git add *
      git commit -m "Your comment"
      git push -u origin master
  4. 完成!

Windows下比较好用的插件

TortoiseGit


以上是关于GIT服务器的搭建|菜鸟实践(实验室)的主要内容,如果未能解决你的问题,请参考以下文章

Git工程开发实践——GitLab服务搭建

新知实验室 - TRTC 实践音视频互动 Demo即时通信 IM 服务搭建

新知实验室 - TRTC 实践音视频互动 Demo即时通信 IM 服务搭建

新知实验室 - TRTC 实践音视频互动 Demo即时通信 IM 服务搭建

git服务器gitlab之搭建和使用转

git服务器搭建全程