通過覈驗,按下面這樣的方式去升級,從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 rel="nofollow" href="https://www.visualsvn.com/server/">VisualSVN Server</a>. © 2019 VisualSVN Software Ltd. </footer> #修改成新配置以下 <footer id="footer">Powered by <a rel="nofollow" href='https://www.visualsvn.com/server/'>VisualSVN Server</a> | <a rel="nofollow" href='https://www.visualsvn.com/go/2197/'>Report a problem <br /><br /><a rel="nofollow" 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