站在巨人的肩膀上,才能攀登更高峰。。有了高手的文档,SVN +Apache配置真是简单啊,赞一个。这拷一个,那删一个一步步下来就o了。。。
      这个和cvs基本上差不多,关键是在内部实现机制上有点不同,好像主要体现在认证上哈,客户端可以同过windows专用的TortoiseSVN,像什么新建create repository here,导入import导出export ,check out ,commit啊

等等皆可以通过鼠标右键完成。嘻嘻,下一步搬到linux上头去,现在要做的就是破解JiRA,还让我做一个软件工程工具的培训,靠。净干边缘活 了,奶奶的。想把文档传上了 不知道怎么传啊,散了,拷过来吧。



SVN 服务端 安装和配置


1.Windows 环境下 基于 Apache 的SVN 服务器安装及配置


1.1 安装


1.1.1 安装Apache


( 1)下载Apache

地址 http://httpd.apache.org/download.cgi


 注意: Apache低于2.0.54的Windows版本的存在编译问题,低于2.0.54的版本不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.3。当前建议下载Apache 2.0.59


   (2) 安装


apache_2.0.59-win32-x86-no_ssl.msi ,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址。


   注意:如果你已经有了 IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录 /Apache Group/Apache2/conf,打开 httpd.conf。编辑文件的 Listen 80为其他可用的端口,例如 Listen 81,然后重新启动-这样就不会那个问题了。


 ( 3)检查


安装完成后浏览 http://localhost/ 若成功,可看到apache页面。


 


1.1.2 安装Subversion


 ( 1)下载 Subversion


地址: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91


( 2)安装


svn-1.4.3-setup.exe 安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。


 ( 3)后续


步骤 1 从C:/Program Files/Subversion/bin 中将

mod_authz_svn.so mod_dav_svn.so复制到 

 

  C:/Program Files/Apache Group/Apache2/modules下 

 
 
 intl3_svn.dll libdb*.dll 

 

  C:/Program Files/Apache Group/Apache2/bin下 

 
 
      步骤 
 2 找到 
 C:/Program Files/Apache Group/Apache2/conf/httpd.conf 
 文件去掉如下几行的注释 
 (删除 '#'标记):  

 
#LoadModule dav_fs_module modules/mod_dav_fs.so
 
#LoadModule dav_module modules/mod_dav.so
 

  将下面几行添加到 
 LoadModule部分的最后。 

 
LoadModule dav_svn_module modules/mod_dav_svn.so
 
LoadModule authz_svn_module modules/mod_authz_svn.so
 

    
 1.1.3 
 安装TortoiseSVN(可选) 

 

    

 
 
 1.2 
 配置 

 
 
 1.2.1 
 配置服务 

 

  编辑 
 c:/program files/apache group/apache2/conf/httpd.conf 
 文件, 

 
 
 添加下面代码。 

 

    

 
<Location /svn/>
 
DAV svn
 
SVNListParentPath on
 
#SVNPathAuthz off
 
SVNParentPath "C:/svndata"
 

    

 
#SVNIndexXSLT "/svnindex.xsl"
 
SSLRequireSSL
 
AuthType Basic
 
AuthName "Subversion repositories"
 
AuthUserFile "C:/svndata/passwd"
 

    

 
AuthzSVNAccessFile "C:/svndata/AuthzSVNAccessFile"
 
#<LimitExcept GET PROPFIND OPTIONS REPORT>
 
#Require valid-user
 
#</LimitExcept>
 
#Satisfy Any
 
Require valid-user
 
</Location>

 


备注: <Location /svn/>可列出C:/svndata 下的版本库,若为<Location /svn>则不能访问https://127.0.0.1/svn下的项目只能这样访问,如https://127.0.0.1/svn/proj1


 


说明


设置

解释

<Location /svn>

意思是Subversion版本库的URL是http://MyServer/svn/

DAV svn

告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。

SVNListParentPath on

对于Subversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库。

SVNParentPath D:/SVN

告诉Subversion需要查看的版本库位于D:/SVN之下

SVNIndexXSLT "/svnindex.xsl"

使用它可以在用浏览器浏览时更好看。

AuthType Basic

激活基本认证,就是用户名/密码

AuthName "Subversion repositories"

用来说明何时弹出要求用户输入认证信息的认证对话框

AuthUserFile passwd

指定使用的认证密码文件

AuthzSVNAccessFile

位置Subversion版本库的访问控制文件的路径

Require valid-user

指定只有输入了正确的用户/密码的用户可以访问URL


1.2.2 建立版本库


与此配置对应,需要在 C驱动器建立目录svn,其中可能包含多各项目得代码版本库,假设存在proj1、proj2、proj3,并已经建立了版本库。


例如 svn-win32-1.4.3/bin/svnadmin create --fs-type fsfs c:/ svndata /proj1


 


1.2.3 设置密码文件


c:/program files/apache group/apache2 下运行


bin/htpasswd -c passwd <username>


可在c:/program files/apache group/apache2创建passwd文件,可将它移动到其它位置,但要和 AuthUserFile 的配置一致。


