【Centos】搭建 SVN 服务器

一、若是仅仅只是搭建 svn 服务器:php

  (a)、先检查 svn 是否已经安装了html

rpm -qa subversion #输入这个命令后,会出现 subversion 版本号

    (b)、若是没有安装,使用下面命令:java

yum install subversion [-y] #这个 -y 命令,是表示在找到包以后,是否自动 选择 y,全自动。若是没有,在找到包以后,会询问 y / n

    (c)、安装 完成后 使用下面命令 查看版本:python

svnserve --version #查看版本号,是 -- 不是 - 这个是要注意的

 

二、建立 svn 根目录,下面的命令的意思是 在 /home 文件夹中 建立 svn 文件夹: linux

  (a)、mkdir 是 linux 下建立文件夹的命令web

mkdir /home/svn  #是 /home/ 下建立 svn 目录,这个是动态的,看本身喜欢建立在哪里, svn 是多版本库的根目录。
mkdir /home/svn/test #这里建立一个 test 的目录,进行一个版本库的存放

 

三、建立 使用下面命令 建立版本库:sql

  (a)、使用上面命令后,会生成几个 文件 和 文件夹,网上常常看到 ls -l 只是列出 文件夹 和 文件 列表,并非建立。数据库

  (b)、文件夹 ---- conf、db、hooks、locksapache

  (c)、文件 ---- format、README.txt
vim

  (d)、目录结构的 描述,请跳转到最下面。

svnadmin create [path] #这里填写的是文件夹路径,若是是当前目录 写 ./ 不能省略,我这里建立的是一个 test 路径的

 

四、ls -l 以后,出现的信息图解:

五、接下来是配置一个版本库的权限 和 帐号密码:

  (a)、咱们先切换到 上面成功的目录下 的 conf 文件夹中

  (b)、主要修改 三个文件:authz ---- 是权限 配置文件、passwd ---- 是配置 访问 用户 的 帐号和密码、svnserve.conf 是总配置文件

5.一、我在这里先修改 passwd 文件

  (a)、使用 vi / vim passwd 打开文件,在图形界面中,可使用 gedit。

  (b)、在 vi / vim 命令下,使用编辑 按 i 进入编辑模式。

  (c)、Ctrl + c 是 切换成命令状态,:wq 是 保存并退出,若是不保存就退出 使用 :q!。若是修改过了 不能直接用 :q 退出。

# 在 [users] 下面写 访问的帐号和密码,写法是 帐号 = 密码 # 例以下面: [users] test = 123456 # 这是第一个帐号和密码 test1 = 123456 # 这是第二个帐号和密码

 

5.二、修改 authz 权限文件:

# 咱们能够直接 赋值 用户的权限,带权限的写法,应该写在 [<版本库名>:<路径>] 下面,表明那个路径,那些用户有权限。 test = rw # 这里的 test 是在 passwd 文件中定义的用户,rw 表明 读和写的权限。 #若是 有不少 帐号,这个时候,就须要分组了,在 [group] 下写 [group] vip = test, test1 # 这里表示,建立一个 分组叫 vip,使用的时候经过 @vip 使用。 # 在 authz 文件最下面 # [<版本库名>:<路径>] # 1、下面的表示 版本库的根目录下,只有 admin 这个角色才有 rw 权限 [/] # 这个 / 根目录 是只 svnserve 启动时候,指定的根目录。 @admin = rw # 这里的 admin 是 上面 group 下的分组,不是系统自带的,表示 admin 分组中的用户,都有 读写权限
#我上面只定义了 一个 vip 用户组,因此只能 是 vip,admin 这个用户组错误的。

 

5.三、配置 svnserve.conf,修改 了 svnserve.conf 这个文件后是须要重启 svn 服务的,而修改上面 的 passwd 和 authz 文件是不须要重启的:

#须要修改的,基本只有5条,这5条本来是本注释掉的。 #write 是可读可写,read 是只读,none 是无访问权限 [general] #控制非鉴权用户访问版本库的权限。 anon-access=none #匿名访问的权限,能够是 read, write,none,默认是 read # 控制鉴权用户访问版本库的权限 auth-access=write #使用受权用户有写的权限 默认是 write #指定用户帐号和密码的文件名,用法 与 下面的 authz 同样. password-db=passwd #用户数据库的路径 #指定权限配置文件名,经过该文件能够实现以路径为基础的访问控制。 除非指定绝对路径,不然文件位置为相对conf目录的相对路径。 缺省值:authz authz-db=authz #访问控制文件路径 #指定版本库的认证域,即在登陆时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件.
realm=fist....

 

六、先杀死 svn 服务,再重启:

killall svnserve #关闭全部 svn 服务

 

七、以多库方式 启动 svnserve 服务:

svnserve -d -r /home/svn [--listen-port 端口号]
#上面提到,test 是咱们测试用的版本库,而后,咱们以多库方式启动 svn 后,test 版本库的路径就是 svn://127.0.0.1/test
#-d 是表示守护线程后台运行
#-r 表示必定目录
#--listen-port 是表示监听的端口号,可选,默认是 3690

