SVN就不多说了,非常好用的版本控制!安装也非常简单。我的开发环境是WINDOWS,方案是VisualSVN Server和TortoiseSVN,这个安装起来简直超方便!不过有一点非常严重的问题就是官方的VisualSVN Server的安装包里面自带apache服务器,安装的时候不能与本机原有apache(或IIS)端口冲突,这样我的最初的情况就变成机器里有两个apache,4个httpd.exe进程,一下增加了几十M的内存开销,要知道偶的机子本来就很慢,我的想法就是把他们集成到一起,因为visualSVN server的MMC管理控制台太亲切了,离不开了,虽然SVN已经有更为强大的命令行操作!减少httpd.exe进程为两个,端口只监听8080就好了。
看网上的做法是先安装visualsvn,再将apache重新配置,我觉得这个内置的精简版的apache是绝对不全的,所以我将SVN装到我原有的APM环境中,再安装visualSVN SERVER来管理它!目的很单纯,减少内存开销和端口占用。
SVN的安装不多说了,官方就有很详细的安装教程!这里我用的是最新的 svn-win32-1.4.6.zip
后面就是绿化visualSVN SERVER
将visualSVN SERVER官方的安装包里头的文件全部提取,经过分析,我们得到下面的甚为宝贵的注册表文件和后面bin目录中的文件(注意我已经将部分文件更新为svn 1.4.6版)!
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\VisualSVN]
[HKEY_CURRENT_USER\Software\VisualSVN\VisualSVN Server]
"MenuShortcut"="1"
"Adm_Tools_MenuShortcut"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN]
[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server]
"RepositoriesRoot"="F:\\Repositories\\"
"ServerName"="localhost"
"ServerPort"="8080"
"SSLServerPort"="8443"
"UseSSL"="0"
"InstallDir"="D:\\myserver\\VisualSVN Server\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}]
About={2FC11162-83EE-47ED-87DA-490D7402230C}
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}]
NameString=VisualSVN Server Manager
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}\Extension]
@=Namespace
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\NodeTypes\{476E6449-AAFF-11D0-B944-00C04FD8D5B0}\Extensions\Namespace]
{08B017E8-47AD-4D1B-A928-94FFD77E9950}=VisualSVN Server
里面的设置都是一目了然的,重点就是HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server键下面,其他的都不需要修改!,然后注册dll文件 regsvr32 /s Manager.dll,bin的目录没有了,文件的部署变成这样的:
D:\myserver\VisualSVN Server 的目录
2007-12-23 00:25 <DIR> .
2007-12-23 00:25 <DIR> ..
2007-12-20 16:29 131,149 libapr-1.dll
2007-12-20 16:29 36,952 libapriconv-1.dll
2007-12-20 16:29 172,118 libaprutil-1.dll
2007-12-20 16:29 1,073,152 libeay32.dll
2007-11-30 00:26 274,432 libhttpd.dll
2006-12-02 06:03 1,869 Microsoft.VC80.CRT.manifest
2006-12-02 14:22 479,232 msvcm80.dll
2006-12-02 06:03 548,864 msvcp80.dll
2006-12-02 06:03 626,688 msvcr80.dll
2007-12-20 16:29 204,800 ssleay32.dll
2007-10-09 22:48 28,871 VisualSVN Server.msc
2007-11-30 00:19 60,416 zlib1.dll
2007-12-23 00:45 2,064 visualSVN.reg
2007-12-23 00:38 578 setup.bat
2007-12-20 16:29 69,716 intl3_svn.dll
2007-12-20 16:29 802,816 libdb44.dll
2007-12-20 16:29 1,019,980 svn.exe
2007-12-20 16:29 528,470 svnadmin.exe
2007-12-20 16:29 499,808 svndumpfilter.exe
2007-12-20 16:29 520,276 svnlook.exe
2007-12-20 16:29 561,238 svnserve.exe
2007-12-20 16:29 712,788 svnsync.exe
2007-12-20 16:29 368,730 svnversion.exe
2007-12-23 00:33 23 uninstall.bat
2007-12-23 01:07 311 vsvnvars.bat
2007-11-30 01:06 491,520 Manager.dll
26 个文件 9,216,861 字节
2 个目录 9,841,033,216 可用字节
路径和上面的注册表文件是对应的,经过这些操作以后,就可以顺利的使用visualSVN SERVER了,不过这个控制台里面的apache服务器控制菜单不能正常使用了,解决的方法是将apache注册为服务的时候名称取为VisualSVNServer就可以了,语句范例:
D:\myserver\Apache2\bin\httpd.exe -k install -n VisualSVNServer
这样再重新打开visualSVN SERVER的控制台,就可以控制apache的开始、停止以及重启了。
顺便提及:当使用TortoiseSVN连接服务器长时间假死,并且apache的错误日志里有类似:
[Sat Dec 22 15:49:30 2007] [error] [client 127.0.0.1] XML parser error (at end). status=20014
这样的错误记录,问题是出在卡巴斯基 6.0,将TortoiseSVN的bin目录下的TortoiseProc.exe文件添加到卡巴的信任程序里边,即可解决,偶就碰到这个很郁闷的问题,搞了半天才搞定。
最后附上我的apache2.2.6的httpd.conf文件(其实就是svn安装到apache中的方案,已超出本文的讨论范围,呵呵~):
ThreadsPerChild 250
MaxRequestsPerChild 0
ServerRoot "D:/myserver/Apache2"
Listen 8080
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
################为SVN而开启以下四项#
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
####################################
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
#########加载PHP
LoadModule php5_module ../php5/php5apache2_2.dll
LoadFile ../php5/php5ts.dll
LoadFile ../php5/libmysql.dll
ServerAdmin godson@google.com
ServerName :8080
DocumentRoot "D:/myserver/wwwroot"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
<Directory "D:/myserver/wwwroot">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule dir_module>
DirectoryIndex index.htm index.php index.html
</IfModule>
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
LogLevel warn
<Directory "D:/myserver/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
###为SVN而添加#############
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath F:\Repositories
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile F:\Repositories\htpasswd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
看网上的做法是先安装visualsvn,再将apache重新配置,我觉得这个内置的精简版的apache是绝对不全的,所以我将SVN装到我原有的APM环境中,再安装visualSVN SERVER来管理它!目的很单纯,减少内存开销和端口占用。
SVN的安装不多说了,官方就有很详细的安装教程!这里我用的是最新的 svn-win32-1.4.6.zip
后面就是绿化visualSVN SERVER
将visualSVN SERVER官方的安装包里头的文件全部提取,经过分析,我们得到下面的甚为宝贵的注册表文件和后面bin目录中的文件(注意我已经将部分文件更新为svn 1.4.6版)!
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\VisualSVN]
[HKEY_CURRENT_USER\Software\VisualSVN\VisualSVN Server]
"MenuShortcut"="1"
"Adm_Tools_MenuShortcut"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN]
[HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server]
"RepositoriesRoot"="F:\\Repositories\\"
"ServerName"="localhost"
"ServerPort"="8080"
"SSLServerPort"="8443"
"UseSSL"="0"
"InstallDir"="D:\\myserver\\VisualSVN Server\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}]
About={2FC11162-83EE-47ED-87DA-490D7402230C}
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}]
NameString=VisualSVN Server Manager
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{08B017E8-47AD-4D1B-A928-94FFD77E9950}\Extension]
@=Namespace
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\NodeTypes\{476E6449-AAFF-11D0-B944-00C04FD8D5B0}\Extensions\Namespace]
{08B017E8-47AD-4D1B-A928-94FFD77E9950}=VisualSVN Server
里面的设置都是一目了然的,重点就是HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Server键下面,其他的都不需要修改!,然后注册dll文件 regsvr32 /s Manager.dll,bin的目录没有了,文件的部署变成这样的:
Quotation
D:\myserver\VisualSVN Server 的目录
2007-12-23 00:25 <DIR> .
2007-12-23 00:25 <DIR> ..
2007-12-20 16:29 131,149 libapr-1.dll
2007-12-20 16:29 36,952 libapriconv-1.dll
2007-12-20 16:29 172,118 libaprutil-1.dll
2007-12-20 16:29 1,073,152 libeay32.dll
2007-11-30 00:26 274,432 libhttpd.dll
2006-12-02 06:03 1,869 Microsoft.VC80.CRT.manifest
2006-12-02 14:22 479,232 msvcm80.dll
2006-12-02 06:03 548,864 msvcp80.dll
2006-12-02 06:03 626,688 msvcr80.dll
2007-12-20 16:29 204,800 ssleay32.dll
2007-10-09 22:48 28,871 VisualSVN Server.msc
2007-11-30 00:19 60,416 zlib1.dll
2007-12-23 00:45 2,064 visualSVN.reg
2007-12-23 00:38 578 setup.bat
2007-12-20 16:29 69,716 intl3_svn.dll
2007-12-20 16:29 802,816 libdb44.dll
2007-12-20 16:29 1,019,980 svn.exe
2007-12-20 16:29 528,470 svnadmin.exe
2007-12-20 16:29 499,808 svndumpfilter.exe
2007-12-20 16:29 520,276 svnlook.exe
2007-12-20 16:29 561,238 svnserve.exe
2007-12-20 16:29 712,788 svnsync.exe
2007-12-20 16:29 368,730 svnversion.exe
2007-12-23 00:33 23 uninstall.bat
2007-12-23 01:07 311 vsvnvars.bat
2007-11-30 01:06 491,520 Manager.dll
26 个文件 9,216,861 字节
2 个目录 9,841,033,216 可用字节
路径和上面的注册表文件是对应的,经过这些操作以后,就可以顺利的使用visualSVN SERVER了,不过这个控制台里面的apache服务器控制菜单不能正常使用了,解决的方法是将apache注册为服务的时候名称取为VisualSVNServer就可以了,语句范例:
D:\myserver\Apache2\bin\httpd.exe -k install -n VisualSVNServer
这样再重新打开visualSVN SERVER的控制台,就可以控制apache的开始、停止以及重启了。
顺便提及:当使用TortoiseSVN连接服务器长时间假死,并且apache的错误日志里有类似:
[Sat Dec 22 15:49:30 2007] [error] [client 127.0.0.1] XML parser error (at end). status=20014
这样的错误记录,问题是出在卡巴斯基 6.0,将TortoiseSVN的bin目录下的TortoiseProc.exe文件添加到卡巴的信任程序里边,即可解决,偶就碰到这个很郁闷的问题,搞了半天才搞定。
最后附上我的apache2.2.6的httpd.conf文件(其实就是svn安装到apache中的方案,已超出本文的讨论范围,呵呵~):
ThreadsPerChild 250
MaxRequestsPerChild 0
ServerRoot "D:/myserver/Apache2"
Listen 8080
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
################为SVN而开启以下四项#
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
####################################
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
#########加载PHP
LoadModule php5_module ../php5/php5apache2_2.dll
LoadFile ../php5/php5ts.dll
LoadFile ../php5/libmysql.dll
ServerAdmin godson@google.com
ServerName :8080
DocumentRoot "D:/myserver/wwwroot"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
<Directory "D:/myserver/wwwroot">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule dir_module>
DirectoryIndex index.htm index.php index.html
</IfModule>
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
LogLevel warn
<Directory "D:/myserver/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
###为SVN而添加#############
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath F:\Repositories
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile F:\Repositories\htpasswd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
几篇涉嫌PHP与MYSQL性能优化的帖子
博客的按月归档是怎么实现的?统计每个月的日志




有空的话发份资料给我,感谢
可以发给我么,谢谢
谢谢 gently
所以想怎么让 apache 同时监听两个端口,而不影响现有web服务
现在才明白他是基于 svn apache 的