通过核验,按下面这样的方式去升级,从3.0.0升级到3.9.7,同时支持用户经过web界面修改密码,每一个用户忘记密码要管理员来修改,工做量不大,但真的是耗时费力,还不讨好!
一、安装软件准备
1.1. 软件准备
1). Windows Server 2008 R2 操做系统
2). VisualSVN-Server-3.9.7-x64.msi
https://www.visualsvn.com/server/changes/ SVN服务端(服务器端安装包)
3). TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi
https://tortoisesvn.net/downloads.html svn客户端(我的电脑安装包)
4). LanguagePack_1.13.1.28686-x64-zh_CN.msi
https://tortoisesvn.net/downloads.html TortoiseSVN 的汉化包(我的电脑安装)
5). httpd-2.4.43-o111g-x64-vc15.zip
https://www.apachehaus.com/cgi-bin/download.plx
Apache服务端安装包
6). php-7.3.18-Win32-VC15-x64.zip
https://windows.php.net/download/ 服务端安装包
1.2. 注意事项
安装过程路径、密码尽可能不要出现中文、特殊字符、少于8位密码;
安装路径所在磁盘空间知足软件业务需求。
1.3. 安装描述
1> VisualSVN-Server-3.9.7-x64.msi(svn服务端)
2> TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi(svn客户端)
3> LanguagePack_1.13.1.28686-x64-zh_CN.msi(TortoiseSVN 的汉化包)
4> httpd-2.4.43-o111g-x64-vc15.zip(提取htpasswd.exe文件)
5> php-7.3.18-Win32-VC15-x64.zip(SVN与php整合)
二、VisualSVN版本升级(旧3.0.0--新3.9.7)
步骤1:中止VisualSVN Server服务
步骤2:备份旧版本的Repositories文件夹、VisualSVN Server文件夹备份到路径C:\bak\下
路径:C:\Repositories
路径:C:\Program Files\VisualSVN Server
步骤3:下载并安装新版VisualSVN-Server-3.9.7-x64.msi
安装过程描述以下:
双击VisualSVN-Server-3.9.7-x64.msi安装包,点击“Next”;
勾选受权许可,点击“Next”;
软件会自动识别当前系统已经安装了3.0.0版本,提示点击upgrade操做将软件升级到VisualSVN-Server 3.9.7,点击“Upgrade”;php
步骤4:按第三章节内容操做配置在线自助密码修改搭建
步骤5:启动VisualSVN Background Job Service与VisualSVN Server服务
步骤6:登陆测试用户密码是否正确、用户权限是否正常、用户修改密码是否正常
三、Apache与PHP配置
3.1. 提取Apache密码管理工具
1)解压压缩包httpd-2.4.43-o111g-x64-vc15.zip
2)提取htpasswd.exe文件置于VisualSVN Server\bin路径下(路径根据实际部署来操做),本文按以下说明操做
将C: \software\httpd-2.4.43-o111g-x64-vc15\Apache24\bin\htpasswd.exe
拷贝到C:\Program Files\VisualSVN Server\bin\
3.2. 配置PHP
1)下载php7.3(注意:下载Thread Safe版本)
2) 将php-7.3.18-Win32-VC15-x64.zip解压到VisualSVN Server安装路径下(路径根据实际部署来操做),本文按以下说明操做
解压并重命名为php,最终php路径为C:\Program Files\VisualSVN Server\php
3.3. 配置httpd-custom.conf文件
修改httpd-custom.conf配置文件(路径根据实际部署来操做),本文按以下说明操做
修改空文件 C:\Program Files\VisualSVN Server\conf\httpd-custom.conf
配置以下内容css
#php7 support PHPIniDir "C:/Program Files/VisualSVN Server/php" LoadModule php7_module "C:/Program Files/VisualSVN Server/php/php7apache2_4.dll" AddType application/x-httpd-php .php .html .htm #configure the path to php.ini
3.4. 新建index.php
在\VisualSVN Server\htdocs路径下新建pw文件夹,并在pw文件夹中新建 index.php 文件(路径根据实际部署来操做),本文按以下路径操做
新建C:\Program Files\VisualSVN Server\htdocs\pw\index.php文件html
配置以下内容 <?php $username = $_SERVER["PHP_AUTH_USER"]; //通过 AuthType Basic 认证的用户名 $authed_pass = $_SERVER["PHP_AUTH_PW"]; //通过 AuthType Basic 认证的密码 $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码 $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码 $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码 $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action if ($action!="modify") { $action = "view"; } else if ($authed_pass!=$input_oldpass) { $action = "oldpasswrong"; } else if (empty($newpass)) { $action = "passempty"; } else if ($newpass!=$repeatpass) { $action = "passnotsame"; } else{ $action = "modify"; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>Subversion 在线自助密码修改</title> </head> <body> <?php //action=view 显示普通的输入信息 if ($action == "view") { ?> <script language = "javaScript"> <!-- function loginIn(myform) { var newpass=myform.newpass.value; var repeatpass=myform.repeatpass.value; if (newpass=="") { alert("请输入密码!"); return false; } if (repeatpass=="") { alert("请重复输入密码!"); return false; } if (newpass!=repeatpass) { alert("两次输入密码不一致,请从新输入!"); return false; } return true; } //--> </script> <style type="text/css"> <!-- table { border: 1px solid #CCCCCC; background-color: #f9f9f9; text-align: center; vertical-align: middle; font-size: 9pt; line-height: 15px; } th { font-weight: bold; line-height: 20px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-bottom-style: solid; color: #333333; background-color: f6f6f6; } input{ height: 18px; } .button { height: 20px; } --> </style> <br><br><br> <form method="post"> <input type="hidden" name="action" value="modify"/> <table width="220" cellpadding="3" cellspacing="8" align="center"> <tr> <th colspan=2>Subversion 密码修改</th> </tr> <tr> <td>用 户 名:</td> <td align="left"> <?php echo $username?></td> </tr> <tr> <td>原 密 码:</td> <td><input type=password size=12 name=oldpass></td> </tr> <tr> <td>用户密码:</td> <td><input type=password size=12 name=newpass></td> </tr> <tr> <td>确认密码:</td> <td><input type=password size=12 name=repeatpass></td> </tr> <tr> <td colspan=2> <input onclick="return loginIn(this.form)" class="button" type=submit value="修 改"> <input name="reset" type=reset class="button" value="取 消"> <input onclick="window.location.href='/'" class="button" type="button" value="返 回"> </td> </tr> </table> </form> <?php } else if ($action == "oldpasswrong") { $msg="原密码错误"; } else if ($action == "passempty") { $msg="请输入新密码"; } else if ($action == "passnotsame") { $msg="两次输入密码不一致,请从新输入"; } else { $passwdfile="C:\Repositories\htpasswd"; $command='"C:\Program Files\VisualSVN Server\bin\htpasswd.exe" -b '.$passwdfile." ".$username.' "'.$newpass.'"'; system($command, $result); if ($result==0) { $msg_succ="用户[".$username."]密码修改为功,请用新密码登录"; } else { $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系"; } } if (isset($msg_succ)) { ?> <script language="javaScript"> <!-- alert("<?php echo $msg_succ?>"); window.location.href="/" //--> </script> <?php } else if (isset($msg)) { ?> <script language="javaScript"> <!-- alert("<?php echo $msg?>"); window.location.href="<?php echo $_SERVER["PHP_SELF"]?>" //--> </script> <?php } ?> </body> </html> index.php
3.5. 增长修改密码的连接
修改文件 C:\Program Files\VisualSVN Server\WebUI\index.htmljava
#原配置以下 <footer> Powered by <a href="https://www.visualsvn.com/server/">VisualSVN Server</a>. © 2019 VisualSVN Software Ltd. </footer> #修改成新配置以下 <footer id="footer">Powered by <a href='https://www.visualsvn.com/server/'>VisualSVN Server</a> | <a href='https://www.visualsvn.com/go/2197/'>Report a problem <br /><br /><a href="/pw/index.php">在线自助修改密码</a> </footer>
重启VisualSVN Background Job Service和VisualSVN Server服务web
3.6. 修改密码
访问svn的web网页http://IP:2443/svn,根据分配的帐号登陆svn服务器
点击web网页最下方的“在线自助修改密码”跳转到密码修改界面
用户名自动填充,请填写该用户名对应的旧密码,填写新密码,点修改完成密码的修改操做
完成密码修改,点肯定返回登陆界面
四、安装过程报错处理
启动VisualSVN HTTP Service服务时报以下错误
解决方案以下:
须要按照第5章节核对httpd-custom.conf文件与index.php文件中的配置的路径
安装VC++的时候,提示安装失败:
解决方案以下:
注意:windows server 2008 R2系统要求是把系统更新到SP1(若是不是SP1安装下面KB2999226补丁程序会出错)
方法1:把系统更新程序打开,更新到最新版本便可;
方法2:经过下载安装补丁把系统版本更新到windows server 2008 R2 SP1
这里介绍方法2,将系统更新到SP1:
(1)下载Windows server 2008 R2 SP1 的补丁码是 KB976932
连接:https://www.microsoft.com/zh-cn/download/details.aspx?id=5842
(2)安装KB976932补丁程序,若是提示须要重启操做系统时,请操做重启
(3)尝试安装vc_redist.x64.exe与vc_redist.x86.exe
连接:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
(4)若是没法正常安装,继续下载补丁码:KB2999226
连接:https://www.microsoft.com/zh-CN/download/details.aspx?id=49062
补丁安装成功,重复步骤3便可。
(5)补充:若是须要安装.net framework环境,可按以下操做完成
在服务器管理器中选择“添加功能角色”,而后勾选“应用服务器”,勾选.net framework,一直按下一步,完成.net环境的安装。
五、附件及备注
附件及附件对应存放路径:
\VisualSVN Server\conf redis
\VisualSVN Server\htdocs\pw apache
\VisualSVN Server\WebUI
备注说明
新部署的环境路径与本文的路径有差别时,httpd-custom.conf与index.php附件,请核对并修改与实际环境一致的路径,避免环境没法使用。
httpd-custom.conf文件需核对php调用apache库文件存放路径
C:/Program Files/VisualSVN Server/php/php7apache2_4.dll
index.php文件请核对仓库密码认证路径与调用apache的修改密码文件路径
C:\Repositories\htpasswd
C:\Program Files\VisualSVN Server\bin\htpasswd.exewindows