1, 如果仅仅只是搭建 SVN 服务器:
(a), 先检查 SVN 是否已经安装了
rpm -qa subversion #输入这个命令后, 会出现 subversion 版本号
(b), 如果没有安装, 使用下面命令:
yum install subversion [-y] #这个 -y 命令, 是表示在找到包之后, 是否自动 选择 y, 全自动. 如果没有, 在找到包之后, 会询问 y / n
(c), 安装 完成后 使用下面命令 查看版本:
svnserve --version #查看版本号, 是 -- 不是 - 这个是要注意的
2, 创建 SVN 根目录, 下面的命令的意思是 在 /home 文件夹中 创建 SVN 文件夹:
(a),mkdir 是 Linux 下创建文件夹的命令
- mkdir /home/SVN #是 /home/ 下创建 SVN 目录, 这个是动态的, 看自己喜欢创建在哪里, SVN 是多版本库的根目录.
- mkdir /home/SVN/test #这里创建一个 test 的目录, 进行一个版本库的存放
3, 创建 使用下面命令 创建版本库:
(a), 使用上面命令后, 会生成几个 文件 和 文件夹, 网上经常看到 ls -l 只是列出 文件夹 和 文件 列表, 并不是创建.
(b), 文件夹 ---- conf,db,hooks,locks
(c), 文件 ---- format,README.txt
(d), 目录结构的 描述, 请跳转到最下面.
svnadmin create [path] #这里填写的是文件夹路径, 如果是当前目录 写 ./ 不能省略, 我这里创建的是一个 test 路径的
4,ls -l 之后, 出现的信息图解:
5, 接下来是配置一个版本库的权限 和 账号密码:
(a), 我们先切换到 上面成功的目录下 的 conf 文件夹中
(b), 主要修改 三个文件: authz ---- 是权限 配置文件, passwd ---- 是配置 访问 用户 的 账号和密码, svnserve.conf 是总配置文件
5.1, 我在这里先修改 passwd 文件
(a), 使用 vi / VIM passwd 打开文件, 在图形界面中, 可以使用 gedit.
(b), 在 vi / VIM 命令下, 使用编辑 按 i 进入编辑模式.
(c),Ctrl + c 是 切换成命令状态,:wq 是 保存并退出, 如果不保存就退出 使用 :q!. 如果修改过了 不能直接用 :q 退出.
- # 在 [users] 下面写 访问的账号和密码, 写法是 账号 = 密码
- # 例如下面:
- [users]
- test = 123456 # 这是第一个账号和密码
- test1 = 123456 # 这是第二个账号和密码
5.2, 修改 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.3, 配置 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....
6, 先杀死 SVN 服务, 再重启:
killall svnserve #关闭所有 SVN 服务
7, 以多库方式 启动 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
8, 配置完成后, 可以在本地 使用 命令, 查看是否启用成功:
SVN co SVN://127.0.0.1/[版本库]
9, 有些服务器, 需要关闭防火墙: CentOS 7 默认防火墙: filewalld 文档: https://blog.csdn.net/wangmx1993328/article/details/80738012
10, 有些服务器关闭了防火墙之后, 还是拒绝访问的, 再启动一次执行一次 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 服务器访问:
1, 先安装 apache 服务
- #apache 服务器, 让我们的 SVN 服务器支持 http 协议访问, 而不仅是 SVN:// 协议
- yum install -y httpd
- #apache 操作 SVN 模块
- yum install -y mod_dav_svn
2, 修改配置文件 /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>
3, 创建 accesspwd 文件:
htpasswd -c -m /home/SVN/conf/accesspwd root # 在 / home/SVN/conf 下面创建一个叫 accesspwd 的文件 , root 的用户名
4, 设置 权限 目录
chown -R apache:apache /home/SVN/
搭建 websvn :
1, 因为 websvn 是 PHP 写的, 所以要安装 PHP
yum install -y PHP
2, 下载 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 包
3, 解压 websvn 包
- unzip websvn-2.3.3.zip #解压 websvn 包
- mv websvn-2.3.3 websvn #把 websvn-2.3.3 移动到 websvn 文件夹中
4, 配置 文件:
- cd /var/www/HTML/websvn/include #切换到 /var/www/HTML/websvn/include 目录
- cp distconfig.PHP config.PHP #复制 disptcofig.PHP 文件内容到 config.PHP
- vi config.PHP
- # 修改的配置如下面:
- # 1, 这下面的基本是注释掉, 并且修改好路径就行了, 路径按下面例子填写就好了.
- // 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'); #这个是多库的
- #3, 下面这些直接复制粘贴到 $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";
5, 重启 httpd 服务
systemctl restart httpd.service
6, 在浏览器中打开, 输入 URL: http:// IP 地址 / websvn
7, 如果遇到 Unable to find "enscript" tool at location "/usr/bin/enscript 这样的问题, 安装一下 enscript 就能修复了.
yum install enscript
注意: Linux 上 SVN 用浏览器打开的界面都比较丑, 如果想要下面的, 需要 在 Windows 系统上, 搭建 VisualSVN server .
来源: http://www.bubuko.com/infodetail-2865360.html