Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建

最近有個3.0.0的svn環境要升級可以web界面自助修改密碼的,爲了找到這個解決方案,我搜索了很多文章與資料,有不少文章提供的總是各種很隱約,好像它要藏着啥好東西似的,我覺得既然你選擇了分享你的成果,那就應該把整個過程整理順暢,而不是在文章中留下各種各樣的坑,重新整理真的是很耗時間,這篇內容,看着過程很簡單,但卻折騰了我一週多的時間,而且爲了驗證可用,在2012與2008上做了多次的驗證,在這裏我把它總結下來,分享給有需要的人,有一點大家要特別注意:
VisualSVN-serve4.X版本之後限制用戶數量爲15
所以請謹慎升級,等我再覈驗覈驗,下期給大家分享升級到3.9.7版本的操作方法,3.9.7版本就沒有用戶數量的限制了。
1、安裝軟件準備
1.1. 軟件準備
1). Windows Server 2012 R2 操作系統
2). VisualSVN-Server-4.2.2-x64.msi
https://www.visualsvn.com/downloads/ 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位密碼;
安裝路徑所在磁盤空間滿足軟件業務需求;
VisualSVN-serve4.X版本之後限制用戶數量爲15,請注意謹慎使用
1.3. 安裝描述
 1> VisualSVN-Server-4.2.2-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整合)
2、 服務端安裝、項目創建、用戶配置、分組配置
2.1. 服務端安裝
 新建software文件夾,將安裝包拷貝到該文件夾下
 雙擊VisualSVN-Server-4.2.2-x64.msi安裝包;
 在彈出的窗口,點擊Next;

 勾選授權許可,點擊Next;

 按默認,直接點擊Next;

 根據需要修改安裝路徑、倉庫路徑、連接端口與備份路徑(所有路徑注意規劃磁盤空間),點擊Next;

 按默認認證方式,直接點擊Next;

 點擊Install開始安裝;

 完成安裝,並啓動SVN服務;

2.2. 項目創建
 右鍵點擊Repository,在彈出的選項框中選擇 Create New Repository….;

 按默認,直接點擊下一步;

 根據實際情況填寫項目名稱,點擊下一步;

 選擇創建項目的結構,點擊下一步;

 選擇Nobody has access,點擊Create;

 完成項目創建;

2.3. 用戶分配
 右鍵點擊Users,在彈出的選項框中選擇 Create User….;

 填寫用戶名、密碼、確認密碼,點擊OK完成用戶的創建;

2.4. 分組配置
 右鍵點擊Groups,在彈出的選項框中選擇 Create Group….;

 按數字標識順序操作:1,填寫組名;2,操作添加;3,選擇需要添加的用戶或組;4和5操作點擊OK完成操作;

2.5. 項目授權
 右鍵點擊需要授權的目標項目,在彈出的選項框中選擇 Properties….;

 在彈出的方框中按數字順序操作:1,操作Add…添加用戶或組;2,選擇用戶或組;3,操作OK確認添加;4,根據實際情況配置權限;5,操作確定完成添加;

3、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
配置如下內容

#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文件

配置如下內容
<?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.html

#原配置如下
  <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</a></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 HTTP Service服務
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
3.6. 修改密碼
 訪問svn的web網頁http://IP:2443/svn,根據分配的賬號登錄svn服務器
 點擊web網頁最下方的“在線自助修改密碼”跳轉到密碼修改界面
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
 用戶名自動填充,請填寫該用戶名對應的舊密碼,填寫新密碼,點修改完成密碼的修改操作
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
 完成密碼修改,點確定返回登錄界面
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
4、VisualSVN版本升級(舊3.0.0--新4.2.2)
 方式1:異機遷移
 步驟1:停止VisualSVN Background Job Service與VisualSVN HTTP Service服務
 步驟2:備份新版本的組文件groups.conf與密碼配置文件htpasswd
文件路徑:C:\Repositories 備份路徑:C:\4.2.2bak\Repositories
 步驟3:將舊版本的組groups.conf與密碼配置文件htpasswd替換到新版本C:\Repositories路徑下
 步驟4:將舊版本的Repositories下所有項目文件拷貝到C:\Repositories路徑下
 步驟5:啓動VisualSVN Background Job Service與VisualSVN HTTP Service服務
 步驟6:登錄測試用戶密碼是否正確、用戶權限是否正常、用戶修改密碼是否正常
 方式2:本機升級
 步驟1:停止VisualSVN Background Job Service與VisualSVN HTTP Service服務
 步驟2:備份舊版本的Repositories文件夾、VisualSVN Server文件夾備份到路徑C:\bak\下
路徑:C:\Repositories
路徑:C:\Program Files\VisualSVN Server

 步驟3:下載並安裝新版VisualSVN-Server-4.2.2-x64.msi
安裝過程描述如下:
 雙擊VisualSVN-Server-4.2.2-x64.msi安裝包,點擊“Next”;
 勾選授權許可,點擊“Next”;
 軟件會自動識別當前系統已經安裝了3.0.0版本,提示點擊upgrade操作將軟件升級到VisualSVN-Server 4.2.2,點擊“Upgrade”;
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
 步驟4:按第三章節內容操作配置在線自助密碼修改搭建
 步驟5:啓動VisualSVN Background Job Service與VisualSVN HTTP Service
 步驟6:登錄測試用戶密碼是否正確、用戶權限是否正常、用戶修改密碼是否正常

5、安裝過程報錯處理
 啓動VisualSVN HTTP Service服務時報如下錯誤
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
解決方案如下:
需要按照第5章節覈對httpd-custom.conf文件與index.php文件中的配置的路徑

 提示需要Visual C++ Redistributable環境時
Windows Server2012R2 VisualSVN4.2.2-Server在線修改密碼搭建
解決方案如下:
 下載更新程序 (KB2919442),並執行安裝
地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=42153
 下載更新程序Update (KB2919355) 所有補丁,並按照順序執行安裝
地址:https://www.microsoft.com/en-us/download/details.aspx?id=42334
補丁安裝順序如下(有提示重新啓動時,需要操作重啓操作系統)
1)clearcompressionflag.exe ----管理員身份運行,沒有界面,後臺運行
2)Windows8.1-KB2919355-x64.msu
3)Windows8.1-KB2932046-x64.msu
4)Windows8.1-KB2934018-x64.msu
5)Windows8.1-KB2937592-x64.msu
6)Windows8.1-KB2938439-x64.msu
7)Windows8.1-KB2959977-x64.msu
 下載更新程序(KB2999226)
地址:https://www.microsoft.com/en-us/download/details.aspx?id=49063
 安裝vc_redist.x64.exe與vc_redist.x86.exe
地址:https://www.microsoft.com/en-us/download/details.aspx?id=48145
6、如果操作系統是Windows Server 2008 R2
解決方案如下:
注意: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環境的安裝。

7、備註
 備註說明
新部署的環境路徑與本文的路徑有差異時,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.exe

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章