- 浏览: 158708 次
- 性别:
- 来自: 上海
-
最新评论
-
CodeCity:
将下载得到的Tomcat解压得到的文件安装在Plugin 文件 ...
Eclipse下Tomcat插件的安装 -
aiafei0001:
完全看不懂
Eclipse下Tomcat插件的安装 -
冬之语2008:
你压根就是用的直接copy的方式,就没有领会link的意思!
Eclipse下Tomcat插件的安装 -
xiangxuehai_jiaer:
如果是Ubutun呢?
Eclipse下Tomcat插件的安装 -
yaoweinan:
悲剧我的 没毛
Eclipse下Tomcat插件的安装
安装 Apache
安装 Apache 的先决条件是有一台安装了 Windows 2000,Windows XP SP1+,Windows 2003,Vista 或 Windows Server 2008 的计算机。
警告
请注意,Windows XP 如果没有安装 SP1 将会导致不正常的网络传输,从而搞坏你的版本库!
1.
从 http://httpd.apache.org/download.cgi 下载最新版本的 Apache,请确认你下载的版本是 2.2.x - 1.3.xx 的版本不能工作!
The msi installer for Apache can be found by clicking on other files, then browse to binaries/win32. You may want to choose the msi file apache-2.2.x-win32-x86-openssl-0.9.x.msi (the one that includes OpenSSL).
2.
一旦你有了 Apache2 安装程序,你可以双击它,然后它会指导你的安装过程。请确认你输入的服务器 URL 正确(如果你的服务器没有 DNS 名称,请直接输入 IP 地址)。我建议为所有用户在 80 端口安装 Apache 服务。注意: 如果你已经有了 IIS 或其他监听 80 端口的程序,安装会失败。如果发生这种情况,直接到程序的安装目录 \Apache Group\Apache2\conf,打开 httpd.conf。编辑文件的 Listen 80 为其他可用的端口,例如 Listen 81,然后重新启动 - 这样就不会那个问题了。
3.
现在可以测试 Apache 服务器是否正确运行,将浏览器指向 http://localhost/ - 将会看到一个预先配置的网站。
小心
如果你决定将Apache安装为服务,缺省情况以本地系统帐户运行会发出警告,更安全的方法是为Apache创建一个单独的运行帐户。
请确认Apache运行的帐户是版本库目录的访问控制列表(右键目录|属性|安全)中一个明确的条目,对目录有完全的控制能力,否则,用户不能提交他们的修改。
即使Apache运行于本地系统,你仍然需要这个条目(这种情况下将是SYSTEM帐户)。
如果没有配置 Apache 的此访问权限,你的用户会得到“拒绝访问(Access denied)”的错误信息,在 Apache 的错误日志中的错误代码是 500。
安装 Subversion
1.
Download the latest version of the Subversion Win32 binaries for Apache. Be sure to get the right version to integrate with your version of Apache, otherwise you will get an obscure error message when you try to restart. If you have Apache 2.2.x go to http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.
2.
运行Subversion安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。
3.
使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件/httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program files\apache group\apache2\modules )。
4.
从 Subversion 安装目录将 /bin/libdb*.dll 和 /bin/intl3_svn.dll 复制到 Apache 的 bin 目录。
5.
使用记事本之类的文本编辑器修改Apache的配置文件(通常是 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
配置
现在你已经配置了 Apache 和 Subversion,但是 Apache 不知道如何处理 Subversion 客户端,例如TortoiseSVN。为了让 Apache 知道哪个 URL 是用作 Subversion 版本库,你需要使用任意文本编辑器(例如记事本)编辑 Apache 的配置文件(通常是 c:\program files\apache group\apache2\conf\httpd.conf):
1.
在配置文件最后添加如下几行:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
这个配置告诉 Apache 你所有的 Subversion 版本库位于 D:\SVN。这些版本库对外的 URL 是: http://MyServer/svn/。访问被文件 passwd 中的用户/密码限制。
2.
为了创建 passwd 文件,再次打开命令行提示符(DOS 窗口),进入 apache2 目录(通常是 c:\program files\apache group\apache2),通过输入下面的命令创建文件
bin\htpasswd -c passwd <username>
它将会创建名为 passwd 的文件用于认证。用下面的命令增加其它用户
bin\htpasswd passwd <username>
3.
再次重启Apache服务。
4.
将浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你此前创建的版本库名),如果一切正常,你会被提示输入用户名和密码,然后你会看到版本库的内容。
你刚才输入的简短解释是:
表 3.1. 设置 Apache 的 httpd.conf
设置 解释
<Location /svn> 意思是Subversion版本库的URL是http://MyServer/svn/
DAV svn 告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。
SVNListParentPath on 对于 Subversion 1.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 你有很多可能的选择。
*
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user
to
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
*
使用 passwd 可以整体的控制对版本库的访问,但是如果你希望精确的控制版本库目录访问,你可以去掉下行的注释
#AuthzSVNAccessFile svnaccessfile
,并且创建 Subversion 的访问控制文件。Apache 将会确保只有有效的用户可以访问你的 /svn 目录,然后将用户名传递给 Subversion 的 AuthzSVNAccessFile 模块,这样就可以根据 Subversion 访问控制文件内的规则实现更细粒度的访问控制。请注意路径可以是 repos:path 或简单的 path,如果你不指定特定的版本库,访问控制规则会应用到 SVNParentPath 下所有的版本库。使用的授权策略文件的格式在“路径为基础的授权”一节描述。
*
如果要使浏览器浏览仓库时更“漂亮”,请将去掉下行注释
#SVNIndexXSLT "/svnindex.xsl"
,将文件 svnindex.xsl, svnindex.css 和 menucheckout.ico 放到你的文档根目录中(通常是 C:/Program Files/Apache Group/Apache2/htdocs)。 这个目录在 Apache 配置文件中用 DocumentRoot 指示设置。
你可以直接在我们的代码库http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex中拿到这三个文件。如果访问这个链接需要认证,输入用户名称 guest,无需密码。
TortoiseSVN 版本库中的 XSL 文件有个特性:如果你用浏览器浏览版本库,那么每个版本库中的目录右边会有个图标。如果你点击此图标,那么 TortoiseSVN 会为此 URL 启动检出对话框。
多版本库
如果你使用 SVNParentPath 指示,你就不必在每次添加新 Subversion 版本库时修改 Apache 的配置文件,只需要在第一个版本库所在的位置建立新的版本库就可以了。在我的公司,我可以使用 SMB(普通的 windows 文件访问)直接访问服务器的文件夹,所以我直接在那里创建一个目录,运行 TortoiseSVN 命令TortoiseSVN → 在此创建版本库...,然后一个新的项目建立了...
如果你使用 Subversion 1.3 或更高版本,可以使用 SVNListParentPath on 指示,这样当你使用浏览器访问父路径而不是具体某个版本库时 Apache 就会显示所有版本库列表。
路径为基础的授权
mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。
一个可能的例子:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。
认证和授权是不同的处理过程,如果用户希望获得对版本库的访问,他需要通过全部检查,即通常的认证需求和访问控制文件的授权需求。
使用 Windows 域认证
你已经注意到了,你需要为每个用户在passwd文件中创建用户名/密码条目,如果(因为安全原因)他们希望周期性的修改他们的密码,你需要手动的做出修改。
但是对于此问题有另一个解决方案 - 至少是你在使用域控制器的 LAN 中访问版本库时: mod_auth_sspi!
最初的 SSPI 是由 Syneapps 提供的,包括源代码。但是它的开发已经终止。不过不要失望,社区重新拾起代码并进行了改进,它现在的新主页在SourceForge。
*
下载此匹配你的 Apache 版本的模块,将文件mod_auth_sspi.so复制到 Apache 的 modules 目录。
*
编辑 Apache 的配置文件: 增加一行
LoadModule sspi_auth_module modules/mod_auth_sspi.so
到 LoadModule 节。确认你在下行之前插入此行
LoadModule auth_module modules/mod_auth.so
*
为了让 Subversion 领域使用此认证类型,你需要将
AuthType Basic
修改为
AuthType SSPI
并且在 <Location /svn> 中增加
SSPIAuth On
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOmitDomain on
SSPIUsernameCase lower
SSPIPerRequestAuth on
SSPIOfferBasic On
如果你没有域控制器,可以将域控制器的名称置为 <domaincontroller> 。
请注意,当你使用 SSPI 认证时,没有必要再使用 AuthUserFile 行定义密码文件,Apache 使用 Windows 域验证你的用户名和密码,你需要更新 svnaccessfile 中的用户列表来引用 DOMAIN\username。
重要
The SSPI authentication is only enabled for SSL secured connections (https). If you're only using normal http connections to your server, it won't work.
To enable SSL on your server, see the chapter: “用 SSL 使服务器更安全”一节
提示
Subversion 的 AuthzSVNAccessFile 文件对用户名大小写敏感(JUser 与 juser 不同)。
在微软的世界,Windows 域和用户名不是大小写敏感。即使如此,一些网络管理员还是喜欢创建首字母大写的用户帐号(例如 JUser)。
使用SSPI的一个问题是用户名和密码是用户在提示输入时发送到Subversion的,而IE经常会不管你的帐户是如何建立的都会自动发送你的用户名。
结果就是你必须为每个用户在 AuthzSVNAccessFile 中至少创建两个条目:一个小写的条目和一个与 IE 传递给 Apache 一样的条目,你也需要训练你的用户在通过 TortoiseSVN 输入访问版本库的凭证时使用小写字母。
Apache 的错误和访问日志是你最好的朋友,例如帮助你检测传递给 Subversion 的 AuthzSVNAccessFile 模块的用户名,你或许需要试验 svnaccessfile 中用户字符串的精确格式(例如 DOMAIN\user 还是 DOMAIN//user)来使一切工作正常。
多重认证源
也可以为Subversion使用不止一个的认证源,为此,你需要将每一种认证设置为non-authoritative,这样Apache会在多个源检查用户名/密码。
一个常见的场景就是同时使用Windows域和passwd文件认证,这样你可以为没有Windows域帐户的用户提供访问SVN的权限。
*
为了同时启用 Windows 域认证和 passwd 文件认证,在 Apache 配置文件的 <Location> 块中添加如下条目:
AuthAuthoritative Off
SSPIAuthoritative Off
下面是组合使用 Windows 域认证和 passwd 文件认证的完整配置:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
AuthName "Subversion repositories"
AuthzSVNAccessFile svnaccessfile.txt
# NT Domain Logins.
AuthType SSPI
SSPIAuth On
SSPIAuthoritative Off
SSPIDomain <domaincontroller>
SSPIOfferBasic On
# Htpasswd Logins.
AuthType Basic
AuthAuthoritative Off
AuthUserFile passwd
Require valid-user
</Location>
用 SSL 使服务器更安全
Even though Apache 2.2.x has OpenSSL support, it is not activated by default. You need to activate this manually.
1.
In the apache config file, uncomment the lines:
#LoadModule ssl_module modules/mod_ssl.so
and at the bottom
#Include conf/extra/httpd-ssl.conf
then change the line
SSLMutex "file:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_mutex"
to
SSLMutex default
2.
然后你需要创建一个 SSL 证书。为此打开一个命令行窗口,进入 Apache 目录(例如 C:\program files\apache group\apache2),然后输入命令:
bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
你会被询问密句。请不要使用简单的单词,而是使用整段话,例如一段诗,越长越好。你也需要输入服务器的 URL,其他所有问题都是可选的,但是我们建议你输入这些信息。
Normally the privkey.pem file is created automatically, but if it isn't you need to type this command to generate it:
bin\openssl genrsa -out conf\privkey.pem 2048
Next type the commands
bin\openssl rsa -in conf\privkey.pem -out conf\server.key
and
bin\openssl req -new -key conf\server.key -out conf\server.csr -config conf\openssl.cnf
and then (on one line)
bin\openssl x509 -in conf\server.csr -out conf\server.crt
-req -signkey conf\server.key -days 4000
This will create a certificate which will expire in 4000 days. And finally enter:
bin\openssl x509 -in conf\server.cert -out conf\server.der.crt -outform DER
These commands created some files in the Apache conf folder (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert).
3.
重启 apache 服务。
4.
将你的浏览器指向https://servername/svn/project ...
SSL 和 Internet Explorer
如果你使用SSL保护你的服务器,并使用windows域来进行认证,你会发现不能使用IE浏览版本库了,不需要担心-那只是因为IE没有经过认证,其他浏览器没有这个问题,TortoiseSVN和其他Subversion客户端仍然可以得到认证。
如果你一直希望使用IE浏览你的版本库,你可以选择:
*
在 Apache 的配置文件定义一个单独的 <Location /path> 指示,增加 SSPIBasicPreferred On。这将使 IE 能够认证,但是其他浏览器和 Subversion 不能对这个领域认证。
*
也提供未加密(没有SSL)认证的浏览,奇怪的IE在没有使用SSL的认证时没有任何问题。
*
在 SSL 的“标准”配置中,通常在 apache 的虚拟 SSL 主机内有下面的内容:
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
这种设置的充足理由参见 http://www.modssl.org/docs/2.8/ssl_faq.html#ToC49。但是如果你希望使用 NTLM 认证,就必须使用 keepalive。如果启用全部 SetEnvIf,你就可以使 IE 用 Windows 认证访问运行在 Win32 上加载了 mod_auth_sspi 模块的 Apache。
强制 SSL 访问
当你设置了 SSL 让你的版本库更安全,你一定希望关闭普通的非 SSL (http) 访问。为此,你需要在 Subversion 的 <Location> 增加指示: SSLRequireSSL。
这是一个 <Location> 实例:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
安装 Apache 的先决条件是有一台安装了 Windows 2000,Windows XP SP1+,Windows 2003,Vista 或 Windows Server 2008 的计算机。
警告
请注意,Windows XP 如果没有安装 SP1 将会导致不正常的网络传输,从而搞坏你的版本库!
1.
从 http://httpd.apache.org/download.cgi 下载最新版本的 Apache,请确认你下载的版本是 2.2.x - 1.3.xx 的版本不能工作!
The msi installer for Apache can be found by clicking on other files, then browse to binaries/win32. You may want to choose the msi file apache-2.2.x-win32-x86-openssl-0.9.x.msi (the one that includes OpenSSL).
2.
一旦你有了 Apache2 安装程序,你可以双击它,然后它会指导你的安装过程。请确认你输入的服务器 URL 正确(如果你的服务器没有 DNS 名称,请直接输入 IP 地址)。我建议为所有用户在 80 端口安装 Apache 服务。注意: 如果你已经有了 IIS 或其他监听 80 端口的程序,安装会失败。如果发生这种情况,直接到程序的安装目录 \Apache Group\Apache2\conf,打开 httpd.conf。编辑文件的 Listen 80 为其他可用的端口,例如 Listen 81,然后重新启动 - 这样就不会那个问题了。
3.
现在可以测试 Apache 服务器是否正确运行,将浏览器指向 http://localhost/ - 将会看到一个预先配置的网站。
小心
如果你决定将Apache安装为服务,缺省情况以本地系统帐户运行会发出警告,更安全的方法是为Apache创建一个单独的运行帐户。
请确认Apache运行的帐户是版本库目录的访问控制列表(右键目录|属性|安全)中一个明确的条目,对目录有完全的控制能力,否则,用户不能提交他们的修改。
即使Apache运行于本地系统,你仍然需要这个条目(这种情况下将是SYSTEM帐户)。
如果没有配置 Apache 的此访问权限,你的用户会得到“拒绝访问(Access denied)”的错误信息,在 Apache 的错误日志中的错误代码是 500。
安装 Subversion
1.
Download the latest version of the Subversion Win32 binaries for Apache. Be sure to get the right version to integrate with your version of Apache, otherwise you will get an obscure error message when you try to restart. If you have Apache 2.2.x go to http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.
2.
运行Subversion安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。
3.
使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件/httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program files\apache group\apache2\modules )。
4.
从 Subversion 安装目录将 /bin/libdb*.dll 和 /bin/intl3_svn.dll 复制到 Apache 的 bin 目录。
5.
使用记事本之类的文本编辑器修改Apache的配置文件(通常是 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
配置
现在你已经配置了 Apache 和 Subversion,但是 Apache 不知道如何处理 Subversion 客户端,例如TortoiseSVN。为了让 Apache 知道哪个 URL 是用作 Subversion 版本库,你需要使用任意文本编辑器(例如记事本)编辑 Apache 的配置文件(通常是 c:\program files\apache group\apache2\conf\httpd.conf):
1.
在配置文件最后添加如下几行:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
这个配置告诉 Apache 你所有的 Subversion 版本库位于 D:\SVN。这些版本库对外的 URL 是: http://MyServer/svn/。访问被文件 passwd 中的用户/密码限制。
2.
为了创建 passwd 文件,再次打开命令行提示符(DOS 窗口),进入 apache2 目录(通常是 c:\program files\apache group\apache2),通过输入下面的命令创建文件
bin\htpasswd -c passwd <username>
它将会创建名为 passwd 的文件用于认证。用下面的命令增加其它用户
bin\htpasswd passwd <username>
3.
再次重启Apache服务。
4.
将浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你此前创建的版本库名),如果一切正常,你会被提示输入用户名和密码,然后你会看到版本库的内容。
你刚才输入的简短解释是:
表 3.1. 设置 Apache 的 httpd.conf
设置 解释
<Location /svn> 意思是Subversion版本库的URL是http://MyServer/svn/
DAV svn 告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。
SVNListParentPath on 对于 Subversion 1.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 你有很多可能的选择。
*
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user
to
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
*
使用 passwd 可以整体的控制对版本库的访问,但是如果你希望精确的控制版本库目录访问,你可以去掉下行的注释
#AuthzSVNAccessFile svnaccessfile
,并且创建 Subversion 的访问控制文件。Apache 将会确保只有有效的用户可以访问你的 /svn 目录,然后将用户名传递给 Subversion 的 AuthzSVNAccessFile 模块,这样就可以根据 Subversion 访问控制文件内的规则实现更细粒度的访问控制。请注意路径可以是 repos:path 或简单的 path,如果你不指定特定的版本库,访问控制规则会应用到 SVNParentPath 下所有的版本库。使用的授权策略文件的格式在“路径为基础的授权”一节描述。
*
如果要使浏览器浏览仓库时更“漂亮”,请将去掉下行注释
#SVNIndexXSLT "/svnindex.xsl"
,将文件 svnindex.xsl, svnindex.css 和 menucheckout.ico 放到你的文档根目录中(通常是 C:/Program Files/Apache Group/Apache2/htdocs)。 这个目录在 Apache 配置文件中用 DocumentRoot 指示设置。
你可以直接在我们的代码库http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex中拿到这三个文件。如果访问这个链接需要认证,输入用户名称 guest,无需密码。
TortoiseSVN 版本库中的 XSL 文件有个特性:如果你用浏览器浏览版本库,那么每个版本库中的目录右边会有个图标。如果你点击此图标,那么 TortoiseSVN 会为此 URL 启动检出对话框。
多版本库
如果你使用 SVNParentPath 指示,你就不必在每次添加新 Subversion 版本库时修改 Apache 的配置文件,只需要在第一个版本库所在的位置建立新的版本库就可以了。在我的公司,我可以使用 SMB(普通的 windows 文件访问)直接访问服务器的文件夹,所以我直接在那里创建一个目录,运行 TortoiseSVN 命令TortoiseSVN → 在此创建版本库...,然后一个新的项目建立了...
如果你使用 Subversion 1.3 或更高版本,可以使用 SVNListParentPath on 指示,这样当你使用浏览器访问父路径而不是具体某个版本库时 Apache 就会显示所有版本库列表。
路径为基础的授权
mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。
一个可能的例子:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。
认证和授权是不同的处理过程,如果用户希望获得对版本库的访问,他需要通过全部检查,即通常的认证需求和访问控制文件的授权需求。
使用 Windows 域认证
你已经注意到了,你需要为每个用户在passwd文件中创建用户名/密码条目,如果(因为安全原因)他们希望周期性的修改他们的密码,你需要手动的做出修改。
但是对于此问题有另一个解决方案 - 至少是你在使用域控制器的 LAN 中访问版本库时: mod_auth_sspi!
最初的 SSPI 是由 Syneapps 提供的,包括源代码。但是它的开发已经终止。不过不要失望,社区重新拾起代码并进行了改进,它现在的新主页在SourceForge。
*
下载此匹配你的 Apache 版本的模块,将文件mod_auth_sspi.so复制到 Apache 的 modules 目录。
*
编辑 Apache 的配置文件: 增加一行
LoadModule sspi_auth_module modules/mod_auth_sspi.so
到 LoadModule 节。确认你在下行之前插入此行
LoadModule auth_module modules/mod_auth.so
*
为了让 Subversion 领域使用此认证类型,你需要将
AuthType Basic
修改为
AuthType SSPI
并且在 <Location /svn> 中增加
SSPIAuth On
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOmitDomain on
SSPIUsernameCase lower
SSPIPerRequestAuth on
SSPIOfferBasic On
如果你没有域控制器,可以将域控制器的名称置为 <domaincontroller> 。
请注意,当你使用 SSPI 认证时,没有必要再使用 AuthUserFile 行定义密码文件,Apache 使用 Windows 域验证你的用户名和密码,你需要更新 svnaccessfile 中的用户列表来引用 DOMAIN\username。
重要
The SSPI authentication is only enabled for SSL secured connections (https). If you're only using normal http connections to your server, it won't work.
To enable SSL on your server, see the chapter: “用 SSL 使服务器更安全”一节
提示
Subversion 的 AuthzSVNAccessFile 文件对用户名大小写敏感(JUser 与 juser 不同)。
在微软的世界,Windows 域和用户名不是大小写敏感。即使如此,一些网络管理员还是喜欢创建首字母大写的用户帐号(例如 JUser)。
使用SSPI的一个问题是用户名和密码是用户在提示输入时发送到Subversion的,而IE经常会不管你的帐户是如何建立的都会自动发送你的用户名。
结果就是你必须为每个用户在 AuthzSVNAccessFile 中至少创建两个条目:一个小写的条目和一个与 IE 传递给 Apache 一样的条目,你也需要训练你的用户在通过 TortoiseSVN 输入访问版本库的凭证时使用小写字母。
Apache 的错误和访问日志是你最好的朋友,例如帮助你检测传递给 Subversion 的 AuthzSVNAccessFile 模块的用户名,你或许需要试验 svnaccessfile 中用户字符串的精确格式(例如 DOMAIN\user 还是 DOMAIN//user)来使一切工作正常。
多重认证源
也可以为Subversion使用不止一个的认证源,为此,你需要将每一种认证设置为non-authoritative,这样Apache会在多个源检查用户名/密码。
一个常见的场景就是同时使用Windows域和passwd文件认证,这样你可以为没有Windows域帐户的用户提供访问SVN的权限。
*
为了同时启用 Windows 域认证和 passwd 文件认证,在 Apache 配置文件的 <Location> 块中添加如下条目:
AuthAuthoritative Off
SSPIAuthoritative Off
下面是组合使用 Windows 域认证和 passwd 文件认证的完整配置:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
AuthName "Subversion repositories"
AuthzSVNAccessFile svnaccessfile.txt
# NT Domain Logins.
AuthType SSPI
SSPIAuth On
SSPIAuthoritative Off
SSPIDomain <domaincontroller>
SSPIOfferBasic On
# Htpasswd Logins.
AuthType Basic
AuthAuthoritative Off
AuthUserFile passwd
Require valid-user
</Location>
用 SSL 使服务器更安全
Even though Apache 2.2.x has OpenSSL support, it is not activated by default. You need to activate this manually.
1.
In the apache config file, uncomment the lines:
#LoadModule ssl_module modules/mod_ssl.so
and at the bottom
#Include conf/extra/httpd-ssl.conf
then change the line
SSLMutex "file:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_mutex"
to
SSLMutex default
2.
然后你需要创建一个 SSL 证书。为此打开一个命令行窗口,进入 Apache 目录(例如 C:\program files\apache group\apache2),然后输入命令:
bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
你会被询问密句。请不要使用简单的单词,而是使用整段话,例如一段诗,越长越好。你也需要输入服务器的 URL,其他所有问题都是可选的,但是我们建议你输入这些信息。
Normally the privkey.pem file is created automatically, but if it isn't you need to type this command to generate it:
bin\openssl genrsa -out conf\privkey.pem 2048
Next type the commands
bin\openssl rsa -in conf\privkey.pem -out conf\server.key
and
bin\openssl req -new -key conf\server.key -out conf\server.csr -config conf\openssl.cnf
and then (on one line)
bin\openssl x509 -in conf\server.csr -out conf\server.crt
-req -signkey conf\server.key -days 4000
This will create a certificate which will expire in 4000 days. And finally enter:
bin\openssl x509 -in conf\server.cert -out conf\server.der.crt -outform DER
These commands created some files in the Apache conf folder (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert).
3.
重启 apache 服务。
4.
将你的浏览器指向https://servername/svn/project ...
SSL 和 Internet Explorer
如果你使用SSL保护你的服务器,并使用windows域来进行认证,你会发现不能使用IE浏览版本库了,不需要担心-那只是因为IE没有经过认证,其他浏览器没有这个问题,TortoiseSVN和其他Subversion客户端仍然可以得到认证。
如果你一直希望使用IE浏览你的版本库,你可以选择:
*
在 Apache 的配置文件定义一个单独的 <Location /path> 指示,增加 SSPIBasicPreferred On。这将使 IE 能够认证,但是其他浏览器和 Subversion 不能对这个领域认证。
*
也提供未加密(没有SSL)认证的浏览,奇怪的IE在没有使用SSL的认证时没有任何问题。
*
在 SSL 的“标准”配置中,通常在 apache 的虚拟 SSL 主机内有下面的内容:
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
这种设置的充足理由参见 http://www.modssl.org/docs/2.8/ssl_faq.html#ToC49。但是如果你希望使用 NTLM 认证,就必须使用 keepalive。如果启用全部 SetEnvIf,你就可以使 IE 用 Windows 认证访问运行在 Win32 上加载了 mod_auth_sspi 模块的 Apache。
强制 SSL 访问
当你设置了 SSL 让你的版本库更安全,你一定希望关闭普通的非 SSL (http) 访问。为此,你需要在 Subversion 的 <Location> 增加指示: SSLRequireSSL。
这是一个 <Location> 实例:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
发表评论
-
orcal 函数使用to_date()
2008-12-04 17:11 1258我们在做查询的时候经常会以某个时间段做为查询的条件,在orca ... -
javascript删除多行
2008-10-07 21:38 2119注意:要从后向前删 var tbody=document. ... -
Eclipse下Tomcat插件的安装
2008-09-19 10:14 69494在Eclipse下安装Tomcat插件使开发,编译,发布变的相 ... -
equals 与 equalsIgnoreCase 的区别
2008-09-11 11:40 2276equals:表示当两个值完全相等的情况下才会返回True; ... -
ArrayList 排序实例
2008-05-05 15:03 1471import java.util.ArrayList; imp ... -
弹出三个按钮的对话框
2008-04-30 10:39 2705<input type="button&q ... -
js乱码解决方法
2008-04-25 10:42 2740有时候,我们在调用 .js文件的时候,会发现。.js文件里的中 ... -
Apache安装基本过程
2008-03-17 18:16 3690二 安装了 Apache的安装 ... -
Subversion 基于 Apache 使用时用户权限的管理
2008-03-17 14:03 2034Subversion 基于 Apache 使用时用户权限的管理 ... -
svn使用详解2
2008-03-17 13:57 1616进行完apache和svn的配置后,下面讲一下如何使用svn: ... -
javascript高效的字符串连接
2008-01-17 10:08 1072var a=new Array(1,12,3,"ab ... -
JavaScript的parseInt()方法
2008-01-16 18:04 1151今天发现一个以前测试 ... -
java解析zip
2008-01-16 17:31 2463import java.io.BufferedInputStr ... -
spring事务详解
2008-01-15 17:40 1212Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我 ... -
设计模式-Bridge
2008-01-15 14:22 912烈日,当空;没有一丝风,真的让人感觉透不过气来。想起去年夏天在 ... -
设计模式-Builder
2008-01-04 17:28 1025Builder:将一个复杂对象的构建与它的表示分离,使得同样的 ... -
关于spring声明式事务管理异常处理的测试和小结
2007-12-11 15:35 1203http://blog.readnovel.com/artic ... -
select标签取值问题
2007-09-22 15:59 2042var aa=document.getElementById( ... -
showModalDialog的技巧
2007-09-07 09:18 1098<base target="_self&q ... -
防止盗链
2007-08-30 16:12 1075<%=request.getHeader("R ...
相关推荐
svn安装详解 svn(Subversion)是一种版本控制系统,允许用户跟踪文件和目录的变化历史记录。下面是svn安装详解的知识点: 1. 安装Subversion:Subversion的安装过程非常简单,只需不断下一步即可。 2. 创建根...
### SVN使用教程知识点详解 #### 一、SVN概述 1. **为什么需要SVN版本控制软件** - 在软件开发过程中,多个开发者同时编辑同一份代码时可能会遇到合并冲突等问题,版本控制系统可以帮助团队成员更好地协作,跟踪...
SVN 使用详解 SVN(Subversion)是一种版本控制系统,用于管理代码仓库。以下是 SVN 使用详解的知识点: 安装 TortoiseSVN 客户端 1. 安装 TortoiseSVN 客户端。 2. 创建一个新的目录,例如 svn,用于存放 SVN ...
文档中的`svn merge功能使用.docx`和`svn 冲突的产生与处理.docx`可能包含详细的步骤和截图,帮助读者更好地理解这些概念。`SVNConflictOverview.pdf`可能是一个更全面的冲突处理指南,涵盖了更复杂的场景和高级策略...
Linux系统下SVN服务器安装和配置详解 在Linux系统中安装和配置SVN服务器是版本控制系统实施中的一个重要环节。Subversion(SVN)是一个自由/开源的版本控制系统,它用于存储文件和目录的历史版本,使得从这些文件的...
在开发过程中,SVN使用的重要性不言而喻,它提高了工作效率,确保了代码的一致性和可追溯性。 首先,安装SVN客户端是使用SVN的第一步。常见的客户端有TortoiseSVN(Windows平台)、SmartSVN(跨平台)等,它们提供...
### SVN配置详解 #### 一、SVN简介与配置背景 Subversion (简称SVN) 是一种开源版本控制系统,主要用于代码版本管理。它通过记录文件和目录的变化来帮助团队成员协同工作,支持分布式开发和非线性开发模式。本文档...
- **日常操作**:现在,你可以在本地进行修改,使用SVN的“Commit”提交变更,或者“Update”获取最新的服务器版本。 ### 7. 进阶配置 - **备份与恢复**:定期备份SVN仓库,以防数据丢失。VisualSVN Server提供了...
1. **下载SVN插件**:首先,你需要下载SVN的插件包。在本例中,我们使用的是名为"site-1.0.6.zip"的安装包。这个文件通常包含了所有必要的组件,用于在MyEclipse中集成SVN功能。 2. **启动MyEclipse**:打开你的...
使用命令行工具`svnadmin create`,如:`svnadmin create D:\svn\repository1`。或者,通过TortoiseSVN的图形界面,右键点击目标文件夹,选择“创建版本库在这里”,然后选择FSFS作为版本库模式。 配置SVN服务器...
SVN版本控制工具使用详解 SVN(Subversion)是一种自由开源的版本控制系统,可以将代码恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。其功能包括根据文件修改的次数自动...
Windows 操作系统中 SVN 使用手册详解 Windows 操作系统中 SVN 使用手册详解是本文的主题,本文将详细介绍在 Windows 操作系统中使用 SVN 的手册,包括 SVN 的下载、安装、建立版本库和配置权限等内容。 一、下载 ...
在IT行业中,版本控制工具是开发团队协作的重要组成部分...通过这些步骤,开发者能够在熟悉的开发环境中无缝地使用SVN进行版本控制,提升开发效率和代码质量。对于初学者和团队管理者而言,掌握这一流程是非常重要的。
SVN,全称为Subversion,是一种版本控制系统,用于管理和跟踪文件和目录的变更。通过SVN,用户可以记录项目的历史版本,便于恢复旧版本、管理多人...通过熟练掌握SVN的使用,可以显著提升开发效率和团队协作的流畅度。
### SVN1.6.17 安装详解 #### 文档概述 本文档详细记录了SVN1.6.17版本的安装过程,并提供了软件的下载地址及相关信息。通过本文档,用户能够轻松地完成SVN1.6.17的安装配置,并开始进行团队开发工作。 #### 软件...
【Linux下搭建svn服务器详解】 在Linux环境下搭建SVN(Subversion)服务器是开发者和团队协作中的常见任务,因为SVN是一种强大的版本控制系统,能够帮助管理和跟踪代码的更改历史。以下将详细介绍如何在Linux上设置...
开发者信息一章主要涉及到使用SVN的API进行更深入的编程工作,如进入工作副本的管理区、使用WebDAV以及编程时使用内存池等。同时,也介绍了如何为SVN做出贡献,例如参与Subversion的开发。 SVN的完全参考章节列出了...
### SVN使用手册知识点详解 #### 一、安装说明 **Subversion (SVN)** 是一款广泛应用的版本控制系统,尤其在软件开发领域中占有重要地位。本文档将详细讲解如何在Windows环境下安装配置SVN服务器及客户端,并进行...