软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 研发管理 -> 搭建可用http访问的svn(windows) -> 正文阅读

[研发管理]搭建可用http访问的svn(windows)


    SVN是Subversion的简称,是一个开放源代码的版本控制系统,广泛应用于项目的团队开发之中,达到方便共用资源的目的。在个人开发之中,也可以使用SVN来管理自己的源码,或者通过SVN发布自己的项目工程代码,如BAE中应用的部署。本文主要介绍在windows环境下,搭建自己的svn服务端。环境及需要的软件,详细信息如下:
环境:windows7旗舰版service pack1
软件:Setup-Subversion-1.8.15.msi (下载网址 http://subversion.apache.org/packages.html
TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi(下载网址https://tortoisesvn.net/downloads.html
httpd-2.2.31-x86-r3.zip(下载网址http://www.apachehaus.com/cgi-bin/download.plx
额外推荐使用的软件:如notepad++、ultraEdit等,此类软件更优于windows自带的记事本,可以进行字符串批量替换,还显示行号,在遇到错误需要排除时候,可以方便定位到错误所在行号,本人现在使用ultraEdit,其界面也是相当不错的。
svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。
1、独立服务器运行,就配套使用svn客户端,使用svn协议进行项目的版本控制,如commit、checkout等所有操作,这时候就只能以svn协议开头,如图1
[img]http://img.blog.csdn.net/20160330164203104
图1
    假设这里写成http://192.168.0.5/webDemo,在独立服务器运行模式下,将会报错。
2、借助Apache运行。这里就可以实现http或者https协议来访问。例如,在svn客户端中使用http进行checkout操作,如图2;在浏览器中访问svn服务中的库文件,如图3
[img]http://img.blog.csdn.net/20160330165259796
图2
[img]http://img.blog.csdn.net/20160330165358981
图3

第一种方式,独立服务器运行,直接将svn服务端与svn客户端一步一步安装即可。


创建svn服务版本库: svnadmin create PATHNAME ,假设pathname中有空格,需要将pathname用英文双引号引起来。
在版本库的conf文件夹(即PATHNAME的conf文件夹)下,修改svnserve.conf文件,将
#anon-access = read
#auth-access = write
#password-db = passwd

前面的#都去掉,注意,保持每行语句的前面没有空格!
然后在版本库的conf文件夹下,修改passwd文件,如在最后一行添加admin=123456 ,表示用户名为admin,密码为123456,这里可以建立多个用户,在使用svn客户端进行操作时候,将会有验证操作,需要用户名及密码来验证身份权限。
启动svn服务: svnserve -d -r E:\Apache22\svnData ,当然也可以将svn服务注册到windows系统服务中,命令如下
sc create svn binpath= “C:\Subversion\bin\svnserve.exe –service -r G:\svnData” displayname= “Subversion服务” depend= Tcpip ,注意=后面都是由空格的。
删除系统服务中的服务:sc delete 服务名称

第二种方式 借助Apache,搭建可用http(或者https)访问的svn


详细步骤如下
1、解压httpd-2.2.31-x86-r3.zip,将Apache22文件夹放置到系统某盘的根目录下。笔者将其放在E盘根目录下。
2、找到E:\Apache22\conf\httpd.conf文件,修改“ServerRoot”节点处为 ServerRoot “E:/Apache22” 。
修改Apache端口号。假设你的电脑中没有程序会使用80端口、443端口,那么此步骤可以跳过。
    输入“netstat -ano”查看所有端口占用情况,如图4.假设如果觉得显示出来的太多不方便查找,就输入“netstat -ano | findstr “端口号””来进行筛选,如netstat -ano | findstr 80。笔者安装了VMware,VMware默认使用了443端口。而且笔者的80端口已经被占用了,故将Apache的端口80改为100,Apache里的ssl监听端口由443改为442。修改端口号这一步,将E:\Apache22\conf目录下的所有文件都进行查找一下,所有的80都改为100,所有的443都改为442,可以使用ultraEdit软件进行多文件批量查找,批量替换,这样速度较快,节省时间。为了避免端口号冲突,除了可以修改Apache端口号的办法,还可以修改VMware(或其他占用了80、443端口的软件)使用的端口号,具体方法不再重复,自行百度。查看占用了端口号的软件,打开任务管理器,并显示PID列,如果任务管理器已经有PID一列则可以跳过次步骤,“Ctrl+Shift+Esc”打开任务管理器,菜单选择“查看”→“选择列”,在弹出窗口中勾选“PID(进程标识符)”后确定。
[img]http://img.blog.csdn.net/20160330173313858
图4
在cmd窗口中运行 “E:\Apache22\bin\bin\httpd.exe” -k install -n apache22 切记,包含引号。该命令的意思是,安装apache服务,并将该服务名称命名为apache22(你也可以改成别的)。
回车,服务安装完毕,完毕后,会自动测试,若有问题,窗口会提示错误,此时,请根据错误自行排查。
正常安装完毕如下图5所示:
其中,Errors reported here must be corrected before the service can be started.意思是,若该句话后面有错误信息,则表示服务安装失败,需要先改正错误。若没有,则成功。可以使用net start apache22 启动Apache服务,或者在计算机管理——服务中启动Apache22服务,如图6所示,在浏览器中输入http://localhost:100,看到图7所示界面,则表示Apache正常。
[img]http://img.blog.csdn.net/20160330220914749
图5
[img]http://img.blog.csdn.net/20160330220943874
图6
[img]http://img.blog.csdn.net/20160330221012624
图7
3、将Subversion\bin 目录下的mod_dav_svn.so、mod_authz_svn.so 文件拷贝到E:\Apache22\modules。将Subversion\bin 目录下动态库
libdb48.dll 、intl3_svn.dll 、ssleay32.dll 、libeay32.dll 拷贝出来放在 E:\Apache22\bin 目录下,特别注意:在E:\Apache22\bin文件夹下面可能有同名的文件,拷贝到文件夹下,一定不要替换原文件!
偷懒的办法:可以将Subversion\bin文件夹下面的所有dll文件拷贝到E:\Apache22\bin 目录下。
4、修改 E:\Apache22\conf\httpd.conf文件,去掉以下行的注释
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so 
在LoadModule节的最后添加以下两行: 
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so 

重启apache,net start apache22,当apache无法启动,或者无法加载某个动态库的时候,一般先检查该动态库的关联情况,可以使用dependency worker软件检测某文件所依赖的其他dll文件。假设将Subversion\bin文件夹下面的所有dll文件拷贝到E:\Apache22\bin 目录下,一般不会报错。
5、创建passwd文件
在命令行下面将当前目录切换到apache22\bin目录, 输入命令:
htpasswd.exe -c passwd username
New password: ** (输入密码)
Re-type new password: **
然后将会看到,新产生一个passwd文件,使用ultraedit打开之后,可以看到明文展示的用户名,密码则是加密之后的。注意这里的用户名及密码,是用于apache验证的。拷贝此文件到F:\svnData\conf文件夹目录下
6、修改E:\Apache22\conf\httpd.conf文件,在此文件的最后添加以下代码
<Location /svnData>
DAV svn
SVNListParentPath on
SVNPath E:\Apache22\svnData\webDemo
AuthType Basic
#SSLRequireSSL
AuthName "the admin full name, the same with password"
AuthUserFile "F:/svnData/conf/passwd"
AuthzSVNAccessFile "F:/svnData/conf/authz"
Require valid-user
#Satisfy Any
 </Location>

含义解释
首行加#表示注释
SVNPath版本库所在目录;SSLRequireSSL 用SSL提高版本库安全,禁用无SSL的http访问方式;SVNPath版本库所在目录;
AuthType Basic 启用基本的验证,比如用户名/密码;AuthName “my Subversion Server” #验证时代提示;AuthUserFile “F:/svnData/conf/passwd” 用户文件所在目录;AuthzSVNAccessFile “F:/svnData/conf/authz” 权限配置所在目录;Require valid-user 限定用户只有输入正确的用户名及密码后才能访问这个路径
7、创建认证文件authz
[groups]
group1 = yang
[/] 
@group1 = rw

groups表示分组,下面可以有多个组,每个组里面可以有多个用户,如group1=yang,hbtcm,informationEngineering
[/],表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录,使用[project1:/]类似这样的URL:svn://192.168.0.2/project1 即可访问project1
@ 表示接下来的是一个组名,不是用户名,当然也可以将@group1=yang改为yang=rw ,表达的意义完全一样。
用户的权限就分只读(‘r’)、读写(’rw’)和禁止访问(”);还可以在最后加上* = r ,*表示“除了上面提到的那些人之外的其余所有人”,也就是“除了group1组外的其他所有人”
* = r 则表示“那些人只能读,不能写”
对中文目录进行权限控制时,应该将权限文件authz改为utf-8格式
8、新建svnData文件夹,笔者建立在E:\Apache22目录下。
svnadmin create –compatible-version 1.6 E:\Apache22\svnData\webDemo
注意:这里需要使用svnadmin create –compatible-version 1.6 PATHNAME 的格式,否则会报错“(20014)Internal error (specific information not available): Expected FS format between ‘1’ and ‘6’; found format ‘7’”。此错误提示可以在E:\Apache22\logs\error.log文件里面看到。
9、按照服务器独立运行模式,修改E:\Apache22\svnData\webDemo\conf文件夹下面的svnserve.conf文件与passwd文件。
开启svnserver服务 svnserve -d -r E:\Apache22\svnData
10、更深部分,Apache上使用自己认证的SSL证书进行认证,采用https服务来配置svn
进入到E:\Apache22\conf文件夹
set OPENSSL_CONF=openssl.cnf
创建公钥文件 every.key
openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr -config .\openssl.cnf
对认证签署请求进行认证并获取认证证书,最终得到了最后一个文件,经认证的证书 severy.crt 
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

配置期间遇到的问题及解决办法
报错:Expected FS format between ‘1’ and ‘6’; found format ‘7’
版本冲突,使用svnadmin create –compatible-version 1.6 PATHNAME创建svn版本库,可以解决此问题
svn –version 命令与 svnserve –version 命令,可以查看svn客户端与服务端的版本
其他备注:
如果是先安装好了Subversion,那么就需要特备注意当时安装的Subversion是32位的版本还是64位的版本,假设习惯性地将所有的软件都安装在Program Files文件目录里面,而不区分32位与64位,那么可能会习惯性地认为:电脑的操作系统是64位的,所以我的软件也是64位的。
下载与Subversion对应版本的Apache,要么都是32位,要么都是64位。而且Apache还区分2.2._ 与2.4_ 的版本。然后将Subversion安装目录bin下的dll文件复制到Apache文件目录bin时候,假设有一样的dll文件,注意不要替换原文件!!!
大致参考一下文档
文档1
http://wenku.baidu.com/link?url=OEOCl07KrHrL-vXDMPRwRtomFrhyx5S3mmUrFVQnTQ12b538V7nXqRr81zHnK36I1iNiWUILRiaYG2SzEwMCEXGfFYyVv5l0HkHSx7MO-xW
文档2
http://wenku.baidu.com/view/96b017c708a1284ac850436d.html?re=view
文档3
http://wenku.baidu.com/link?url=OEOCl07KrHrL-vXDMPRwRtomFrhyx5S3mmUrFVQnTQ12b538V7nXqRr81zHnK36I1iNiWUILRiaYG2SzEwMCEXGfFYyVv5l0HkHSx7MO-xW
文档4
http://blog.csdn.net/zalion/article/details/9114901
文档5
http://blog.sina.com.cn/s/blog_48258fbe0100c0ve.html
文档6
http://blog.csdn.net/litaoshoujiao/article/details/8552110
报错 Cannot load modules/mod_ssl.so ,仔细检查自己的步骤,经过上述步骤多半可以解决。
备注:可以使用Dependency Walker工具来分析某文件所依赖的其他dll文件、文件中的函数有哪些。
Subversion(SVN)作为一个单独的版本管理软件是不具备网页浏览功能的。就是说,你可以用版本管理的客户端比如:TotoriseSVN来和SVN服务器进行连接。这样如果你的电脑没有安装SVN客户端就不能使用SVN服务器提供的服务了。为了实现请求客户端的目标,就想通过网页来进行访问浏览。所以就将网页浏览的功能通过Apache服务器来实现。而通过Apache的插件来和SVN进行连接后,用户可以通过浏览器:IE,Firefox,NetScape等,访问SVN服务器。这样很方便了。现在有不少的SVN服务器软件直接提供网页功能,而且支持图形界面,如VisualSVN。NetBeans,Eclipse等开发IDE都可以配置SVN插件,很容易用的。[摘自百度知道]
vmware虚拟机vmware-hostd.exe占用了端口号443
方法一:修改apache的端口号,由443改为442(可以是任意其他未被占用的端口号)
针对httpd-2.4.18-x64-vc11-r3版本的Apache24
Apache安装目录\conf\extra 文件夹目录下httpd-ahssl.conf 与 httpd-ssl.conf
Apache安装目录\conf\original\extra 目录下的 httpd-ssl.conf 文件
针对httpd-2.2.31-x86-r3,可以使用ultraedit软件,打开config文件夹下的所有子文件夹及其文件,修改所有的443端口号为其他端口号。
方法二:修改vmware的端口号
......显示全文...
    点击查看全文


上一篇文章           查看所有文章
2016-04-01 16:58:54  
研发管理 最新文章
拉格朗日乘数
maven之可视化项目依赖(Visualizingdepend
mac效率工具
Atitit.css规范bem项目中CSS的组织和管理
git入门
Asimplemodelfordescribingbasicsourcesofp
Linux进程管理浅析
我的openwrt学习笔记(十九):linux便捷开
2、微控制器选择
Git使用手册:为Git仓库创建Submodule
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-16 17:19:41
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --