linux+apache+svn搭建
网上一搜一大堆案例,但感觉都没说到点子上,初次搭配总浪费很多时间。
1:官网有详细说明,请参考 http://svnbook.red-bean.com/
关键点:如果用apache http server(也即通过http访问svn), 那么:
1) subversion安装好,再创建一个repository后,就什么配置也不用做了,不配置authz、不配置passwd、不配置svnserver.conf、不需启动svnserver、一切的一切都只需在apache http server中配置。
2) apache http server安装好后,建议用yum(redhat)安装,然后进入/etc/httpd/目录,先贴上配置步骤,再说明
一:进入/etc/httpd/conf.d/目录,打开subversion.conf文件。如图:
二:放开注释,配置成你的仓库地址,
<Location /svn>: 意思为http访问为:http://hostname/svn
SVNParentPath:顾名思义仓库父目录,也即如上图/home/svn/目录是所有仓库的父目录,里面可添加许多仓库。它和<Location /svn>是映射关系,即http访问/svn,也就是访问/home/svn
AuthType Basic: 基本认证,具体说明见官方
AuthUserFile: 存储用户名和密码的文件
AuthzSVNAccessFile:配置用户权限文件,可访问哪些仓库、哪些目录
Require valid-user: 有效用户
三::wq!后,执行
svnadmin create repos --- 创建仓库repos,名字随便起, 该命令在/home/svn/父目录下执行,执行成功就能看到repos目录且下面多了conf、db、format、等等文件。
chown -R apache.apache repos ---赋予apache访问权限,至关重要,否则启动server后还是会无法访问。
chcon -R -t httpd_sys_content_t repos ---递归修改安全上下文的类型配置,至关重要,否则无法访问。
四:配置用户名和密码,执行(任意目录,只要安装了apache http server,该命令默认提供):
htpasswd -b -c -m /etc/httpd/svnconfig/svn-user.htpasswd 用户名 密码 --- htpasswd -b 创建用户名和密码直接一行执行完毕,不需换行提示输入密码, -c 创建新文件 -m 强制MD5加密密码,信息存储在svn-user.htpasswd文件里
htpasswd -b -m /etc/httpd/svnconfig/svn-user.htpasswd 用户名 密码 ---创建第二个用户,就不需要在新建文件了,即去掉了-c
最简单方式,看不懂命令,直接输入htpasswd -h 会提示帮助说明,按照说明操作即可。
五:配置用户权限,执行:
在/etc/httpd/svnconfig/目录里执行vim svn-authz.conf,名字随便起,内容很重要,如图:
[groups] 表示下面都是组,里面有manager和dev两个组
[/] 表示任意目录,下面是用户xliu具有rw权限。
[repos:/]表示repos仓库下面的任意工程,下面是manager组和dev组的用户具有rw权限。
六:一切配置完毕,重启apache http server 执行:
/etc/init.d/httpd restart
访问:http://hostname/svn/repos即可提示输入用户名密码、进入看到如图:这里的foundation目录是创建的一个文件夹而已,如果没有创建foundation目录,进入则什么也看不到。
七:利用eclipse连接svn导入工程或者通过命令行导入工程即可,具体不再赘述。
说明点:
1) 一般svn配置都是在httpd.conf文件里面配置svn模块,这里为什么直接在/etc/httpd/conf.d/subversion.con里面配置?
答:这是因为httpd.conf文件里面有一行: Include conf.d/*.conf ,即已经默认添加subversion.conf配置文件到httpd.conf文件里,所以直接在subversion.conf里面配置,打开suversion.conf看见前三行:
2) 如果配置过程中,出现任何问题,
只需访问/etc/httpd/logs/error_log 即可看到错误信息,根据错误排查即可,附上命令:tail -100f /etc/httpd/logs/error_log,然后通过http访问svn,看错误信息排查
也可访问/var/log/httpd/error_log查看错误信息。
至此一切配置完毕!