Centos 7.2
前置过程需先安装 httpd ( apache ) server
yum install httpdsystemctl start httpd iptables -I INPUT -p tcp --dport 80 -j ACCEPTchkconfig httpd on
参考
https://wiki.centos.org/zh-tw/HowTos/Subversion
安装
[root@lucifer ~]# yum install mod_dav_svn subversion
4.1. Apache
在你进一步学习之先,你需要确定 Apache 已经被设置好。我假设你在做一个全新的安装,因此如果你的 Apache 已经在运作中……请小心你所做的改动。我亦会解释如何设置基本的密码保护。然而,假若你想容许任何人存取版本库,你可轻易地省略这部份。
你首先要做的事情就是开启 /etc/httpd/conf/httpd.conf,而且最低限度更改 ServerName 这个指引。如果你需要协助或拥有更複杂的设定,请参详 Apache 的文件。
[root@lucifer ~] vim /etc/httpd/conf/httpd.conf —— 作所需修改并存档[root@lucifer ~] service httpd start[root@lucifer ~] chkconfig httpd on
在网络上浏览你的机器,http://yourmachine ,看看你能否取得测试页。做得到吗?好了,让我们进到更有趣的事情。
4.2. Subversion 给 Apache 的设定
下一步就是在 Apache 内设置某些设定,好让 Subversion 与 Apache 能够融洽相处。现在让我们看看 Subversion 为你安装的範例设定档。
[root@lucifer ~] cd /etc/httpd/conf.d/[root@lucifer ~] vim subversion.conf
有需要的话,请确定你移除这两行的注释
LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so
加入下列内容来支援基本验证,并将 Apache 指向实际放置版本库的地方。
<Location /repos> DAV svn SVNPath /var/www/svn/repos AuthType Basic AuthName "Subversion repos" AuthUserFile /etc/svn-auth-conf Require valid-user</Location>
上面的位置是 Apache 在 URL 列上使用的。举个例说:http://yourmachine/repos 指向你所指定的 SVNPath。上面只是一个範例,因此请按你的喜好放置东西。请确定你在完成编辑后储存档案。
然后我们须要建立你在上一部所指定的密码档。开始时你要利用 -cm 这个选项。它会建立档案并用 MD5 将密码加密。如果你需要加用户,请确定你只使用 -m 选项,而不包含初次建立时的 -c。
[root@lucifer ~] htpasswd -cm /etc/svn-auth-conf yourusernameNew password:Re-type new password:Adding password for user yourusername[root@lucifer ~] htpasswd -m /etc/svn-auth-conf anotherusernameNew password:Re-type new password:Adding password for user anotherusername
4.3. 设定你的版本库
你接着要做的事情就是建立你用来提交及取出档案的版本库。利用 svn 所包含的工具,这是很容易的。
[root@lucifer ~] cd /var/www/ —— 或者你在上面所指定的路径[root@lucifer ~] mkdir svn[root@lucifer ~] cd svn[root@lucifer ~] svnadmin create repos[root@lucifer ~] chown -R apache.apache repos[root@lucifer ~] service httpd restart
现在去测试你能否透过网页浏览器存取你的版本库:http://yourmahcine/repos 。你应该取得一个对话方块询问用户名称及密码。若然是这样,请输入你的凭证,然后你应该看见一版 Revision 0:/ 的页面。这样的话,版本库的设定便大工告成了。如果你须要多个版本库,请参考上面连结内的文档。这里只示範如何设置一个版本库及开始应用它。话说回来,让我们就这样做。
存取控制清单一般来说,你不会想将所有版本库的存取权给予所有用户。你可以利用 ACL 来限制每位用户存取版本库的权限。ACL 可以透过 AuthzSVNAccessFile 这个档案选项来启用,它以一个档名作为参数。例如:
AuthzSVNAccessFile /etc/svn-acl-conf
你可以在相关的 Location 部份加入它:
<Location /repos> DAV svn SVNParentPath /var/www/svn/repos AuthzSVNAccessFile /etc/svn-acl-conf AuthType Basic AuthName "Subversion repos" AuthUserFile /etc/svn-auth-conf Require valid-user</Location>
然后你可以建立 /etc/svn-acl-config。这个档案内藏有这个格式的分段:
[版本库名称:版本库路径]
用户 = 存取权
当中存取权可以是 r(唯读)、rw(读写)、或空白(禁止存取)。预设的 ACL 是禁止用户存取版本载。假设你有一个名叫 framework 的版本库,而你想给 john 唯读的权限,及 joe 读写的权限。你可以加入下面这个分段:
[framework:/]john = rjoe = rw
你亦可以在名叫 groups 的分段内建立群组,然后在存取控制清单内将 @ 符号放在群组前面。例如:
[groups]staff = joe, george[framework:/]john = r@staff = rw
如果你想令所有用户能阅读每个版本库,你可以为每个版本库的根目录加入以下一个分段:
[/]* = r
如果想设定 谁才可以存取某些资料夹
subversion restrict user access folderscd /etc/httpd/conf.d/vim subversion.conf
多加入
AuthzSVNAccessFile /etc/svn-acl-conf
在 etc 下新增一档案 叫 svn-acl-conf
svn-acl-conf 内容设定如下
[repos:/]john = rw(表示john 拥有整个资料夹浏览及编辑权限 )[repos:/f1/f2]Mary = r ( 表示 Mary 只允许浏览 /f2 下资料夹内容 )
小心资料夹名称后不要加到斜线了 例如 : f1/f2/
最后
设定SELinux
vi /etc/selinux/config
由原本 #SELINUX=enforcing 改为 SELINUX=disabled
记得重开机喔 !!
否则 commit 时 会一直出现 could not begin a transaction否则 commit 时 会一直出现 could not begin a transaction否则 commit 时 会一直出现 could not begin a transaction否则 commit 时 会一直出现 could not begin a transaction