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
- 还可以用
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
写权限。
如果还是需要密码,则还是要(作者没有用到):
.ssh
跟authorized_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 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服务器:
- 使用putty输入IP地址:172.18.xx.xxx,选择协议为ssh协议–>连接
登录名:YourName
登录密码:xxxxxx
如果可以登录,那么就说明服务器是正常的 - 怎样使用git服务器(前提是咱们会在本地操作了,不会请看廖雪峰的教程)
- 如果首次登陆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:连接着校网的无线网络也是可以运行的。
完整添加一个工程的步骤
- 申请ssh秘钥,利用git bash,如果已经添加ssh秘钥,则不需要再进行。
ssh-keygen -t rsa -C "YourEmail"
git config --global core.quotepath false
- 利用puty 在/srv文件夹下生成一个空的git存储工程(使用用户YourName):
sudo git init --bare YourProject.git
sudo chown -R git:git YourProject.git
- 两种方法:
方法1:
- 在自己要同步的文件夹中,打开git bash,并输入:
git init
- 在git bash中输入:
git remote add origin git@178.18.34.88:/srv/YourProject.git
git push -u origin master
第一次输入git push -u origin master
,以后可以直接输入gitpush origin master
就可以了
方法2: - 利用git bash将空的储存工程clone下来,然后向里面添加自己的东西亦可
git clone git@172.18.xx.xxx:/srv/sample2.git
- 将文件拷贝到自己要同步的文件夹,按照git的步骤进行操作
git status
git add *
git commit -m "Your comment"
git push -u origin master
- 在自己要同步的文件夹中,打开git bash,并输入:
- 完成!
Windows下比较好用的插件
以上是关于GIT服务器的搭建|菜鸟实践(实验室)的主要内容,如果未能解决你的问题,请参考以下文章
新知实验室 - TRTC 实践音视频互动 Demo即时通信 IM 服务搭建
新知实验室 - TRTC 实践音视频互动 Demo即时通信 IM 服务搭建