GIT服务器的搭建|菜鸟实践

来源:互联网 发布:win安装ubuntu双系统 编辑:程序博客网 时间:2024/05/19 10:16

原材料:装有Ubuntu12.04系统的台式机一台,腾达/Tenda路由器一台(选他是因为便宜一点)

安装环境:校园网(按道理来说那个Ubuntu的台式机连上一个网线就行了,但是因为我们屋只有一个网线,所以我是将路由器当无线交换机使)

关于服务器IP地址:因为我是校园网,相当于我路由器(交换机)的上一级有一个交换机(学校的),然后他会根据电脑的信息分配一个IP地址给你,所以你只要将服务器自动连接上的IP地址信息记录下来,然后设置为静态连接就可以了。

一个更好的图文教程:http://www.myhack58.com/Article/sort099/sort0102/2015/62582.htm

对于Ubuntu的配置:

一、搭建GIT服务器

下面一段转自:廖雪峰的git教程 搭建Git服务器

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

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

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

本文作者补充:怎样在本地将sshkey添加到服务器(首先要开启服务器的ssh服务):

scp id_rsa.pub root@serverID:/home/git/.ssh/authorized_keys

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可登录远程服务器

怎样在服务器上追加sshkey:

cat  id_rsa.john.pub >> /home/git/.ssh/authorized_keys

本文作者补充:在这一步也许大家会找不到.ssh文件夹,这个不知道是不是没有首先开启ssh服务的原因(这个实验了一下,发现先装ssh好像也不行)(下文有怎么开启SSH服务的介绍),如果开启了也没有,按照下面去做(以git的身份,而非root):

mkdir /home/git/.sshchmod 700 /home/git/.sshtouch /home/git/.ssh/authorized_keyschmod 600 /home/git/.ssh/authorized_keyschown git /home/git/.ssh/chown git /home/git/.ssh/authorized_keys

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


如果还是需要密码,则还是要(作者没有用到):

.ssh跟authorized_keys 都需要设置权限(需要再git用户下设置,非root)

另外etc/ssh/sshd_config里面要修改几个参数

StrictModes noRSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys
(均需要去掉前面的#,使其生效)

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ 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.gitCloning into 'sample'...warning: You appear to have cloned an empty repository.

剩下的推送就简单了。(这个作者还是没有试验成功)

二、开启SSH服务

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
5. 还可以用sudo netstart -tlp 命令来检测, 如果看到:  
tcp6       0      0 [::]:ssh                [::]:*
    就表示sshserver启动正常。
   通过客户端就可以访问了。

作者补充: 作者的网络环境是校园网,那么我只要服务器有一个确定的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  4月 14 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服务器:

强调IP地址是你自己服务器的IP地址,我们这都用192.168.0.2代替

使用putty输入IP地址:192.168.0.2,选择协议为ssh协议-->连接

       登录名:yourName

       登录密码:yourPassword

       如果可以登录,那么就说明服务器是正常的

怎样使用git服务器(前提是咱们会在本地操作了,不会请看廖雪峰的教程)

       1)让管理员(就是你自己啦)将本人的rsa_id.pub添加到/home/git/.ssh/authorized_keys中去

               因为只有这样,咱们才能提交代码(和gitHub的原理一致)

       2)将git服务器中的存储目录clone下来(severDir具体项目,具体去添不确定)

      clone git@192.168.0.2/srv/serverDir

       3)对于步骤二可以尝试

     clone git@192.168.0.2/srv/sample.git

              如果成功,添加这个地址为gitServer地址(这是自定义的)

     git remote add gitServer git@192.168.0.2:/srv/sample.git

              如果再次成功,尝试修改test.txt(这个是创建服务器时,测试的时候添加上去的)

     git status

     git add test.txt

     git commit -m "my test"

     git push -u gitServer master //(第一次需要这么做,以后直接 git push gitServer就行了)

              如果成功了,那么我们就可以愉快的写代码了

3    咱们如果可以搜到server WIFI信号,那么咱们是可以连上校园网的,和插着网线一样!

       所以小伙伴们,网线什么的,不打游戏就再也用不到了

       enjoy everyone!!

0 0
原创粉丝点击