百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Windows Server2012R2 VisualSVN4.2.2-Server在线修改密码搭建

nanshan 2024-11-26 06:49 5 浏览 0 评论

为了找到这个解决方案,寻找了很多文章资料,有些文章提供的总是各种说不清道不明,好像就是要藏着似的,我觉得既然你选择了分享你的成果,就应该把过程整理顺畅,而不是留下各种各样的坑,这篇内容,过程简单,但却折腾了我一周的时间,为了验证可用,在2012与2008上做了多次的验证,在这里我把它总结下来,分享给有需要的人,有一点大家要特别注意VisualSVN-serve4.X版本之后限制用户数量为15,所以请谨慎升级。

下期我分享升级到3.9.7版本的操作方法,3.9.7版本没有用户数量限制。

---喜欢我的文章的欢迎转发+点赞+关注,好东西我都会到这边分享给大家。

1、安装软件准备
1.1. 软件准备

  • Windows Server 2012 R2 操作系统
  • VisualSVN-Server-4.2.2-x64.msi
    https://www.visualsvn.com/downloads/ SVN服务端(服务器端安装包)
  • TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi
    https://tortoisesvn.net/downloads.html svn客户端(个人电脑安装包)
  • LanguagePack_1.13.1.28686-x64-zh_CN.msi
    https://tortoisesvn.net/downloads.html TortoiseSVN 的汉化包(个人电脑安装)
  • httpd-2.4.43-o111g-x64-vc15.zip
    https://www.apachehaus.com/cgi-bin/download.plx
    Apache服务端安装包
  • 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服务


    3.6. 修改密码

    ? 访问svn的web网页http://IP:2443/svn,根据分配的账号登录svn服务器

    ? 点击web网页最下方的“在线自助修改密码”跳转到密码修改界面



    ? 用户名自动填充,请填写该用户名对应的旧密码,填写新密码,点修改完成密码的修改操作



    ? 完成密码修改,点确定返回登录界面



    1. 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”;


    ? 步骤4:按第三章节内容操作配置在线自助密码修改搭建

    ? 步骤5:启动VisualSVN Background Job Service与VisualSVN HTTP Service

    ? 步骤6:登录测试用户密码是否正确、用户权限是否正常、用户修改密码是否正常

    1. 安装过程报错处理
      ? 启动VisualSVN HTTP Service服务时报如下错误
      解决方案如下:
      需要按照第5章节核对httpd-custom.conf文件与index.php文件中的配置的路径

    ? 提示需要Visual C++ Redistributable环境时



    解决方案如下:

    ? 下载更新程序 (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

    如果操作系统是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环境的安装。

    1. 备注
      ? 备注说明
      新部署的环境路径与本文的路径有差异时,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

    相关推荐

    python获取阿里云云解析dns的域名解析记录

    最近由于工作原因接触到阿里云的服务,我需要实时获取所有的域名信息,用于对其进行扫描,因此写了一个自动化爬取脚本给需要的人分享。(阿里云有官方的demo,有兴趣的可以自己看一下,后面也会放链接,我只能...

    前端性能优化系列——DNS预解析和优化

    简单来说,DNS的作用是将域名解析为IP地址,解析的过程是耗时的,转化后会做本地缓存,我们的优化的目标主要是针对用户第一次访问站点的时候陷入长时间白屏的问题。DNS解析可以分为两类,第一类是页...

    dns错误修复方法

      最近用户反馈在同一网络的其他电脑可以正常上网,但自己的电脑却提示页面找不到且无法解析服务器的dns地址,接下来给大家带来dns错误修复方法。  1、点击网络图标,选择打开网络共享中心,如图所示: ...

    技术分享 | 浅谈DNS递归解析和迭代解析之间的区别

    DNS解析是互联网中的重要环节,承担着将域名翻译为可由计算机直接读取的IP地址的基础功能。根据查询对象不同DNS解析可分为递归解析和迭代解析两种方式,接下来,中科三方将简单介绍下两种查询方式的流程以及...

    一文读懂DNS解析故障常见情况(中科三方)

    DNS解析将人们习惯使用的域名翻译成计算机识别的IP地址,是确保人们正常访问网站的重要功能。而在实际域名管理过程中,经常会因为种种原因导致DNS解析故障。DNS解析故障主要表现在人们通过IP地址可以直...

    DNS分离解析实验

    如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

    #净网2019# 浏览网页被“劫持”,有问题!

    明明自己没有设置过,打开网页浏览器却直接到了一个陌生网站,想改回原来的主页设置颇费周折、甚至无能为力。很多网民有过类似经历:在安装了一些软件后,自己的浏览器主页就被修改和锁定。本来打算访问A网站却被强...

    解决浏览器劫持,360和腾讯安全不敌火绒专杀

    上午win7莫名其妙显示未激活,并要求当日必须激活,没办法,上网找激活工具,先试了“小马”没起作用,又下载了“WIN7ActivationV2.3绿色版”,就是这个:激活是激活了,顺便给我安了一堆垃...

    【净网2019】 浏览网页被“劫持”,有问题!

    明明自己没有设置过,打开网页浏览器却直接到了一个陌生网站,想改回原来的主页设置颇费周折、甚至无能为力。很多网民有过类似经历:在安装了一些软件后,自己的浏览器主页就被修改和锁定。本来打算访问A网站却被...

    浏览器打开网页被绑架?这里有办法

    最近小A遇到了一个小问题:在240g上网冲浪的时候,搜索到的网页,点进去却“李逵变李鬼”???在使用浏览器时,点击搜寻结果却导向与搜寻内容不符合的网站,表示您的浏览器可能已遭受恶意软件劫持。例如您在搜...

    处理浏览器主页被劫持的最新方法

    给大家说个处理浏览器主页被劫持的最新方法:刚遇件让人哭笑不得的事,这两天发现浏览器的主页打开后不是自己原来设置的,而是hao123,一百度,好家伙,原来这个流氓许多人都遇到过,照着大家分享的方法一一尝...

    软件性能测试详解

    性能测试的基本概念性能测试是一种非功能性测试,通过自动化工具模拟多种负载条件(正常、峰值、异常),对系统的各项性能指标进行测试和评估,以验证其是否满足预期的性能需求。以下是核心概念的详细解析:一、性能...

    国内粉色图标视频网站偷用带宽风波,WebRTC Control 插件来救场

    最近,B站陷入了一场舆论风波,被指偷偷使用用户上传带宽。有网友在浙江大学论坛投稿称,B崭新版App疑似未经许可大量上传数据致网络卡顿,查看路由器统计信息后,发现B站手机客户端开启大量端口,...

    服务器知识

    问:机架式和非机架式是什么意思?服务器中“U”是什么单位?答:机架式、非机架式指的是服务器的类型。机架式是指可以直接插入机柜的标准服务器。非机架式是其他类型的服务器。譬如说我们普通的pc机的主机。大小...

    Vue3 性能拉胯?5 个实战技巧让项目响应速度飙升 60%!

    作为前端工程师,在开发Vue3项目时,你是否经常遇到页面卡顿、数据更新缓慢,导致用户体验直线下降的情况?看着自己精心搭建的应用,因为性能问题被吐槽,真是既无奈又焦虑。别担心,今天就分享5个超级...

    取消回复欢迎 发表评论: