«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

我近期在研究Maven、Turbine、EJB,如果有朋友想一起交流学习,请加我的MSN:moshco_zhu@hotmail.com!

   你为什么来,你何必来,叫我怎么见你!

--《小城之春》


我的分类(专题)

首页(19)
04 创想思考(1)
01 技术文档(8)
03 诗歌散文(1)
02 人生感悟(2)


最新日志
关于Java之父戈斯林离职的愤怒
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
用Maven2管理EJB项目

最新回复
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:用Maven2管理EJB项目
回复:在Weblogic 10中做EJB
回复:使用Continuum配置定时打包
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB

留言板
签写新留言



链接




本站首页    管理页面    写新日志    退出

[01 技术文档]SVN安装配置笔记
moshco zhu 发表于 2007/10/18 16:24:15

SVN安装配置笔记 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1.下载  首先要说一定的是,SVN有详细的安装配置文档,地址在:http://www.subversion.org.cn/tsvndoc/。  下载Apache,版本选定在2.0.x的最高版本apache_2.0.61-win32-x86-no_ssl.msi,为什么选择这个版本,原因是支持Apache2.2版本的SVN现在还不稳定,特别是在配置细粒度权限控制时,会报告错误! 下载地址:http://www.apache.org/dist/httpd/binaries/win32/  下载SVN,版本选择要注意,要选择在Apache2.0下构建生成的包,我选择的是svn-1.4.5-setup.exe。 地址:http://subversion.tigris.org/project_packages.html  SVN客户端TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi,可以在这里选择下载语言包。 地址:http://tortoisesvn.net/downloads  2.安装Apache  Apache的安装很简单,基本是按照默认设置。我安装的路径设置在[D:\Apache2]。安装完成后,会启动服务器。可以在浏览器中输入[http://localhost/],如果看到[It works!],说明安装成功了!  如果你想修改web访问的端口,可以打开文件[D:\Apache_2.2.6\conf\httpd.conf],在120行附近找到[Listen 80],修改80为你想要的端口; 如果你想修改主机默认的主页[It works],你可以在230行找到[DocumentRoot "D:/Apache2/htdocs"];修改这个地方的[index.html]文件的内容,或者干脆修改["D:/Apache2/htdocs"]为你从新设定的地址。 3.安装Subversion  Subversion的安装也很简单,基本是按照默认设置。我安装的路径是:[D:\subversion\for2.0]。安装的过程中安装程序会关闭已经启动的Apache服务,在配置文件[D:\Apache2\conf\httpd.conf]中自动做一些配置,主要的配置如下: 1>145行,去掉[#]注释 ------------------------------------------ LoadModule dav_module modules/mod_dav.so ------------------------------------------ 2>173、174行增加两行 ------------------------------------------ LoadModule dav_svn_module "D:/subversion/for2.0/bin/mod_dav_svn.so" LoadModule authz_svn_module "D:/subversion/for2.0/bin/mod_authz_svn.so" ------------------------------------------  3并在系统环境变量里面增加设置变量[APR_ICONV_PATH=D:\subversion\for2.0\iconv],在Path的末尾增加[;D:\subversion\for2.0\bin],然后会从新启动Apache服务。 4.安装SVN客户端TortoiseSVN  点击安装文件,按步骤一步一步安装,没有什么特别的。安装语言包。安装完毕后需要从新启动电脑。  语言设置 在任何一个目录点击右键,选择[TortoiseSVN]->[设置]->[常规设置]->[语言],选择[中文(简体)]。 5.创建版本库  使用TortoiseSVN创建版本库  创建一个目录[D:\subversion\Repository],进入目录,创建一个目录[TH],选择[TH]点击右键,选择[TortoiseSVN]->[在此创建版本库],选择[本地文件系统(FSFS)],接着会提示创建成功的消息。 注意: 1> 如果要在一个目录上创建版本库,目录不能为只读,且为空。 2> 只有选择了[FSFS]文件系统的版本库才可以使用[file:///D:/svn-win32-1.4.5_apache2.2.x/Repository/TH]的方式访问。 下面对两种文件系统做些解释: FS文件系统,版本库可以使用的一种Subversion专用的后台文件系统格式,能够在通过网络共享的文件系统上使用,FSFS是Subversion 1.2版以后的缺省版本库格式。 伯克利DB(Berkeley DB),版本库可以使用的一种经过充分测试的后台数据库实现,不能在通过网络共享的文件系统上使用,伯克利DB是Subversion 1.2版以前的缺省版本库格式。    使用命令行工具[svnadmin]创建版本库  进入目录[D:\Apache2\bin],照下面输入 ----------------------------------- D:\Apache2\bin>svnadmin create --fs-type bdb MyNewRepository ----------------------------------- 或者 ----------------------------------- D:\Apache2\bin>svnadmin create --fs-type fsfs MyNewRepository ----------------------------------- 将创建生成的目录拷贝到[D:\subversion\Repository]目录下,便于统一管理。  6.设置从web端访问版本库  在Apache配置文件的最后(960行)添加下面内容,下面#号后的注释去掉: ------------------------------------- <Location /svn>      #svn是你设定的Web访问的一个虚拟名,它在Http中的位置是:http://localhost/svn  DAV svn      #告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。  SVNListParentPath on    #对于Subversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库。  SVNParentPath D:\subversion\Repository  #告诉Subversion需要查看的版本库位于D:\svn-win32-1.4.5_apache2.2.x\Repository之下  AuthType Basic     #激活基本认证,就是用户名/密码  AuthName "这是Apache2.0的SVN:"   #用来说明何时弹出要求用户输入认证信息的认证对话框  AuthUserFile passwd    #指定使用的认证密码文件   #AuthzSVNAccessFile svnaccessfile  #位置Subversion版本库的访问控制文件的路径  Require valid-user    #指定只有输入了正确的用户/密码的用户可以访问URL </Location> ------------------------------------- 注意: 如果你打算把密码文件放在[D:\Apache2\bin]下,你的密码文件的路径就应该是:[D:\Apache2\bin\passwd]或者[bin\passwd];而不是[passwd],密码文件名[passwd]你可以改变的。[svnaccessfile]也是类似。  创建密码文件: Dos状态下,来到路径[D:\Apache2\bin],输入命令,创建一个密码文件: -------------------------------------- D:\Apache2\bin>htpasswd -c passwd admin Automatically using MD5 format. New password: ******* Re-type new password: ******* Adding password for user admin -------------------------------------- 如果你要再添加一个用户,照下面输入: -------------------------------------- D:\Apache2\bin>htpasswd passwd moshco Automatically using MD5 format. New password: ******** Re-type new password: ******** Adding password for user moshco -------------------------------------- 删除一个用户,照下面输入: -------------------------------------- D:\Apache2\bin>htpasswd -D passwd moshco1 Automatically using MD5 format. Deleting password for user moshco1 --------------------------------------  做完以上的操作后需要从新启动Apache服务器。  如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行 ------------------------------ [Require valid-user]改为 ------------------------------ <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> ------------------------------    这时候你可以打开[http://localhost/svn/],要求输入用户名和密码,输入刚才创建的用户[admin]和密码,既可以打开网页,看到你在目录[D:\svn-win32-1.4.5_apache2.2.x\Repository]下创建的几个版本库。  到这个时候为止,你只是做到了通过用户名和密码限制用户访问(写入)版本库,却不能做到用户的权限控制。如果要打开用户的权限控制功能,你需要在去掉上面配置的这一行的[#]注释。 ------------------------------------- AuthzSVNAccessFile bin\svnaccessfile ------------------------------------- 并在[D:\Apache_2.2.6\bin]目录下创建文本文件[svnaccessfile],内容如下(去掉后面的注释部分): ------------------------------------- [groups]   #用户组配置 gwr = admin,moshco  #admin,moshco都属于gwr组 gr = cn    #cn属于gr组  [/]    #[http://localhost/svn/]此路径下的权限配置 * = r    #所有用户都能读 @gwr = rw   #用户组gwr有读写权限 cn = r    #cn用户只有读的权限  [MHSVN:/]   #MHSVN版本库根路径[/]下的权限配置,即[http://localhost/svn/MHSVN/] @gwr = rw   #用户组gwr有读写权限 ------------------------------------- 下面贴出一个权限控制的例子 ---------------------------------------- [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 ----------------------------------------  到现在为止,你就已经能通过用户名和密码完全控制SVN版本库的权限访问了。 需要说明一点的是,之前你打开[http://localhost/svn/]会有一个版本库列表,现在不会出现了。如果你的Apache配置了PHP支持,你需要建立一个PHP的站点,然后写入下面一段程序svn_index.php,放在指定位置。 --------------------------------------------------------------- <html> <head> <title>Subversion Repositories</title> </head> <body>  <h2>Subversion Repositories</h2> <p> <?php     $svnparentpath = "D:/svn-win32-1.4.5_apache2.2.x/Repository";     $svnparenturl = "/svn";      $dh = opendir( $svnparentpath );     if( $dh ) {  while( $dir = readdir( $dh ) ) {      $svndir = $svnparentpath . "/" . $dir;      $svndbdir = $svndir . "/db";      $svnfstypefile = $svndbdir . "/fs-type";      if( is_dir( $svndir ) && is_dir( $svndbdir ) ) {   echo "<a href=\"" . $svnparenturl . "/" .    $dir . "\">" . $dir . "</a>\n";   if( file_exists( $svnfstypefile ) ) {       $handle = fopen ("$svnfstypefile", "r");       $buffer = fgets($handle, 4096);       fclose( $handle );       $buffer = chop( $buffer );       if( strcmp( $buffer, "fsfs" )==0 ) {    echo " (FSFS) <br />\n";       } else {    echo " (BDB) <br />\n";       }   } else {       echo " (BDB) <br />\n";   }      }  }  closedir( $dh );     } ?> </p>  </body> </html> --------------------------------------------------------------- 你可以输入[http://localhost/web/svn_index.php]见到版本库列表。[web]是你配置的一个虚拟目录。  7.给Web端加上SSL  为了使访问变得更加安全,我给web端访问SVN加上了SSL。 首先需要去[http://brandleadershipmarketing.com/apache/]这里下载一个Apache版的OpenSSL,我下载的时候这里没有与Apache2.0.61相同版本的可以选择,我下载了一个最接近的版本[Apache_2.0.59-Openssl_0.9.8d-Win32],下载完毕后将它解压缩。关闭Apache服务。 拷贝[modules\mod_ssl.so]到Apache安装目录的[modules\mod_ssl.so]; 拷贝[bin\openssl.exe、openssl.exe、libeay32.dll、ssleay32.dll、Apache.exe、ApacheMonitor.exe]到Apache安装目录的[bin\]; 拷贝[conf/ssl.conf]到Apache安装目录的[conf/ssl.conf];  需要注意的是,一定要拷贝[Apache.exe、ApacheMonitor.exe],否则你的服务启动会报告一些错误!  使用文本编辑器打开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 ---------------------------------------  修改[SSLCertificateFile conf/ssl.crt/server.crt]为[SSLCertificateFile conf/ssl/my-server.cert];  修改[SSLCertificateKeyFile conf/ssl.key/server.key]为[SSLCertificateKeyFile conf/ssl/my-server.key];  修改[SSLMutex  file:logs/ssl_mutex]为[SSLMutex  default];  删除[<IfDefine SSL>]和[</IfDefine>];  打开Apache配置文件(httpd.conf),并且去掉此行的注释 ---------------------------- #LoadModule ssl_module modules/mod_ssl.so ----------------------------  下载[http://tud.at/programm/openssl.cnf]这个文件保存到[D:\Apache2\bin],接下来开始创建SSL证书。  首先在DOS状态下进入目录[D:\Apache2\bin],逐一输入下面的命令:  第一个命令行 ---------------------------------- bin\openssl req -config bin/openssl.cnf -new -out my-server.csr ----------------------------------  如果出现下面的状况 ---------------------------------------------------- D:\Apache2>bin\openssl req -config bin/openssl.cnf -new -out my-server.csr Loading 'screen' into random state - ---------------------------------------------------- 你应该去看看,你是不是把文件[libeay32.dll]和[ssleay32.dll]没有拷贝过来!  你会被讯问密语,请不要使用简单的单词,而是使用整段话,例如一段诗,越长越好。你也需要输入server的URL,其他所有问题都是可选的,但是我们建议你最好输入这些信息。通常会自动产生privkey.pem文件,但是如果没有,请输入下面的命令生成它: ---------------------------------- bin\openssl genrsa -out privkey.pem 2048 ----------------------------------  第二个命令行 ---------------------------------- 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 ----------------------------------------------- 这样会创建一个在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(例如C:\program files\apache group\apache2\conf\ssl),如果这个目录不存在,你需要首先创建一个。  重启apache服务,在浏览器中输入[https://localhost/svn/MHSVN]。  下面我实际操作的记录: ---------------------------------------------------------------------- D:\Apache2>bin\openssl req -config bin/openssl.cnf -new -out my-server.csr Loading 'screen' into random state - done Generating a 1024 bit RSA private key ..............++++++ .............++++++ writing new private key to 'privkey.pem' Enter PEM pass phrase:        #这里是要你输入一段因为,你输入的时候不会显示 Verifying - Enter PEM pass phrase:      #这里是确认上面输入的话,也不会显示 ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) []:10 State or Province Name (full name) []:moshco zhu Locality Name (eg, city) []:BJ Organization Name (eg, company) []:MHFO Organizational Unit Name (eg, section) []: Common Name (eg, your websites domain name) []:moshco Email Address []:moshco@163.com  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:Helloworld  D:\Apache2>bin\openssl rsa -in privkey.pem -out my-server.key Enter pass phrase for privkey.pem:      #这里也是让你输入一段话,不会显示 writing RSA key  D:\Apache2>bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000 Loading 'screen' into random state - done Signature ok subject=/C=10/ST=moshco zhu/L=BJ/O=MHFO/CN=moshco/emailAddress=moshco@163.com Getting Private key  D:\Apache2>bin\openssl x509 -in my-server.cert -out my-server.der.crt -outform DER  D:\Apache2> ----------------------------------------------------------------------  强制SSL访问 当你设置了SSL让你的版本库更安全,你一定希望关闭普通的非ssl访问,为此,你需要在Subversion的<Location> 增加指示:SSLRequireSSL。 一个<Location>实例就像这个样子: ------------------------------- <Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\subversion\Repository SSLRequireSSL AuthType Basic AuthName "这是Apache2.0的SVN:" AuthUserFile passwd AuthzSVNAccessFile svnaccessfile Require valid-user </Location> ------------------------------- 8.使用Svnserve服务器  有一些情况下,不能使用Apache作为你的服务器,Subversion包括Svnserve-一个轻型的独立服务器,使用普通TCP/IP连接之上的自定义协议。大多数情况下svnserve的设置更加简单,也比Apache的服务器更加快。  打开资源管理器,进入Subversion的[D:\subversion\for2.0\bin]目录,拷贝svnserve.exe、libdb44.dll、libeay32.dll和ssleay32.dll到你的目录[D:\subversion\svnserver2.0]。  创建一个[svnserve_all.bat],内容如下: ------------------------------------------ D:\subversion\svnserver2.0\svnserve.exe --daemon pause ------------------------------------------ 启动这个程序,本地电脑下的所有SVN库都可以通过网络访问。例如[svn://localhost/subversion/Repository/MHSVN],[localhost]以后的部分是不带硬盘驱动器的路径。  再创建一个[svnserve_MHSVN.bat],内容如下: -------------------------------------------- D:\subversion\svnserver2.0\svnserve.exe --daemon --root D:\Subversion\Repository\MHSVN pause -------------------------------------------- 启动这个程序,网络上的电脑只能访问MHSVN一个库。访问方式为[svn://localhost/]  配置认证与权限控制 这里需要说明一点的是,此处的权限配置,与Apache方式配置的权限是无不相干的,它们是两种不同的访问方式。 缺省的svnserve设置提供了匿名的只读访问,这意味着你可以使用svn://的URL进行检出和更新,或者使用TortoiseSVN的版本库浏览器查看版本库,但是不能提交任何修改。为了打开对版本库的写访问,你可以编辑版本库目录的conf/svnserve.conf文件,这个文件控制了svnserve守护进程的配置,也提供了有用的文档。为了打开匿名的写访问,只需要简单得设置: -------------- [general] anon-access = write -------------- 然而,你不会知道谁修改了版本库,因为svn:author属性是空的,你也不能控制谁来修改版本库,这是一个很危险的设置。解决这个问题的一个方法是创建密码数据库: ----------------- [general] anon-access = none auth-access = write password-db = userfile ----------------- 这里userfile与svnserve.conf文件在同一个目录,这个文件也可以存在于文件系统的其他地方(当多个版本库使用相同的访问权限时尤其有用),并使用绝对路径引用,或者是conf的相对目录,使用\或盘符不能工作。userfile的结构如下: ---------------- [users] username = password ---------------- 如果你要配置细粒度权限,需要加下面一段 ---------------- [general] authz-db = authz ---------------- [authz]是文件名,它的格式与Apache配置权限的格式一样。  我的[svnserve.conf]内容如下: ----------------------------------------- [general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = Moshco's second Repository ----------------------------------------- 9.本地[file]方式访问  使用本地[file]方式访问需要使用Tortoise的版本库浏览器,使用方式是:在任何地方点击右键,选择[TortoiseSVN]->[版本库浏览器],输入如下格式: -------------------------- file://localhost/d:/subversion/Repository/MHSVN -------------------------- 注意,本地[file]方式访问是不需要任何服务器启动的。                            

阅读全文(2093) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144800846 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号