SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10597|回复: 11

[原创] windows下配置基于apache的用http或https进行访问的SVN

[复制链接]
发表于 2010-8-17 15:32:31 | 显示全部楼层 |阅读模式
本帖最后由 yjh4866 于 2011-2-17 16:27 编辑 & V' i+ k7 L) C! N9 h# M+ S

1 j. g; i2 ]8 n4 P对于svn初学者来经常会遇到配置的问题,下面我介绍一下在windows下配置基于apache用https或者http访问的svn的配置过程,其中的不足还望广大朋友给予指正。2 M% q; L. a& u$ c5 k6 E! ]
4 x! y4 ~& k6 Z* A9 k9 r3 L
% V; m; H0 K$ {
在windows下配置基于apache的svn,带openssl0.9.8。可通过http或者https访问,或者只能通过https访问。此文档是配置后根据记忆所写,可能有缺少的地方,还希望广大朋友给予指正。且只适合于自带openssl的apache。
+ \# q% e6 G( n5 @
/ Z0 `6 R7 Y  S6 E8 O6 f* Q1 z; e2 r) b- A5 \! y

5 Y9 I1 ]" t8 \2 ?2 }- z2 K一、下载和安装
/ p, C, h: i# P' q4 D( W7 b+ \- U- M  y' E+ U% i1 N

" w, e1 G" ]! C
1 |5 y. g  l6 J' m(一)下载! V. V1 B- [) A* y

7 Q( ?; e4 y( W, ~6 _7 oA.服务器端下载$ Q1 A& T2 z  w" D

, x! Y4 i  a/ ^; W1、下载apache,在此我下载的是apache-2.2.11-win32-x86-openssl-0.9.8,该版本的apache自带了openssl。# E% Q+ w5 n! B8 i: e
5 n& _: n+ h& @# S2 Z7 z' H2 c
2、下载subversion,在此配置文档里我用的是1.6.4。可在官网上下载。
, b) N: A* x% G( l! y* W. ~$ K, H0 L* S& S+ h% T
; [( b' R% x4 t7 a8 u' [

0 `! L- V9 w6 S4 C8 d' p; D4 _' ~/ }B.客户端下载+ V2 c  v5 `  _, i3 C' u: G1 F

/ c: Y' N- k0 o; f0 D下载TortoiseSVN,如何希望客户端用汉语的话,可以下载一个对应的语言包,在此文档中用的是TortoiseSVN-1.4.4和LanguagePack-1.4.4。6 U" [! s7 f; o

; s" Q, F* P& \2 U8 R0 K" g. b% @9 h. b; N& t
1 G& c3 f7 ]2 n$ G
(二)安装
' [7 J6 I  U- J# q5 }6 f( n6 ~: t: C9 @' k
1、先安装apache和subversion,再安装TortoiseSVN和LanguagePack。(因为如果服务器端也需要装TortoiseSVN的话,先装了TortoiseSVN再装apache和subversion会导致版本库访问错误。)0 e. K4 C  ~$ `7 _. P
( [( A. L& H" q# w4 ~  y& [1 R
2、将TortoiseSVN的语言设置为中文。在桌面上点击右键-setting然后将语言设置为简体中文即可。
1 D* C4 T7 ^% i! w
( ?4 x) P) g; R+ L0 t9 I; m二、建配置库及用户名。) \3 ~$ n& x4 {' n! H. _1 W. N
) {, G9 G8 S- {. N- S1 J# N
1、建配置库
- w8 {: W7 K1 Z  w1 Q" h$ x
/ K- x9 X& Q5 i% Q/ Q在cmd命令里进入subversion的bin目录,然后输入# J6 f" D" b3 R# @$ c, N1 r
svnadmin create d:\svn\test6 A9 J# o) ^6 Z# I3 E3 S2 A, u1 D
. a5 n6 S7 q$ k, E
注:上层目录d:\svn\test必须存在。即在d盘下建svn\test文件夹。
1 i  s4 Q' e0 d0 a, S7 \
$ ~  \& L9 B. [运行此命令即建好一个库。打开之后可看到test空文件中多了些文件。
  U) @9 [1 _( _  
6 K9 v8 K0 q# E2 q' l2、建用户名。
% r# T& \# Y. u# n+ q* r; @5 S4 `* W. [% G) q/ _
将apache设为环境变量,然后在cmd命令里进入我们想要的目录进行建用户名操作。执行以下命令即可。
7 h! D8 W; x8 k& p; D  J7 Z& U. N1 G# v6 V! U
初次建用户名:htpasswd  -c  passwd  username,username对应我们的用户名,然后输入密码即可。( J# i1 i# Z$ s# ~. W" o
6 ~& Y( |6 j; Z! L: }% ]
以后建用户名:htpasswd  -m passwd  username1
  h3 e5 ~2 i! h8 K2 {# T/ c
5 o" u; H0 s% [0 B/ \( D  H* G删除用户:      htpasswd  -D  passwd  username       注:此处必须用大写的D。
7 |, M* j  O5 `9 ]+ o# V+ [/ [. L3 x! h
三、配置过程
, u( Q9 G( P. K* H/ V5 ]4 G: g# R- k2 i- W# b
在此为止,我们已经将客户端及服务器端的软件都安装好了,接下来就是配置过程了。
# z5 D" d3 l% C2 J, A2 V  ?1 G* o/ H1 H9 p6 A2 M/ a4 ~) W
(一)配置可以通过http访问的7 Z! \* W" m* i, {7 L; E

9 H9 j& G2 f5 i/ x5 \2 G1、打开subversion的bin目录,将mod_dav_svn.so,mod_authz_svn.so,libdb44.dll三个文件复制到apache的bin目录里。 0 x. h; G! W( v6 S$ Q# T

5 r% e7 q# y# g2 A5 s( W注:如果apache的版本不是2.2.11,libdb44.dll的名字可能就是libdb**.dll。
4 @$ o/ l3 E1 O' {2 s  b" C' M4 b" n0 v# p. K2 Z8 e- p8 ^) E
2、因为apache和subversion的版本不对应,所以应将subversion的bin目录中的所有的dll文件复制到apache的bin目录里,在复制的过程中,要让apache停止。
# D+ Z" c& g- i0 @8 k/ T7 G! ~& i. `, \8 r- n
3、打开apache的conf目录里的httpd.conf文件进行修改。0 S: |, r+ a8 r
(1)在LoadModule部分,首先将以下两行前面的#去掉。
3 b0 c) v9 C  {       #LoadModule dav_module modules/mod_dav.so
) G3 m8 i  U1 L- ~, q  l      #LoadModule dav_fs_module modules/mod_dav_fs.so* X2 e9 `$ d' z

+ e0 r& i: Q; S( l改为    LoadModule dav_module modules/mod_dav.so . E. U1 F  i2 q; w# L: q
       LoadModule dav_fs_module modules/mod_dav_fs.so
2 Y( K! x( S) q( v3 I+ i
- J* x+ P( @9 I(2) 在LoadModule部分添加以下两句,因为我们前面只是将subversion中的dav_svn.so和authz_svn.so模块复制到apache的modules目录下,但是apache启动后并不会加载它,所以我们添加以下两句,以便让apache会加载这两个模块。7 j& A! Z& {) [8 m, ]- \$ b+ m! m
, L' K3 q, |5 ]5 g+ t6 @$ C3 T
        LoadModule dav_svn_module modules/mod_dav_svn.so
$ z4 ~1 L( B+ s& m       LoadModule authz_svn_module modules/mod_authz_svn.so- q! R4 `* R$ Y& |. h

; v- U2 B( g. b(3)在httpd.conf文件的最后添加以下内容(针对多库模式)。; y* b: E2 O5 o  a' l+ U- o

+ Y2 N, c2 Y! a* T. m+ ]* g7 G+ M4 d& ~<Location /repos/>                                 
3 R' g; z. j* B5 M     DAV svn
. p# `! W  ?1 e* I; i     SVNParentPath "d:\svn"                               # 库的路径。
2 M4 X2 h% W1 u! L     SVNListParentPath on                                  # 查看所有的库(即库列表)$ o9 E4 w5 |6 b& ^
     AuthType Basic     
# X" m9 B1 ~) G7 `# g9 T     #SSLRequireSSL                                       #限制项目仓库只能通过https的形式进行访问。   
* u+ `& N: ]) h" [3 q: s     AuthName "svn repos" % b* q! l1 ^  t9 U# n
     AuthUserFile "D:\svn\passwd"                         #用户名及密码的存放路径,据自己的情况写。
2 c. P2 H. F' A/ q+ a* J5 Z, y     AuthzSVNAccessFile "D:\svn\svnaccessfile"             #权限文件的存放路径,根据自己的情况写。" O8 w! A6 s! A; z$ ]9 f
     Require valid-user
0 F8 b  L" b2 L/ c- @. u. I</Location>6 z% Q8 M. j3 a; _% |
  e$ e. h5 @) S7 {  z3 u+ _' a
到此为止通过http访问的所有的配置都已经完成。给用户权限即可通过http://ip:port/repos/test进行访问。- i' m; ?: U2 A$ @) r8 {9 l
6 u- N3 C0 _" ]3 a0 }
注: (1)ip:服务器的IP。
4 t9 ^  g2 h& M# @               port:安装apache时我们选择的端口。
; |. {' J2 D6 _& A" L               repos:location后面的部分,根据自己的实际情况填写。
, u2 j$ Q% ~+ S. Y               test:库的名称。
7 O5 g- ~3 f  E3 j4 I& h       (2)在配置文件httpd.conf中添加内容时一定要注意在英文状态下输入,否则会导致apache启动不了;另外上面#及#后内容一定要去掉。
( s  R) q/ f; I  Y! K  o: R
) j( R4 k; y! j" _(二)在http可以访问的基础上继续配置,以使配置库可通过https访问或者只能通过https访问。
* Z8 g' ~9 Y* y. b9 P: z" d
0 |" o4 R( W- l5 X" D# K打开apache的conf目录里的httpd.conf文件进行修改。
* o8 c; ?* k' g0 f          o9 a0 A3 T  v: U
1、将以下三行的注释去掉,即去掉#。
/ `8 b/ K& F! J& w        #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so3 Q/ s, g. ?0 H
        #LoadModule ldap_module modules/mod_ldap.so
/ k8 t6 V5 m0 Q; V! R        #LoadModule ssl_module modules/mod_ssl.so
0 }2 V  B6 n" D$ L& q* Y改为
* r1 x: P8 t/ @: V, R2 D. _) f; i        LoadModule authnz_ldap_module modules/mod_authnz_ldap.so6 v. m! @! j2 \# L
        LoadModule ldap_module modules/mod_ldap.so 0 _1 |! z& R" ]* o. S. W
        LoadModule ssl_module modules/mod_ssl.so
) G+ P6 C4 x! V# e$ g5 Q0 m
/ R8 p6 O6 Q" K; `) J+ |* ^2、将以下行前面的注释去掉
& e2 ]) r* M, t/ ?. a6 X  a# m5 l+ u1 h# P; C$ ^) c: m
#Include conf/extra/httpd-ssl.conf6 R$ b  L3 ~2 b" D
3 x5 }+ D) o; y) s
改为Include conf/extra/httpd-ssl.conf# I: r  y9 g) J, _, P

/ w( [0 I0 p+ Q4 E! {3、如果希望只通过https访问,则应该前面Location部分的#SSLRequireSSL前面的#去掉。没有去掉的话是https和http形式都可以访问。
2 `7 B8 R+ E* D6 v, Q
% r" R  R) _% m/ l, T4、申请证书
0 s7 W2 M+ `  K! }* L( ~8 |7 q' c8 [0 g
在cmd命令进入到apache的conf目录,执行以下命令。
9 r& {2 B6 p/ Y% P
5 P. l# |9 G' v6 y! Z9 o1 aopenssl genrsa -out server.key 1024                                                                                     #生成密钥- l1 Q( ]; h3 R
openssl req -new -key server.key -out server.csr -config .\openssl.cnf                                  #生成server.csr
9 Q+ O: t! h5 D, C7 s2 Fopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt                     #生成证书9 S! c* s$ B/ P

0 o$ `. }: g, T$ m生成证书时365是证书的有效期,可根据自己的情况进行填写。以上命令执行完之后会生成server.key ,server.csr,server.crt三个文件。4 v8 M5 M/ [8 j! x

- f0 W) H# |0 T! [& m2 q四、分配权限
5 u' f' u1 k  |- J% f: w2 j1 N- A" Q8 M/ i# x: E/ T
在此文档我将权限文件命名为svnaccessfile,在其中添加权限内容。
6 K3 S( Y$ c' d+ H) F: h: l0 O- I. F8 Q9 A9 g& L
内容如下:  p) ~8 D  K# N( ~' |" y
* ?; L2 x6 h% H7 N
[groups]
" k( a8 A5 z1 W; Z! u# L- l
! R$ N6 L8 P3 Nadmin = username
) y7 c( M: @3 D% b6 Vdev =
; ]4 T+ d6 e/ B, i; y  ]......                                             #对应我们所需要的组。& D2 W, z8 t7 y' g

/ o! C" m0 D8 \[/]                                               #设置哪些组或用户可以查看库目录(所有的库的一个列表)
7 N# I( f9 ]$ {! L@admin=r          1 w- ^3 a: Y$ H+ l
                         ; U' D# u" U4 I0 c
[test:/]                                        #给库设置访问权限。2 ^( N7 }3 R+ N4 |$ P# z# p# `; T
@admin =rw
' _7 ~( L* R& c/ S@dev=r
; F5 ^9 m! z3 J0 L( g4 `5 g. ?6 e% n) n0 D& J$ I
[test:/xx/xx]                                #继续细分库的权限。  w9 \% E/ Q: j0 [# {3 i' w. s' f
@admin = rw, C- d3 g) U+ F2 ?9 z& ~, _

% |% Q$ b$ p1 ~3 Z" p  H7 U' }/ G4 V- d/ j1 C/ x
到此为止,所有的配置都已经完成,我们可以通过客户端进行日常工作了。
% h( o. N/ |2 |2 l* O5 W' M1 U$ u: {
由于配置完通过openssl访问后,openssl默认的端口是443,所以访问的链接变为http://ip:443/repos/test,如果想要通过别的端口访问则应该将将conf\extra下中httpd-ssl.conf里所有的443换成自己期望的端口,这样就可以通过自己想要的端口用https访问了,但是注意不要和其他的端口冲突。4 \  _3 l; _1 I/ V3 O4 L
对svn感兴趣或想与更多人交流的朋友可以加群
0 c! t$ S( a7 P* p) m3 S, isvn俱乐部_2:1251943618 n) m* J; Z! x4 ^8 b% q. N# h3 k& ~
svn俱乐部_4:44367034+ G7 Y% |# ?; N! t  E2 m
svn俱乐部_5:68302447
# E+ d8 l& q' `& a- ?! N- O

评分

参与人数 1威望 +8 金钱 +8 收起 理由
go2cxg + 8 + 8 谢谢分享!

查看全部评分

发表于 2010-8-17 21:45:30 | 显示全部楼层
感谢分享
6 X5 g7 V) u# S# p3 a' Y' `+ U$ I+ @不错的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-18 21:07:27 | 显示全部楼层

注意

1.如果系统的安全设置的比较高的话apache装完后会出现“no services installed”3 r8 Y/ s+ g  {( K5 u) I: B
这种情况我们需要进入到apache的bin目录,然后执行% u- [9 {% j5 k! }5 R
httpd.exe -k install -n apache2, k  ~2 W9 `) i# Y! _/ z3 ]3 m+ y5 ^
即可启动apache.
( `2 t6 }- x& U2 X2 l
6 R- h  g" P( u4 [& c) C2.配置完https的部分后会启动不了apache,提示httpd-ssl.conf的第62行错误,这种情况的话将第62行注释掉就可以正常用了,因为第62行没有指向任何文件,所以可以注释掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-18 21:18:37 | 显示全部楼层

回复 沙发 的帖子

只是在xp配置通过了,在server系统上配置就出现了上面我说到的那两个问题,呵呵,目前使用正常,如果再出现什么问题会陆续传上来。
回复 支持 反对

使用道具 举报

发表于 2010-8-19 10:50:43 | 显示全部楼层
多交流,多发贴,成长更加快!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-19 12:07:23 | 显示全部楼层

回复 5# 的帖子

嗯,呵呵,谢谢支持!
回复 支持 反对

使用道具 举报

发表于 2010-8-20 15:46:23 | 显示全部楼层
非常好的说明,楼主支持你~~
回复 支持 反对

使用道具 举报

发表于 2010-8-20 16:42:20 | 显示全部楼层
好文章!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-23 17:48:48 | 显示全部楼层

回复 7# 的帖子

呵呵,谢谢支持!呵呵,以后多交流!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-23 17:50:22 | 显示全部楼层

回复 8# 的帖子

呵呵,谢谢来支持,以后有空多多交流哦!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-1-23 14:53 , Processed in 0.072778 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表