`

Windows server 2003 下Appache 和 Subversion 进行双向认证(一)

 
阅读更多

去年转到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

    在Windows操作系统上构建一个模拟Apache Web Server的项目是一项技术挑战,涉及到网络编程、多线程以及服务器架构等关键概念。Apache Web Server是世界上最流行的HTTP服务器软件之一,它以其稳定性、可扩展性和灵活...

    tutorial_php.rar_Server_appache_example_legh4u_php

    标题“tutorial_php.rar_Server_apache_example_legh4u_php”暗示了这是一个关于PHP与Apache服务器集成的教程资源,其中可能包含实例代码或演示。描述“lesson about php and apache”进一步确认了这个主题,即教授...

    appache ftp 资源下载

    FTP是一种网络协议,用于在客户端和服务器之间进行文件传输,广泛应用于Web开发、系统管理以及数据迁移等场景。Apache的FTP库为开发者提供了一个方便的API,简化了FTP相关的编程任务。 Apache的FTP库主要有两个项目...

    Appache HTTP Server

    Apache HTTP Server是一个开源的Web服务器软件,由Apache Group开发并维护,起源于1995年美国国家超级计算应用中心(NCSA)的HTTP精灵程序。这个名字来源于"A patchy server",暗示了它的源代码充满了各种补丁,随着...

    php appache

    **第三步**: 更新Windows系统路径: - 在系统的环境变量中添加`D:\Inetpub\PHP;D:\Inetpub\PHP\ext`。 **第四步**: 编辑Apache配置文件`httpd.conf`: 1. **网站根目录**: 将`DocumentRoot`和`&lt;Directory&gt;`的路径...

    win2003配置apache+PHP+MySQL运行环境

    windows2003系统下搭配apache+php+mysql+phpmyadmin+ZendOptimizer的服务器环境

    appache-maven-3.0.5下载

    Apache Maven 是一个强大的Java项目管理工具,它极大地简化了构建、依赖管理和项目生命周期的管理。在Java开发领域,Maven 已经成为了事实上的标准,它通过使用项目对象模型(Project Object Model,简称POM)文件,...

    PHP + mysql +appache好用的网站搭建

    最好的appser sqlyogsqlyogsqlyogsqlyogsqlyogsqlyogsqlyog

    Apache Http Server的安装与配置负载均衡手册

    使用Apache Http Server作为负载均衡的详细配置方法,手册中详细记录了其作为反向代理服务器代理后端2台Web Server的过程。

    SVN + appache配置使用HTTP访问.txt

    cnetons7 配置svn使用http访问库,通过安装svn+appache配置http访问,不再需要svn://+ip:3690 模式

    appache&php;环境配置+ssl配置服务器(个人整理,可能不完整)

    这会创建一个2048位的RSA私钥(server.key)和CSR文件(server.csr)。 2. **申请SSL证书** 提交CSR到证书颁发机构(CA),获取签署的SSL证书。 3. **配置Apache SSL模块** 在httpd.conf中启用SSL模块: ``` ...

    Appache Jmeter V3.0压力测试工具.rar

    Appache Jmeter 3.0是一款压力测试工具,是一款基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域,是压力测试的首选的免费开源的软件。为方便大家安装和使用...

    Vorlagenpaket Schule:LibreOffice、Appache Office 和 Co. 的模板-开源

    【标题】"Vorlagenpaket Schule:LibreOffice、Appache Office 和 Co. 的模板-开源"指的是一个开源的模板包,适用于教育领域的 LibreOffice 和 Apache Office 等办公软件。这个模板集合旨在为学校环境提供方便,帮助...

    appache_pgadmin4postgresql

    Apache PgAdmin4是PostgreSQL数据库管理系统的一个流行的图形用户界面工具,专为管理和操作PostgreSQL数据库设计。PgAdmin4提供了一个直观且功能丰富的环境,使得数据库管理员、开发人员以及普通用户可以方便地创建...

    org.appache.http.legacy

    Android 6.0不再支持 Apache HTTP client, 建议使用 HttpURLConnection 代替。如果还想要继续使用 Apache HTTP client 的,请在build.gradle中添加下面的代码

    Nginx 代理 Apache 下某一个工程

    这里我们探讨的主题是如何使用Nginx作为代理服务器,代理Apache下的某个特定工程,以实现更优化的流量管理和性能提升。主要涉及的技术栈包括Nginx、Tomcat以及它们之间的集成。 首先,Nginx是一款轻量级、高性能的...

    appache配置管理多个网站

    Apache 配置管理多个网站是一项常见的任务,尤其对于拥有多个在线业务或子品牌的组织来说。在本场景中,我们有 desk.xker.com 和 tool.xker.com 两个域名,需要将它们都指向同一个 IP 地址,即 219.13.34.32。以下是...

    appache操作微软办公文档

    Apache POI是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。这个项目允许开发者使用Java编程语言来创建、修改和显示这些文档。...

    appache_doris_fe.zip

    6. **分布式一致性**:Apache Doris 使用 Paxos 协议实现分布式一致性,保证在多节点环境下元数据的一致性和高可用性。 7. **数据生命周期管理**:FE 支持数据的生命周期管理策略,如数据的自动删除和归档,以节省...

Global site tag (gtag.js) - Google Analytics