此后添加用户,使用如下命令:
bin/htpasswd passwd <username>
删除用户,使用如下命令:
bin/htpasswd -D passwd user


 


1.2.4 设置权限文件


AuthzSVNAccessFile 
 所指定的路径下生成名为svnaccessfile的文件,注意名称与配置文件一致,此处不使用扩展名。编辑一下内容:
 

  [groups] 

 

  admin=lds 

 

  [/] 

 

  * = r 

 

  @admin = rw 

 

  dangerman = 

 

  [proj1:/] 

 

  @admin = rw 

 

  [proj2:/] 

 

  @admin = r 

 

  [proj3:/] 

 

  @admin =


基本含义是根目录下任何人有读权限, admin组有读写权限;admin对proj1读写权限 对proj2有读权限,对 proj3没有任何权限。


 


备注: 如果有中文路径,那要把文件存成UTF8格式


1.3 扩展


1.3.1 为Apache启用SSL

mod_ssl_etc.rar中 
 的mod_ssl.so拷到Apache的modules目录、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目录、conf/ssl.conf拷到conf目录,在Apache的conf目录中用文本编辑器打开ssl.conf
 

  将下面这些行用 
 #注释掉: 

 
DocumentRoot "c:/apache/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log 
 
    ( 
 2)修改 

 
SSLCertificateFile conf/ssl.crt/server.crt
 

  为 

 
SSLCertificateFile conf/ssl/my-server.cert
 
 
    ( 
 3)修改 

 
SSLCertificateKeyFile conf/ssl.key/server.key
 

  为 

 
SSLCertificateKeyFile conf/ssl/my-server.key
 
    
 (4)修改
 
SSLMutex file:logs/ssl_mutex
 
     
 
SSLMutex default
 
    
 (5) 
 删除以下两行(如果有)
 
          
 <IfDefine SSL>
</IfDefine> 
    
 (6) 
 打开Apache配置文件(httpd.conf),去掉这行的注释
 
#LoadModule ssl_module modules/mod_ssl.so
 
   
 (7)  
 将压缩包openssl.cnf.rar  
 中openssl.cnf文件拷贝到 
 C:/program files/apache group/apache2/bin 
 下。 
 
           
 然后C:/program files/apache group/apache2在用以下命令创建证书
 
bin/openssl req -config bin/openssl.cnf -new -out my-server.csr   
 
bin/openssl rsa -in privkey.pem -out my-server.key
 
bin/openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
 
bin/openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
 
这时在Apache目录下创建了一些文件(my-server.der.crt, my-server.csr, my-server.key, .rnd, privkey.pem, my-server.cert)。将这些文件拷贝到目录conf/ssl

如果目录ssl不存在,你必须先创建一个。


 (8)  可以选择在<location>语句块中添加SSLRequireSSL语句强制使用ssl


  最后重启一下Apache服务


 


SSL 补充


1. 
 首先要生成服务器端的私钥 
 (key 
 文件 
 ):
openssl genrsa -des3 -out server.key 1024
 
 运行时会提示输入密码 
 , 
 此密码用于加密 
 key 
 文件 
 ( 
 参数 
 des3 
 便是指加密算法 
 , 
 当然也可以选用其他你认为安全的算法 
 .), 
 以后每当需读取此文件 
 ( 
 通过 
 openssl 
 提供的命令或 
 API) 
 都需输入口令 
 . 
 如果觉得不方便 
 , 
 也可以去除这个口令 
 , 
 但一定要采取其他的保护措施 
 !
 
 去除 
 key 
 文件口令的命令 
 :
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
 
 生成 
 Certificate Signing Request 
 ( 
 CSR 
 ) 
 , 
 生成的 
 csr 
 文件交给 
 CA 
 签名后形成服务端自己的证书 
 . 
 屏幕上将有提示 
 , 
 依照其指示一步一步输入要求的个人信息即可 
 .

3. 
 对客户端也作同样的命令生成 
 key 
 及 
 csr 
 文件 
 :
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR 
 文件必须有 
 CA 
 的签名才可形成证书 
 . 
 可将此文件发送到 
 verisign 
 等地方由它验证 
 , 
 要交一大笔钱 
 , 
 何不自己做 
 CA 
 呢 
 .
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

5. 
 用生成的 
 CA 
 的证书为刚才生成的 
 server.csr,client.csr 
 文件签名 
 :
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

 
 现在我们所需的全部文件便生成了 
 .

 
 另: 
 
client 
 使用的文件有: 
 ca.crt,client.crt,client.key
server 
 使用的文件有: 
 ca.crt,server.crt,server.key
.crt 
 文件和 
 .key 
 可以合到一个文件里面,本人把 
 2 
 个文件合成了一个 
 .pem 
 文件(直接拷贝过去就行了)


 


 


 


1.3.2 为用户提供密码修改服务


Apache密码修改.rar中提示操作。


1.3.3 外观


去掉 #SVNIndexXSLT "/svnindex.xsl" #号标志


 (2) 将附件中 apache_svn_skin 中三个文件放到


C:/Program Files/Apache Group/Apache2/htdocs 下