﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-mashiguang-文章分类-版本控制</title><link>http://www.blogjava.net/mashiguang/category/23804.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 03 Jul 2007 07:55:30 GMT</lastBuildDate><pubDate>Tue, 03 Jul 2007 07:55:30 GMT</pubDate><ttl>60</ttl><item><title>svn,apache,mysql实现版本控制和身份验证</title><link>http://www.blogjava.net/mashiguang/articles/127863.html</link><dc:creator>mashiguang</dc:creator><author>mashiguang</author><pubDate>Tue, 03 Jul 2007 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/mashiguang/articles/127863.html</guid><wfw:comment>http://www.blogjava.net/mashiguang/comments/127863.html</wfw:comment><comments>http://www.blogjava.net/mashiguang/articles/127863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mashiguang/comments/commentRss/127863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mashiguang/services/trackbacks/127863.html</trackback:ping><description><![CDATA[一.相关下载<br>&nbsp;&nbsp;&nbsp;<a title=svn-1.4.0 href="http://subversion.tigris.org/files/documents/15/34093/svn-1.4.0-setup.exe">svn-1.4.0</a><br>&nbsp;&nbsp;&nbsp;<a title=apache_2.0.55-win32-x86-no_ssl href="http://archive.apache.org/dist/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi">apache_2.0.55-win32-x86-no_ssl</a><br>&nbsp;&nbsp;&nbsp;<a title=mod_auth_mysql-2.0.49-w32.zip href="http://www.gknw.net/development/apache/httpd-2.0/win32/modules/mod_auth_mysql-2.0.49-w32.zip">mod_auth_mysql-2.0.49-w32.zip</a><br>&nbsp;&nbsp;&nbsp;<a title=site-1.0.4.zip(subclipse用于eclipse3.1.*) href="http://subclipse.tigris.org/files/documents/906/35678/site-1.0.4.zip">site-1.0.4.zip(subclipse用于eclipse3.1.*)</a><br>&nbsp;&nbsp;&nbsp;<a title=site-1.2.2.zip(subclipse用于eclipse3.2.*) href="http://subclipse.tigris.org/files/documents/906/38219/site-1.2.2.zip">site-1.2.2.zip(subclipse用于eclipse3.2.*)</a><br>&nbsp;&nbsp;&nbsp;<a title=TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi href="http://prdownloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi?download">TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi</a><br>&nbsp;&nbsp;<br>二.安装配置<br>&nbsp;首先安装apache,安装过程中会提示填写ServerName等,有的话就填,没有的话就写上IP,我填的是localhost.<br>&nbsp;安装完apache,如果没有出错的话ApacheMonitor会出现在系统任务栏,并显示已运行状态.<br>&nbsp;<br>&nbsp;安装svn-1.4.0,安装过程中svn会检测到系统中已经运行apache,apache会在期间自动重新启动,<br>&nbsp;ApacheMonitor的状态栏也会自动改为"Apache/2.0.55(Win32) SVN/1.4.0 DAV/2",说明svn安装成功.<br>&nbsp;<br>&nbsp;如果apache和svn没有自动集成成功,也可以手动修改apache httpd.conf文件如下3步:<br>&nbsp;&nbsp;1.找到以下两行:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;#LoadModule&nbsp;dav_module&nbsp;modules/mod_dav.so<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;#LoadModule&nbsp;dav_fs_module&nbsp;modules/mod_dav_fs.so<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>&nbsp;&nbsp;&nbsp;改为:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;LoadModule&nbsp;dav_module&nbsp;modules/mod_dav.so<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;#LoadModule&nbsp;dav_fs_module&nbsp;modules/mod_dav_fs.so(网上很多说法是把这一行也去掉#注释</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">但好像并非必须去掉.)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;&nbsp;2.添加以下两行:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;LoadModule&nbsp;dav_svn_module&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:/Program&nbsp;Files/Subversion/bin/mod_dav_svn.so</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;LoadModule&nbsp;authz_svn_module&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:/Program&nbsp;Files/Subversion/bin/mod_authz_svn.so</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;#&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:/Program&nbsp;Files/Subversion</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">是Subversion的安装目录<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;&nbsp;3.在httpd.conf的最后添加如下内容:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&lt;Location&nbsp;/svn&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAV&nbsp;svn<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVNParentPath&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;SVNParentPath指向svn资源库的上一级目录<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;SVNPath&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo/repository</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;SVNPath指向svn资源库目录<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;使用SVNParentPath或SVNPath根据相应需求<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;关于如何创建svn资源库目录在本文最后有补充<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;/Location&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;&nbsp;现在已经可以通过http://localhost:8080/svn/repository/来访问资源库了.<br>三.使用apache身份验证<br>&nbsp;使用apache身份验证就要使用apache的htpasswd.exe命令生成密码文件,示例如下:<br>&nbsp;&nbsp;命令行下执行:htpasswd &#8211;c E:\svndemo\svn_auth_passwd plmm<br>&nbsp;&nbsp;参数-c创建密码文件svn_auth_passwd并添加用户plmm,然后会提示输入密码.<br>&nbsp;&nbsp;继续添加用户:htpasswd -m E:\svndemo\svn_auth_passwd klmm<br>&nbsp;&nbsp;参数-m在已有的密码文件中添加新用户klmm,并用MD5加密密码.<br>&nbsp;&nbsp;这样就创建了一个密码文件添加了两个用户.<br>&nbsp;修改apache httpd.conf文件,添加如下内容:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&lt;Location&nbsp;/svn&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAV&nbsp;svn<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVNParentPath&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthType&nbsp;Basic<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthName&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Subversion&nbsp;repository</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Require&nbsp;valid-user<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthUserFile&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo/svn_auth_passwd</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;AuthUserFile指向密码文件<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&lt;/Location&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;现在通过http://localhost:8080/svn/repository/访问资源库需要输入用户名密码.<br>四.结合mysql实现身份验证<br>&nbsp;1.解压上面下载的mod_auth_mysql-2.0.49-w32.zip文件,拷贝mod_auth_mysql.so文件至apache下modules目录.<br>&nbsp;2.修改apache httpd.conf文件,添加如下内容:<br>&nbsp;&nbsp;&nbsp;使apache加载mysql身份验证模块:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LoadModule&nbsp;mysql_auth_module&nbsp;modules/mod_auth_mysql.so<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;&nbsp;&nbsp;配置apache用来验证用户名密码的数据库表:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&lt;Location&nbsp;/svn&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAV&nbsp;svn<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVNParentPath&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthType&nbsp;Basic<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;AuthName&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Subversion&nbsp;repository</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #AuthUserFile&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">E:/svndemo/svn_auth_passwd</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Require&nbsp;valid-user<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLHost&nbsp;localhost<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLUser&nbsp;root<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLUser&nbsp;数据库登陆用户名<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLPassword&nbsp;</span><span style="COLOR: #000000">1234</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLDB&nbsp;svn<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLDB&nbsp;数据库名<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLUserTable&nbsp;users<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLUserTable&nbsp;数据库表名<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLNameField&nbsp;user_name<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLNameField&nbsp;用户名字段<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLPasswordField&nbsp;user_passwd<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLPasswordField&nbsp;密码字段<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;AuthMySQLMD5Passwords&nbsp;On<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthMySQLCryptedPasswords&nbsp;Off<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;/Location&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
&nbsp;3.重启apache,现在通过http://localhost:8080/svn/repository/访问资源库需要输入mysql表中的用户名密码.<br>五.相关命令<br>&nbsp;安装apache服务:apache -k install<br>&nbsp;卸载apache服务:apache -k uninstall<br>&nbsp;启动apache服务:apache -k start或net start Apache2<br>&nbsp;停止apache服务:apache -k stop&nbsp;或net stop Apache2<br>&nbsp;<br>&nbsp;svn创建资源库:svnadmin create E:\svndemo\repository<br>&nbsp;启动资源库服务:svnserve -d -r E:\svndemo\repository<br>&nbsp;<br>&nbsp;拷贝my.ini到c:\winnt<br>&nbsp;安装MySQL服务:mysqld-nt -install<br>&nbsp;启动MySQL服务:net start mysql<br>&nbsp;停止MySQL服务:net stop mysql<br>&nbsp;卸载MySQL服务:mysqld-nt -remove<br>&nbsp; 
<img src ="http://www.blogjava.net/mashiguang/aggbug/127863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mashiguang/" target="_blank">mashiguang</a> 2007-07-03 15:37 <a href="http://www.blogjava.net/mashiguang/articles/127863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>