标签:
本文主要针对两种应用场景,第一种场景:Github
为每个免费用户提供 0.5 Gb
的空间,不过只能存放公开的代码,如果你想在 Github
上保存私有代码,只有成为付费用户才行。另一种场景是你的私有代码并不想公开放到互联网上,因为你觉得不安全,你只想把它们保存在本地局域网内部,但是你又很想用 git
来进行版本控制。怎么办?很简单,自己搭建一个 git
服务器。
下面说说做一个服务器有哪些条件应该满足:
服务器普遍有不间断供电的需求:如果要做代码服务器,那么持续供电是必要条件,选择专用服务器,必须配套 UPS
,或者用一台自带电池的笔记本,也是一个不错的选择。
服务器的磁盘空间需求,如果你的代码服务器只允许上传文本文件,不允许保存可执行文件,那么只需要极少的空间。
如果在硬件昂贵稀少的几十年前,人们不太可能用笔记本来做这种事情,但是现在很多人都有不止一台台式机,不止一台笔记本,尤其是几年前购买的一些上网本,性能有限,速度迟缓,基本处于闲置状态,笔者就有3台类似的上网本,用来做代码服务器刚刚好。
龙芯小本 8089D
恰恰可以作为一台代码服务器来真正发挥威力,一方面它自带电池,不必担心忽然停电导致的系统错误(Linux系统运行时一旦停电可能会对系统造成损坏,有时可用命令 fsck 修复,有时甚至需要重装系统),事实上任意一款电池没有完全废掉的上网本都可以改造为一个代码仓库服务器。另一方面就是它的性能偏低,用它做编译、做图形处理都比较慢,但是做代码服务器就足够了。
理论上来说,Windows
和 Linux
都可以设置为代码服务器, Windows
只需要安装额外的 ssh
服务器软件来启动 ssh
服务,同时安装专门为 Windows
准备的 git shell
也可以把代码服务器配置起来,不过鉴于我在配置 freeSSHd
、posSSH
、WinSSHD
上折腾了半天-虽然配置好了-也可以从 Linux
登陆到 Windows
上的 ssh
-就是有一些乱码什么的,就不建议拿 Windows
当代码服务器了。
下面介绍如何在 Debian
上进行配置。
我的 8089D
安装了 Debian 7
,一些基本软件都安装好了,还需要安装如下软件和服务:git
可以通过如下命令来安装:
aptitude install git
系统启动时自带启动 sshd
服务,可以通过 sysv-rc-conf
来查看
新增一个 ssh 用户
sudo adduser git
按照提示设置好该用户的密码
创建 git
仓库目录
sudo mkdir /opt/github/mytest.git
把该目录的属主设置为该用户
sudo chown -R git:git /opt/github/mytest.git
切换到该用户
su git
把该目录初始化为裸仓库
cd /opt/github/mytest.git
git init --bare
OK,现在服务端的配置全部完成
接下来就是客户端的配置操作,Windows
和 Linux
Unix
OSX
都可以作为客户端,只要能够运行 ssh
和 git
,就可以当客户端来用.
这里需要知道 8089D 的 ip
,用命令 ifconfig
可以看到,假设我们 8089D
的 ip
为192.168.99.233
有两种方法,一种使用默认的远程仓库名 origin
,另一种自己指定名字。
先说方法一,比较简单,直接使用 git clone
命令就可以在本地建立一个远程仓库的拷贝,默认的远程仓库名字设置为 origin
,本地目录设为 mytest1
,详细命令如下:
git clone ssh://git@192.168.99.233/opt/github/mytest.git mytest1
按照提示要求输入ssh
用户 git
的密码,然后就把位于龙芯小本上的 mytest.git
克隆到本地的 mytest1
目录下,这时进入目录 .\mytest1\
使用 git remote -v
命令查看当前的远程仓库,如下:
Air:loongson admin$ cd mytest1/
Air:mytest1 admin$ ls -al
total 0
drwxr-xr-x 3 admin staff 102 6 8 00:36 .
drwxr-xr-x 3 admin staff 102 6 8 00:36 ..
drwxr-xr-x 10 admin staff 340 6 8 00:37 .git
Air:mytest1 admin$ git remote -v
origin ssh://git@192.168.99.233/opt/github/mytest.git (fetch)
origin ssh://git@192.168.99.233/opt/github/mytest.git (push)
Air:mytest1 admin$
再说方法2,首先建立一个空目录 mytest2
,然后进入这个目录使用 git init
命令把这个目录初始化,最后使用 git remote add
命令为其手动增加远程仓库,详细命令如下:
Air:loongson admin$ mkdir mytest2
Air:loongson admin$ cd mytest2
Air:mytest2 admin$ ls -al
total 0
drwxr-xr-x 3 admin staff 102 6 8 00:41 .
drwxr-xr-x 4 admin staff 136 6 8 00:41 ..
drwxr-xr-x 10 admin staff 340 6 8 00:42 .git
Air:mytest2 admin$ git init
Initialized empty Git repository in /Users/admin/GitHub/loongson/mytest2/.git/
再通过命令 git remote add
增加名为 l8089D
的远程仓库
Air:mytest2 admin$ git remote add l8089D ssh://git@192.168.99.233/opt/github/mytest.git
接着用命令 git remote -v
查看一下,会显示所有的远程仓库名和对应的url
Air:mytest2 admin$ git remote -v
l8089D ssh://git@192.168.99.233/opt/github/mytest.git (fetch)
l8089D ssh://git@192.168.99.233/opt/github/mytest.git (push)
Air:mytest2 admin$
现在就基本完工了。
为了保证不上传可执行文件浪费空间,我们需要在工作目录下新增一个 .gitignore
配置文件,命令如下:
touch ./.gitignore
vi ./.gitignore
并对其进行配置,有两种配置方式,一种是开放模式,一种是保守模式。
简单说,开放模式就是默认提交所有文件,要在配置文件里指出不提交哪些文件,假设我们的可执行文件格式为 *.o
,我们不希望提交所有的可执行文件,那么配置文件内容如下:
*.o
保守模式恰恰相反,它默认不提交所有文件,只提交在配置文件里列出的那些文件,假设我们需要提交所有的 *.c
和 *.h
文件,那么配置文件内容如下:
!*.c
!*.h
以上是针对文件的过滤设置,也可以针对目录进行设置,如下。
开放模式,不提交目录 /opt/github/mytest1/others/
,配置文件 .gitignore
内容如下:
/opt/github/mytest1/others/
保守模式,只提交目录 /opt/github/
,配置文件 .gitignore
内容如下:
!/opt/github/
目前的配置方式每次 push
代码时都需要输入用户 git
的密码,是因为我们没有配置 ssh 的公钥和私钥,配置一下很简单,这样每次就不必输密码了,只要把客户端使用 ssh
的用户的公钥收集起来,它们存放在 id_rsa.pub
文件中,添加到 8089D
的用户 git
的鉴权名单里即可,也就是 8089D
上的 /home/git/.ssh/authorized_keys
文件里,每行一个,如果只有一个用户,那么直接把 id_rsa.pub
拷贝为 authorized_keys
就好了。
剩下的就是从客户端工作目录把代码同步到服务端
git add .
git commit -m ""
如果在 mytest1
操作,命令如下:
git push origin master
如果在 mytest2
操作,命令如下:
git push l8089D master
其他的操作都一样。
经过上述配置,现在你的 8089D
龙芯小本就可以做为一个代码服务器投入使用了,
作者:FreeBlues
版本:20150608
链接:http://my.oschina.net/freeblues/blog/464075
让龙芯小本真正发挥作用-用8089D打造自己的Github服务器
标签:
原文地址:http://my.oschina.net/freeblues/blog/464075