项目管理工具Redmine + SubVersion + Apache + windows环境安装搭建(转)
RedMine和Svn的下载和安装在上一篇随笔中已经介绍过了,这次主要是关于Apache的安装和配置。关于Apache的安装,有非常非常重要的一点是,最新的SubVersion1.4不支持Apache2.2以上的版本,要使用SubVersion,就要Apache2.0.XX才可以,这一点害人不浅啊,我花费了一天时间,SubVersion+Apache2.2也没有安装成功,想不耽误时间的话就干脆直接用Apache2.0.xx好了。关于Apache的安装,从官网上下载windows的安装包后运行,一路Next就可以了,如果机器上有IIS的话,IIS会占用80端口,需要自己修改Apache的httpd.conf文件中的端口。这一点,网上已经有N多文章了,就不再这里多说了。安装完成后,按照下面的步骤:
1. 拷贝Subversion\bin目录下的mod_authz_svn.so,mod_dav_svn.so,libdb44.dll三个文件到Apache安装目录的modules目录,例如:Apache2\modules。
2. 修改httpd.conf文件。
去掉下面两句前的#:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
添加对SVN的引用,在文件里添加下面两句,放在LoadModule部分的最后:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在文件末尾添加下面的内容:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath Z:
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile Z:\sample_project\conf\passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
要特别注意标红的地方,DAV svn 就是指定了我们在浏览器中要访问的版本库地址,SVNParentPath是你的版本库的上一级目录,例如,你的版本库目录为Z:\ sample_project,那么这里SVNParentPath就应该为Z:,而且注意最后不能有“\”否则会导致Apache服务不能正常启动。
AuthUserFile指向的是用户/密码文件,我们用Apache的htpasswd.exe来生成。
3. 在Dos命令行中,定位到Apache\bin目录,执行命令:
htpasswd.exe -c passwd YourUserName
根据提示输入密码,完成后,会在bin目录下生成一个名为passwd的文件,打开看看,密码已经被加密了,然后将该文件拷贝到版本库的conf目录下,就像上面的配置中的一样,当然,也可以在htpasswd.exe 中直接指定文件路径到版本库的conf目录,将密码文件生成到里面。
需要配置的就是这么多了,下面我们来试试看,在浏览器中输入http://localhost/svn,这里的80可以替换为你使用的端口,然后应该出现提示输入用户名,密码,输入htpasswd.exe中配置的用户和密码,在浏览器中应当出现你在SVNParentPath中设置的路径下的所有目录,点击版本库所在的目录,显示版本库中的文件,例如,我的浏览器重地址为http://localhost:8081/svn/sample_project/,显示内容如下图:
这就表明已经能够正确通过Apache访问SVN版本库了,下面我们在TortoiseSVN中来访问看看,在TortoiseSVN的地址栏中输入http://localhost:8081/svn/sample_project/,按照提示输入用户名,密码,如图:
验证通过后,会看到下面的内容:
已经能够通过Apache访问SVN了,下面只需要在Redmine中再做一下配置就OK了,如下图:
现在就可以在Redmine中以http方式访问版本库了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2010-04-20 Java和.NET互操作:应该放弃Web Service吗