Ps:

  (1)、这里须要新手去看,不然很容易浪费时间,菜鸟教程地址:http://www.runoob.com/svn/svn-start-mode.html

  (2)、因为 -r 的配置方式不同,svn 启动 区分两种模式

  (3)、第一种: -r 直接指定到版本库(称为 单库 svnserve 方式)

    例如这篇文章的例子: -r /home/svn/test 我启动的时候 在这里直接指定到了 test 这个目录下

    authz 配置的时候,[/] 直接表示 test 这个根目录。

    客户端访问的时候的 URL:  svn://127.0.0.1/ 便可访问到 test 版本库

  (4)、第二种: -r 指定到版本库的上级目录(称为 多库 svnserve 方式)

    多库启动  -r /home/svn 

    这个时候的 authz 配置的写法就不用了,应该成 [<版本库名>:/] 这样的。

    客户端访问的URL: svn://127.0.0.1/test 才能够访问 到版本库 test

 

八、配置完成后,能够在本地 使用 命令,查看是否启用成功: 

svn co svn://127.0.0.1/[版本库] 

 

九、有些服务器,须要关闭防火墙: centos 7 默认防火墙:filewalld 文档:https://blog.csdn.net/wangmx1993328/article/details/80738012

十、有些服务器关闭了防火墙以后,仍是拒绝访问的,再启动一次执行一次 svnserve -dr [路径] 试试

 

svn客户端:

(1)、修改配置文件,使下次登陆时不记录密码
windows环境,在开始菜单->运行输入:%appdata%/subversion,找到config文件【反正本身找到便可】;
unix/linux环境,编辑~/.subversion/config文件。这个试过能够的。
分别对如下两行取消注释、而后保存退出;
# store-passwords = no
# store-auth-creds = no

(2)、删除认证缓存设置

windows环境,删除:%appdata%/subversion/auth
unix/linux环境执行:rm -rf ~/.subversion/auth 

 

搭建 http 服务器访问:

一、先安装 apache 服务

#apache服务器,让咱们的svn 服务器支持http协议访问,而不只是svn://协议
yum install -y httpd #apache操做svn模块 yum install -y mod_dav_svn

 

二、修改配置文件 /etc/httpd/conf.d/subversion.conf(没有则新建),内容为: 不如不行,参考:http://room-bb.iteye.com/blog/2293178

LoadModule dav_svn_module     modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNListParentPath on SVNPath /home/svn/test #只支持一个主目录的SVN版本库
   SVNParentPath /home/svn/ #支持多个相同父目录的SVN版本库   AuthType Basic Satisfy Any AuthName
"Subversion repos" AuthUserFile /home/svn/conf/accesspwd AuthzSVNAccessFile /home/svn/conf/authz Require valid-user </Location>

 

三、建立 accesspwd 文件:

htpasswd   -c -m /home/svn/conf/accesspwd root # 在/home/svn/conf 下面建立一个叫 accesspwd 的文件 , root 的用户名

 

四、设置 权限 目录

chown -R apache:apache /home/svn/

 

搭建 websvn :

一、由于 websvn 是 php 写的,因此要安装 php

yum install -y php

 

二、下载 websvn 到 /var/www/html 目录下面

cd /var/www/html # 切换到 /var/www/html 目录 wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip #下载 websvn 包

 

三、解压 websvn 包

unzip websvn-2.3.3.zip #解压 websvn 包
mv websvn-2.3.3 websvn #把 websvn-2.3.3 移动到 websvn 文件夹中

 

四、配置 文件:

cd /var/www/html/websvn/include #切换到 /var/www/html/websvn/include 目录 cp distconfig.php config.php #复制 disptcofig.php 文件内容到 config.php vi config.php 

#修改的配置以下面:
# 一、这下面的基本是注释掉,而且修改好路径就好了,路径按下面例子填写就行了。

  // Configure these lines if your commands aren't on your path.

  //

  $config->setSVNCommandPath('/usr/bin');// e.g. c:\\program files\\subversion\\bin

  $config->setDiffPath('/usr/bin');

  // For syntax colouring, if option enabled...

  $config->setEnscriptPath('/usr/bin');

  $config->setSedPath('/bin');

  // For delivered tarballs, if option enabled...

  $config->setTarPath('/bin');

  // For delivered GZIP'd files and tarballs, if option enabled...

  $config->setGZipPath('/bin');


 

  $config->parentPath('[svn文件路径]'); #这个是单一版本库的

  $config->parentPath('[svn文件路径]', 'group'); #这个是多库的

 #三、下面这些直接复制粘贴到 $config->parentPath('/svn/'); 下面就好了

  $extEnscript[".pl"]="perl";

  $extEnscript[".py"]="python";

  $extEnscript[".sql"]="sql";

  $extEnscript[".java"]="java";

  $extEnscript[".html"]="html";

  $extEnscript[".xml"]="html";

  $extEnscript[".thtml"]="html";

  $extEnscript[".tpl"]="html";

  $extEnscript[".sh"]="bash";

 

五、重启 httpd 服务

systemctl restart httpd.service

 

六、在浏览器中打开,输入URL: http:// IP地址/websvn

 

七、若是遇到 Unable to find "enscript" tool at location "/usr/bin/enscript 这样的问题,安装一下 enscript 就能修复了。

yum install enscript

 

注意:linux 上 svn 用浏览器打开的界面都比较丑,若是想要下面的,须要 在 windows 系统上,搭建 VisualSVN server 。