去年转到Subversion下后,确实尝到了Subversion的不少甜头,那个时候开发比较集中,绝大部分开发人员都不进行异地开发,因而一直使用Subversion 自带的svnserve服务器运行版本服务。随着公司业务的发展软件开发人员开发场地的分散,版本问题突显,为了解决这个问题,我不得不停下手头的工作研究下如何配置到外网上去。谁让我编程以外还得处理配置管理问题呢?!!经过一番Google和Baidu,总算搞定。做这记录在这里备忘.
本文阅读者必须已经能够熟悉使用SVN及理解版本库之类配置管理的基本概念,这里不对SVN安装配置这些东西作说明,官方文档已经说的够清楚了.
以下是我所用的资源信息:
OS : Windows Server 2003
SVN : svn-1.4.6-setup.exe
HTTP Server : apache_2.2.6-win32-x86-openssl-0.9.8e.msi
Text Editor : gvim72.exe
一. Apache 服务器安装及配置
到apache官方http://archive.apache.org/dist/httpd/binaries/win32/下载apache服务器 2.2.6(包含openssl)的版本,一定要2.2.6以上的版本,第一次我下的2.0的结果累死也不对,Google了下才发现svn1.4.6和apache 2.0的版本结合不起来……,当然可以不下含用openssl的版本,不过你可能需要到http://www.openssl.org/ 下载openssl并安装,或许要编译,我比较懒,没有去弄,也许你可以试试.
有Windows操作经验的人都会安装,我安装的路径是默认的C:\Program Files\Apache Software Foundation\Apache2.2,反正随你便.安装成功后,服务器会自动启动,如果没有启动,检查端口80是否已被占用。你也可以在安装目录下的bin文件里找到ApacheMonitor.exe启动服务,再出错,就打开/logs/下的日志看看去Google 一下,我已经够啰嗦的了。
验证下:浏览器地址栏中输入:http://localhost ,你将会看到 It works!. Apache就算安完啦!
二. 让SVN运行起来
网上很多说先安装Apache ,再安装svn,SVN会自动配置到Apache里,但是对于我这种SVN已经很好地运行着的情况,我可不愿把它卸载掉再重新装起来,吃饱了撑着!幸好svn官方把这种情况考虑到了,那就照着说明来吧。Let’s Go!
a) 告诉它要做什么
Apache并不知道它将做什么样的服务,我们得告诉它应该运行什么.
找到Subversion的安装目录,我的在C:\Program Files\Subversion\下面,进入bin目录。把下面的
mod_authz_svn.so, mod_dav_svn.so,libdb44.dll拷贝到Apache安装目录的conf文件夹下面(例如我的
就是C:\Program Files\Apache Software Foundation\Apache2.2\conf下).
用文本编辑器(比如Ultraedit 32, Editplus,最好别用写字板和记事本.我最近对Linux下的工具比较感兴
趣,所以用的是NT下的gvim,根linux下的基本一样,很好用而且免费)打开Apache安装目录下的
/conf/ httpd.conf.找到
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
两行,去掉前面的注释符#, 然后在这一系列LoadModule的最后面加上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
不一定非要在最后,便这两行必须在mod_dav.so的后面,但是我建议你放到后面好些。
这样Apache就会知道在启动时加载svn的模块与身份认证模块了
b) 我在哪里
前面只是告诉Apache要做什么,但是仓库在哪里,Apache一点也不知道,因而你还得告诉它你的配
置库在哪个位置.
还是在httpd.conf里,到最后一行,加入
<Location /svn>
DAV svn
SVNParentPath D:\svnServices
</Location>
保存,重启服务器.
作点说明:
<Location /svn>中的/svn标识了svn服务的根路径.表示你所有项目库服务都基于http://ip:port/svn/
下的./svn命名随你喜欢
DAV svn 指示DAV模块,老实说,现在我也不清楚它的具体作用,不用变它
SVNParentPath , 指示SVN仓库父目录的所在地,相当于svnserve -d -r D:\svnServices 中的
-r 参数.
另外,Subversion与Apache版本不一致时,就是在这里重启不了,害我重查了几次配置文件和说
明文档。
验证一下:
如果你的配置管理库和我采用的管理方式有着一样的结构
/ svnServices /repse1
/ svnServices /repse2
那么你就应该可以通过http://localhost/svn/repse1 看到repse1的源码库目录,那么恭喜你,
基于http 的 svn服务器已经正确运行了.
c) 别高兴太早-安全问题
随便找台开发机,checkout, edit, commit, update,看下吧,肯定吓一跳,随便哪个人都可以轻
松浏览,修改代码库,想想把它放在公网上的后果吧!!
那么让我们现在开始处理用户身份的问题,其实很简单.
进入到Apache安装目录,使用htpasswd.exe 创建密码文件。htpasswd命令格式是:
htpasswd [控制参数] 密码文件 用户名
由于是第一个用户,我们使用如下命令: htpasswd –cm uservalidate username1
回车后会要求输入该用户密码,这条命令意思是创建uservalidate文件 –c 表示
密码是使用MD5计算散列值 –m 控制,可以写成 –cm,并且加入用户username1.
如果还需要加入其它用户,则使用命令 htpasswd –m username2加入就可以
把生成的密码文件 uservalidate 拷贝到一个目录中,只是为了方便管理,放到哪里都可以。
我的放在了C:\svnValidate 下面。记住这个目录地址,下面要用到.
编写授权策略文件,这个文件同样随便放哪个目录。为了方便管理,我的仍然放在了
C:\svnValidate 下面,命名为accessValidate,你也可以命一个你喜欢的名字。这个文件的编写和svn
的授权文件编写方式基本一样。所以不要担心。如可以指定源码仓库
[reps1:/branches/calc/bug-142]
harry = rw
sally = r
[reps2:/]
sally = rw
@ everyone = r #指定组
还可以指定组
[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = @cal-developers, @paint-developers
也可以指定匿名用户:
[/]
* = r
熟悉吧,太相似了,配好你自己的吧!详细的可以参考《svn中文手册》的6.4.4.2和6.4.4.3节.
然后打开httpd.conf文件,找到前面配置的<Location /svn/>小节,在里面写入配置信息,结果看
起来像下面的一样:
<Location /svn>
DAV svn
SVNParentPath D:\svnServices
AuthzSVNAccessFile C:\svnValidate\svnAccess # 授权策略文件路径
Require valid-user # 要求验证客户端身份
AuthType Basic #基本认证方式
AuthName "xxx公司-源码服务器" # 密码输入框的提示信息
AuthUserFile C:\svnValidate\userValidate # 用户和密码信息文件
</Location>
OK,保存配置,重启服务器.
验证一下:
打开http://localhost/svn/resp1 , 怎么样?要求输入密码了吧,想得到源码?哼哼!
权限策略配好了,好好管理你的源码库吧。
下一部分写下如何通过SSL进行双向认证,加强我们的源码库的保护。虽然都在提倡开源,
但……适合下我们的国情嘛!
没时间写了,待续…….
相关推荐
在Windows操作系统上构建一个模拟Apache Web Server的项目是一项技术挑战,涉及到网络编程、多线程以及服务器架构等关键概念。Apache Web Server是世界上最流行的HTTP服务器软件之一,它以其稳定性、可扩展性和灵活...
标题“tutorial_php.rar_Server_apache_example_legh4u_php”暗示了这是一个关于PHP与Apache服务器集成的教程资源,其中可能包含实例代码或演示。描述“lesson about php and apache”进一步确认了这个主题,即教授...
FTP是一种网络协议,用于在客户端和服务器之间进行文件传输,广泛应用于Web开发、系统管理以及数据迁移等场景。Apache的FTP库为开发者提供了一个方便的API,简化了FTP相关的编程任务。 Apache的FTP库主要有两个项目...
Apache HTTP Server是一个开源的Web服务器软件,由Apache Group开发并维护,起源于1995年美国国家超级计算应用中心(NCSA)的HTTP精灵程序。这个名字来源于"A patchy server",暗示了它的源代码充满了各种补丁,随着...
**第三步**: 更新Windows系统路径: - 在系统的环境变量中添加`D:\Inetpub\PHP;D:\Inetpub\PHP\ext`。 **第四步**: 编辑Apache配置文件`httpd.conf`: 1. **网站根目录**: 将`DocumentRoot`和`<Directory>`的路径...
windows2003系统下搭配apache+php+mysql+phpmyadmin+ZendOptimizer的服务器环境
Apache Maven 是一个强大的Java项目管理工具,它极大地简化了构建、依赖管理和项目生命周期的管理。在Java开发领域,Maven 已经成为了事实上的标准,它通过使用项目对象模型(Project Object Model,简称POM)文件,...
最好的appser sqlyogsqlyogsqlyogsqlyogsqlyogsqlyogsqlyog
使用Apache Http Server作为负载均衡的详细配置方法,手册中详细记录了其作为反向代理服务器代理后端2台Web Server的过程。
cnetons7 配置svn使用http访问库,通过安装svn+appache配置http访问,不再需要svn://+ip:3690 模式
这会创建一个2048位的RSA私钥(server.key)和CSR文件(server.csr)。 2. **申请SSL证书** 提交CSR到证书颁发机构(CA),获取签署的SSL证书。 3. **配置Apache SSL模块** 在httpd.conf中启用SSL模块: ``` ...
Appache Jmeter 3.0是一款压力测试工具,是一款基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域,是压力测试的首选的免费开源的软件。为方便大家安装和使用...
【标题】"Vorlagenpaket Schule:LibreOffice、Appache Office 和 Co. 的模板-开源"指的是一个开源的模板包,适用于教育领域的 LibreOffice 和 Apache Office 等办公软件。这个模板集合旨在为学校环境提供方便,帮助...
Apache PgAdmin4是PostgreSQL数据库管理系统的一个流行的图形用户界面工具,专为管理和操作PostgreSQL数据库设计。PgAdmin4提供了一个直观且功能丰富的环境,使得数据库管理员、开发人员以及普通用户可以方便地创建...
Android 6.0不再支持 Apache HTTP client, 建议使用 HttpURLConnection 代替。如果还想要继续使用 Apache HTTP client 的,请在build.gradle中添加下面的代码
这里我们探讨的主题是如何使用Nginx作为代理服务器,代理Apache下的某个特定工程,以实现更优化的流量管理和性能提升。主要涉及的技术栈包括Nginx、Tomcat以及它们之间的集成。 首先,Nginx是一款轻量级、高性能的...
Apache 配置管理多个网站是一项常见的任务,尤其对于拥有多个在线业务或子品牌的组织来说。在本场景中,我们有 desk.xker.com 和 tool.xker.com 两个域名,需要将它们都指向同一个 IP 地址,即 219.13.34.32。以下是...
Apache POI是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。这个项目允许开发者使用Java编程语言来创建、修改和显示这些文档。...
6. **分布式一致性**:Apache Doris 使用 Paxos 协议实现分布式一致性,保证在多节点环境下元数据的一致性和高可用性。 7. **数据生命周期管理**:FE 支持数据的生命周期管理策略,如数据的自动删除和归档,以节省...