SVN 服务端 安装和配置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

1.1安装

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.1.1安装Apache

1)下载Apache

 注意:Apache低于2.0.54Windows版本的存在编译问题,低于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 ,根据提示进行操作。遇到系统要求输入SERVERURL时,如果你的服务器没有DNS名称,请直接输入IP地址。

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

  3)检查

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

 

1.1.2安装Subversion

  1)下载 Subversion

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>则不能访问[url]https://127.0.0.1/svn[/url]下的项目只能这样访问,[url]https://127.0.0.1/svn[/url]/proj1

 

说明

设置

解释

<Location /svn>

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

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,其中可能包含多各项目得代码版本库,假设存在proj1proj2proj3,并已经建立了版本库。

例如 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 的配置一致。


  

 

1.2.4 设置权限文件

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

[groups]

admin=lds

[/]

* = r

@admin = rw

dangerman =

[proj1:/]

@admin = rw

[proj2:/]

@admin = r

[proj3:/]

@admin =

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

 

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

1.3扩展

1.3.1Apache启用SSL

    1)将mod_ssl_etc.rarmod_ssl.so拷到Apachemodules目录、openssl.exelibeay32.dllssleay32.dll拷到bin目录、conf/ssl.conf拷到conf目录,在Apacheconf目录中用文本编辑器打开ssl.conf

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

DocumentRoot "c:/apache/htdocs"
ServerName [url]www.example.com:443[/url]
ServerAdmin [email]you@example.com[/email]
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 外观

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

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

C:\Program Files\Apache Group\Apache2\htdocs