- git服务端
首先确保有ssh,centOS自带openssh
1.查看ssh版本
ssh -V
2.安装git
确保在root用户下执行该命令
$su root #yum install -y git
验证是否安装成功,输出git version ....则成功
git --version
3. 添加git的管理账户,添加该账户之后,在后面需要禁止该账户远程登录,否则会有安全隐患。
// 以下也为root账户 #useradd git // 添加git账户 #passwd git // 为git用户设置密码 #cd /home && ls -al // 查看/home下的目录,添加用户则默认会有一个git的目录,并且用户和组都为git
4.使用过GitHub都知道ssh的公钥,我们搭建自己的私人git服务端,需要将客户端的私钥保存到服务端
#su git // 切换git用户 $cd /home/git $mkdir .ssh $cd /home/git/.ssh $touch authorized_keys // 保存公钥的文件 $ chmod 700 /home/git/.ssh/ // 设置权限 $ chmod 600 /home/git/.ssh/authorized_keys
5.将客户端的私钥上传服务器
在用户主目录下会有一个.ssh的隐藏文件夹,文件夹下有id_rsa和id_rsa.pub两个文件。如果没有请百度
将id_rsa.pub上传至服务器,并使用
$cat id_rsa.pub >> authorized_keys
写入认证文件。
6.服务器创建测试git仓库
// 切换到git账号 $ su git // 进入git账号的用户主目录。 $ cd /home/git // 在用户主目录下创建 test.git仓库的文件夹 $ mkdir test.git && cd test.git // 在test.git目录下初始化git仓库 $ git init --bare Initialized empty Git repository in /home/git/test.git/
此时,客户端就可以clone或者remote add此仓库了
6.客户端测试连接git仓库,在客户端执行
$ mkdir demos && cd demos $ git init $ touch a.txt $ echo 'xxxx.com' >> a.txt $ git add . $ git commit -m 'the first commit' # 把当前仓库跟远程仓库添映射 $ git remote add origin git@xxxx.com:test.git # 把当前仓库push到远程仓库。 $ git push -u origin master
7.禁用客户端shell登录
在/home/git下创建git-shell-commands,并且目录为git账户
$ su git $ mkdir /home/git/git-shell-commands
修改/etc/passwd文件
$ vim /etc/passwd # 可以通过 vim的正则搜索快速定位到这行, 命名模式下 :/git:x # 找到这句, 注意1000可能是别的数字 git:x:1000:1000::/home/git:/bin/bash # 改为: git:x:1000:1000::/home/git:/bin/git-shell # 最好不要直接改,可以先复制一行,然后注释掉一行,修改一行,保留原始的,这就是经验!!! # vim快捷键: 命令模式下:yy复制行, p 粘贴 0光标到行首 $到行尾 x删除一个字符 i进入插入模式 # 修改完后退出保存: esc进入命令模式, 输入::wq! 保存退出。
如果有其他小伙伴要连接git服务器,仅需要把他的公钥也添加到authorized_keys即可。
GIT服务端的安装参照博客:http://cnblogs.com/fly_dragon/p/8718614.html
- SVN服务端
使用命令:
yum install subversion
即可完成svn服务端的安装。
检查安装:
svnserve --version
使用上面的命令检查版本。
配置版本库:
默认项目在/var/svn下。我想放在/home/svn目录下,需要编辑svn的配置文件
[root@localhost home]# vi /etc/sysconfig/svnserve # OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="-r /home/svn"
创建自己的版本库(项目名:testProject):
svnadmin create /home/svn/testProject
创建之后,在/home/svn目录下有testProject的文件夹
配置版本库的用户名和密码,在testProject下的conf目录有这些配置文件
vi /home/svn/testProject/conf/passwd
该文件中是密码的配置,格式是“用户名” = “密码”
[users] # harry = harryssecret # sally = sallyssecret user1 = 123456 user2 = 123456
配置版本库的权限:
vi /home/svn/testProject/conf/authz
在文件末尾加上用户的权限,一般用户有根目录的权限
[/] user1 = rw user2 = rw
修改版本库的配置:
[general] anon-access = none #控制非鉴权用户访问版本库的权限 auth-access = write #控制鉴权用户访问版本库的权限 password-db = passwd #指定用户名口令文件名 authz-db = authz #指定权限配置文件名
启动版本库:
svnserve -d -r /home/svn/
停止svn:
killall svnserve
同步:
不能直接在版本库中存文件,svn中将存的是压缩过后的文件,不能直接将文件拷贝到服务端的版本库文件目录下。需要先同步空的版本库到本地,然后将文件add到SVN,然后commit。