apache2.0.55+Subversion1.6.2---SVN|TortoiseSVN配置
apache2.2.11+Subversion1.6.2---SVN|TortoiseSVN
SVN 服务端 和配置
1.Windows环境下 基于 Apache 的SVN 服务器 安装及配置
1.1安装
1.1.1安装Apache
(1)下载Apache
地址
注意:Apache低于2.0.54的Windows的存在编译问题,低于2.0.54的不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.3。
(2) 安装
下载完成后运行apache_2.2.11-win32-x86-no_ssl.msi ,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址。
注意:如果你已经有了IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录\Apache Group\Apache2\conf,打开httpd.conf。编辑的Listen 80为其他可用的端口,例如Listen 81,然后重新启动-这样就不会那个问题了。
(3)检查
安装完成后浏览 若成功,可看到apache页面。
1.1.2安装Subversion
(1)下载 Subversion
地址:
(2)安装
运行Setup-Subversion-1.6.2.msi 安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。
(3)后续
步骤1 从d:\Subversion\bin 中将
mod_authz_svn.so mod_dav_svn.so复制到
d:\Apache2\modules下
intl3_svn.dll libdb*.dll
d:\Apache2\bin下
步骤2 找到d:\Apache2\conf\httpd.conf文件去掉如下几行的注释(删除 '#'标记,否则添加DAV svn语句后,apache会启动不起来):
#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 配置服务
编辑D:\apache2\conf\httpd.conf文件,
添加下面代码。
<Location /svn/>
DAV svn
SVNListParentPath on
#SVNPathAuthz off
SVNParentPath "D:\svndata"
#SVNIndexXSLT "/svnindex.xsl"
SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "D:\svndata\passwd"
AuthzSVNAccessFile "D:\svndata\Authz"
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user
#</LimitExcept>
#Satisfy Any
Require valid-user
</Location>
备注:
<Location /svn/>可列出C:\svndata 下的版本库,若为<Location /svn>则不能访问下的项目只能这样访问,如
说明
设置 解释
<Location /svn> 意思是Subversion版本库的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,告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库
文章出处:
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 设置密码文件
在路径D:\apache2下运行
bin\htpasswd -c passwd <username>
可在D:\apache2创建passwd文件,可将它移动到其它位置,也可直接htpasswd.exe -cm d:\svn\passwd创建到相应目录,但要和AuthUserFile的配置一致。
此后添加用户,使用如下命令:
bin\htpasswd passwd <username>
删除用户,使用如下命令:
bin\htpasswd -D passwd user
1.2.4 设置权限文件
用文本编辑器在AuthzSVNAccessFile所指定的路径下生成名为authz的文件,注意名称与配置文件一致,此处不使用扩展名。编辑一下内容:
[groups]
admin=lds
[/]
* = r
@admin = rw
dangerman =
[proj1:/]
@admin = rw
#[groups] //这个表示群组设置
#admin = proj2, proj3 //这个表示某群 组里的成员
[proj2:/]
@admin = r
[proj3:/]
@admin =
基本含义是根目录下任何人有读权限,admin组有读写权限;admin对proj1读写权限 对proj2有读权限,对 proj3没有任何权限。
= rw //如果在前面加上@符号,则表示这是个群组权限设置
{SSPI认证。
按上一种方式,用户更换一次密码,就必须修改一次密码文件。用SSPI认证则可以没有这个问题。
Httpd.conf文件:
#SSPI authentication
DAV svn
SVNParentPath d:/repository
AuthzSVNAccessFile d:/repository/accessfilesspi
Require valid-user
AuthType SSPI
AuthName "Subversion repositories"
# SSPI settings
SSPIAuth On
SSPIAuthoritative On
# point to domaincontroller
SSPIDomain domain.com.cn
SSPIOfferBasic On
控制文件AuthzSVNAccessFile要作相应的修改:
[test:/]
domainuser1 = r
domainadministrator = r
[test:/1]
domainuser1 = rw
[test:/2]
domainuser1 =
domainadministrator = rw
}
备注: 如果有中文路径,那要把文件存成UTF8格式
1.3扩展
1.3.1为Apache启用SSL
(1)将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 "d:/apache2/htdocs"
ServerName
ServerAdmin
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下。
然后d:\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 中三个文件放到
D:\Apache2\htdocs 下
二、迁移SVN
注意:在Linux上不行,仓库目录必须放在svn的一级目录下面。另外,这个导入导出过程不能批量,只能一个项目一个项目的做,建议迁移之前,通知使用库的所有人员,先行暂停对版本库的操作,然后停止该库的svn服务
1. 将原来的svn导出为一个文件dumpfile 。
> svnadmin dump 原先的svn的目录路径(/svn/directory) > dumpfile
2. 在另外一台机器上配置同样的SVN服务器环境(参见上面的安装、配置手册)
3. 将dumpfile导入到新的svn 目录中。
> svnadmin load 新建的repos的目录路径(/svn/directory) < dumpfile
4. 将原先服务器的配置文件备份后复制到新服务器中
/etc/httpd/conf/httpd.conf
还有svn目录下的passwd、authz也需要备份后复制到新服务器相同目录下
迁移SVN方法二,使用备份命令svnsync备份的目标库
三、上传的文件放在SVN服务器的哪个目录下
SVN服务器版本库有两种格式,一种为FSFS,一种为BDB
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息
- 最新评论