SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10802|回复: 11

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

[复制链接]
发表于 2010-8-17 15:32:31 | 显示全部楼层 |阅读模式
本帖最后由 yjh4866 于 2011-2-17 16:27 编辑
" w( L2 Z. }. D( f) W. H7 j) }7 ^
对于svn初学者来经常会遇到配置的问题,下面我介绍一下在windows下配置基于apache用https或者http访问的svn的配置过程,其中的不足还望广大朋友给予指正。
$ m' I, Y( C" S) w6 o" \1 ^; ^1 ]9 V. s, M; n; X" _6 L
% J8 |+ {) h$ [1 d1 ]2 Z
在windows下配置基于apache的svn,带openssl0.9.8。可通过http或者https访问,或者只能通过https访问。此文档是配置后根据记忆所写,可能有缺少的地方,还希望广大朋友给予指正。且只适合于自带openssl的apache。 3 x) V# q& _: L* c
+ l) r/ L4 j4 g0 G9 C9 [+ s9 g
/ N( ?8 S0 ]- H. c. A! Q
3 {' b* x$ n3 c9 C
一、下载和安装0 V1 b7 l/ R! y& I5 ?1 M: C3 K6 I) T

* G+ v# u5 A' H$ C" ~+ k9 F! V6 k, ]5 l+ W0 K0 O( ?# C

6 y0 Y- P! D+ Q9 O(一)下载
! a, Y. x& y! _; {8 {
0 P9 U, a3 r  _) t0 KA.服务器端下载
* p' A& V3 o* G' |0 Q) Z, p7 q1 G0 P* p/ S0 A4 m, O7 Q5 c
1、下载apache,在此我下载的是apache-2.2.11-win32-x86-openssl-0.9.8,该版本的apache自带了openssl。
* D- c* f: l+ E; e
  O4 V! A) T# C/ G. A+ R2、下载subversion,在此配置文档里我用的是1.6.4。可在官网上下载。+ A$ l4 X" w3 h! [* o& A

* H" G1 [( g8 f1 C+ X: B
/ }: _" o: C! n
6 n0 f8 u2 Q# k" L9 d8 L* P3 LB.客户端下载
2 Y8 g% u9 N8 ~* [! E& {/ L) }7 N! P& N
下载TortoiseSVN,如何希望客户端用汉语的话,可以下载一个对应的语言包,在此文档中用的是TortoiseSVN-1.4.4和LanguagePack-1.4.4。$ |9 `; W: v% S! c: p3 i# x9 \! y
( i  Z% O: ]% Q7 y0 }! c6 n7 f

9 Y9 t$ i$ f9 F: ?& l" {8 e/ k, T; X3 \+ }8 O
(二)安装7 V( q* s% e6 G: M: [
0 R6 ~6 o6 l: ?' @& S  Y! S  O; ?
1、先安装apache和subversion,再安装TortoiseSVN和LanguagePack。(因为如果服务器端也需要装TortoiseSVN的话,先装了TortoiseSVN再装apache和subversion会导致版本库访问错误。)  N% j' o# W6 E& S/ V

3 Z0 O8 C$ y- c1 E9 h+ q- @2、将TortoiseSVN的语言设置为中文。在桌面上点击右键-setting然后将语言设置为简体中文即可。
8 M7 U; K# B. @% }* ~1 {  h$ S, k. A, D9 Z' ]8 Q" f
二、建配置库及用户名。) }3 k- b5 Z8 ]. w
$ h7 T; x& E9 ]8 h; S; L( C
1、建配置库) j4 J& e1 c/ X' B2 A; S
4 |& I$ `; ?8 J9 e+ b
在cmd命令里进入subversion的bin目录,然后输入
; ~) w3 s: w8 I% O% u* Qsvnadmin create d:\svn\test
* ~" z; `1 z( N' x( I# q5 g1 |  \5 o& k) X, D9 z. A& F
注:上层目录d:\svn\test必须存在。即在d盘下建svn\test文件夹。6 v/ ?! w( P0 C+ t; G$ {( o
7 J4 s' Y! K% W2 A& ^* D
运行此命令即建好一个库。打开之后可看到test空文件中多了些文件。
  G* o; f8 m) \! A, f+ W: {    P1 R4 _3 U0 i9 }( Q
2、建用户名。- C! T$ X8 E/ G. ?5 P7 w% ^* d! Z" |6 Q
7 T/ O" o  E  M, A; ~: k
将apache设为环境变量,然后在cmd命令里进入我们想要的目录进行建用户名操作。执行以下命令即可。
3 }) U& F6 L- {/ ~  c  g: H) Z) C4 J) M/ T7 X
初次建用户名:htpasswd  -c  passwd  username,username对应我们的用户名,然后输入密码即可。
1 T0 T' R1 G- I" q4 P# |# i+ N. R+ j9 s4 p$ p
以后建用户名:htpasswd  -m passwd  username1
, r' ?$ k3 l4 i
" _; K+ ~  M4 S4 T5 u删除用户:      htpasswd  -D  passwd  username       注:此处必须用大写的D。
6 M8 x  O7 ^7 d5 o0 \! f
7 }7 \. Z, C' V' @5 F' l三、配置过程
, O: G/ \& G! x. X8 g" Q/ [
+ ~7 {$ ~2 s& w* f+ Z6 `: x在此为止,我们已经将客户端及服务器端的软件都安装好了,接下来就是配置过程了。
% g' x* L2 B& m' S: v# d% M& N* I" ?4 o+ D/ w9 I
(一)配置可以通过http访问的
+ |2 N' L3 r7 v5 `4 e2 D
% O$ x: B7 }% Y9 h1、打开subversion的bin目录,将mod_dav_svn.so,mod_authz_svn.so,libdb44.dll三个文件复制到apache的bin目录里。
' d$ F) K) C* w2 \$ T
* U2 V1 J" V0 A& p注:如果apache的版本不是2.2.11,libdb44.dll的名字可能就是libdb**.dll。
* G3 c' L/ {* T0 h$ p4 R
# J. @/ ]3 a' r- y' Z7 @2、因为apache和subversion的版本不对应,所以应将subversion的bin目录中的所有的dll文件复制到apache的bin目录里,在复制的过程中,要让apache停止。
1 G7 Q0 \+ E+ N9 r* l! |0 h; e0 f0 H, K5 X: E4 }
3、打开apache的conf目录里的httpd.conf文件进行修改。+ [: u2 S+ X0 e1 q2 ?
(1)在LoadModule部分,首先将以下两行前面的#去掉。
" |1 `' q8 Q) r. @2 U( J       #LoadModule dav_module modules/mod_dav.so. V5 R* {/ U. Q. D7 Q
      #LoadModule dav_fs_module modules/mod_dav_fs.so
" z  k# C3 c. q. I9 B1 L7 R: d8 R! C3 |. H" B8 P
改为    LoadModule dav_module modules/mod_dav.so 6 J& A. f4 D) W9 E8 Z* T+ T) {) ?
       LoadModule dav_fs_module modules/mod_dav_fs.so! E! G; m( w8 q, [

! S# d. o) U  F& C3 C& s2 @( V) o(2) 在LoadModule部分添加以下两句,因为我们前面只是将subversion中的dav_svn.so和authz_svn.so模块复制到apache的modules目录下,但是apache启动后并不会加载它,所以我们添加以下两句,以便让apache会加载这两个模块。
) d- Y/ z7 [* Z; {5 Q/ ]
. J4 f4 a$ T/ ^) `$ s! s7 f        LoadModule dav_svn_module modules/mod_dav_svn.so 9 z' f. P4 k/ k; Q( Z6 n5 S9 J
       LoadModule authz_svn_module modules/mod_authz_svn.so, O# g7 I% r' o2 U
( \) h1 @* Q& _7 m3 q# g" S. Y; }
(3)在httpd.conf文件的最后添加以下内容(针对多库模式)。1 k' ?( S2 F& w. l
; b& a8 ?! q+ }3 q, Q
<Location /repos/>                                 
* h6 M: v" U! D! L! `) I     DAV svn
5 s3 b- q* I4 ?/ D     SVNParentPath "d:\svn"                               # 库的路径。 ' q$ j# j; o0 X% L5 X1 r! k
     SVNListParentPath on                                  # 查看所有的库(即库列表)' d& w( m4 V. ?. D( P  z
     AuthType Basic     ( t* S* M9 b  ]4 n% W
     #SSLRequireSSL                                       #限制项目仓库只能通过https的形式进行访问。   
3 z- g: X6 R- }+ T7 v     AuthName "svn repos"
$ _' D  N7 |$ ~5 e/ }     AuthUserFile "D:\svn\passwd"                         #用户名及密码的存放路径,据自己的情况写。
0 x5 N% o! t. i4 A' }8 t     AuthzSVNAccessFile "D:\svn\svnaccessfile"             #权限文件的存放路径,根据自己的情况写。. B0 e% O2 [2 I! T/ e
     Require valid-user " q4 ]8 L/ P  v
</Location>
/ |3 f2 L2 g- S! F( l, O- Q, V
6 f/ N6 N" d: ]# i, s9 `* _4 U到此为止通过http访问的所有的配置都已经完成。给用户权限即可通过http://ip:port/repos/test进行访问。
" B# r2 {% ?- }* ^, y* U, W2 U8 n  L& c+ c
注: (1)ip:服务器的IP。 , j+ T( b/ O/ H2 n
               port:安装apache时我们选择的端口。) a0 l" T1 ]9 l8 Z
               repos:location后面的部分,根据自己的实际情况填写。$ r  ^- e8 g9 |4 _6 w8 i
               test:库的名称。
. O. k! {0 |' c: `+ k$ \  F       (2)在配置文件httpd.conf中添加内容时一定要注意在英文状态下输入,否则会导致apache启动不了;另外上面#及#后内容一定要去掉。, u) Y; k3 B% ?3 A" z* Q  p; \
. e2 x* f& f& T6 p; p3 g
(二)在http可以访问的基础上继续配置,以使配置库可通过https访问或者只能通过https访问。7 T& n% i5 z4 Z  l

1 `6 W! A4 N0 j6 S0 j* H( T/ \打开apache的conf目录里的httpd.conf文件进行修改。
. Y8 j& s. x. v6 L% {        
4 B  h0 y( _4 r1、将以下三行的注释去掉,即去掉#。
- \7 z& v+ N7 U* g8 O" t1 {7 _* t        #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
% m$ P. j2 ]0 W- h  B        #LoadModule ldap_module modules/mod_ldap.so % d) y. ^! [7 T2 {2 D
        #LoadModule ssl_module modules/mod_ssl.so
" s7 @. [8 I- ^2 f' ?改为. _9 s/ G! g- g. t1 p
        LoadModule authnz_ldap_module modules/mod_authnz_ldap.so. Q. j: `+ W3 d, q; Z3 y
        LoadModule ldap_module modules/mod_ldap.so . n" L' c$ m( M4 X  i
        LoadModule ssl_module modules/mod_ssl.so
; b; D! Y9 l/ B2 L" g, M8 e7 e9 @, F3 i  `! g& L) I, H8 D' O
2、将以下行前面的注释去掉
$ R# ?% y+ ^0 [7 H
0 `; d! p$ S$ X! W1 n  _#Include conf/extra/httpd-ssl.conf
8 o& E  A0 _0 z: h: w# }5 l5 B2 s3 Z8 ]) A
改为Include conf/extra/httpd-ssl.conf2 n+ N; h: t6 e6 \' L$ t/ Z' {4 G
9 o) U* a% \9 _8 f
3、如果希望只通过https访问,则应该前面Location部分的#SSLRequireSSL前面的#去掉。没有去掉的话是https和http形式都可以访问。: i; i5 I9 u2 c) j  D

" Y1 l+ J' T) X$ k4、申请证书
9 l, C5 z7 U  L( `# R. s. ?, w( c2 _
在cmd命令进入到apache的conf目录,执行以下命令。
  c0 e5 l3 N4 {# m) G
1 {8 P$ o6 Q3 s# T* V1 i1 A4 ?openssl genrsa -out server.key 1024                                                                                     #生成密钥/ B' b' K/ j  M3 f
openssl req -new -key server.key -out server.csr -config .\openssl.cnf                                  #生成server.csr
. |* _1 N+ n+ I  [! Zopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt                     #生成证书
, c- }9 c0 o+ u1 v) P' \
5 A! f, z) J: ]生成证书时365是证书的有效期,可根据自己的情况进行填写。以上命令执行完之后会生成server.key ,server.csr,server.crt三个文件。
8 R% ^  c. p' l# k4 _
8 T4 y0 W# t, F( d. {0 \: e四、分配权限& n) [' u( E4 B  i& k6 n6 x
8 Q, U/ s4 Q6 S
在此文档我将权限文件命名为svnaccessfile,在其中添加权限内容。
8 t+ h. j' l: _3 C' p+ S4 V& }
) y+ X# J  ^2 I8 p. d/ G内容如下:
* @8 |' a. Z* \7 [: |+ z6 ~9 a! O5 h) l0 U+ f8 s$ G. r
[groups]
9 E1 m9 W# n9 N$ K, p/ u: `  p) `( ~8 ?9 x2 i
admin = username
5 x- S  \" C9 x2 ~; v" ?dev =
6 h- Q; g; z6 X4 R" Z......                                             #对应我们所需要的组。0 x# ~; P9 g2 P4 U9 J/ E
0 ?9 d9 G0 b6 S4 a0 ~+ q
[/]                                               #设置哪些组或用户可以查看库目录(所有的库的一个列表)6 c; a! R' f% T% g( U; B( Q
@admin=r          & u3 \0 {9 l: `) _
                         ! Z$ {. \) u! t4 m
[test:/]                                        #给库设置访问权限。
% K8 L, {( B( ~% o@admin =rw0 g$ C9 l& L# `8 P# }" d' ?4 J3 _
@dev=r
4 g6 z) g  U, U6 o7 t, v9 Z% W1 Y7 c, B5 M2 W! C9 V
[test:/xx/xx]                                #继续细分库的权限。  Z# {6 Y/ s/ e" D5 `5 n8 g4 p
@admin = rw
- w$ m! O; P  G, \8 @4 I6 q
  t" r0 C& }( P2 ?6 U
4 F' l4 i8 ~' V6 V到此为止,所有的配置都已经完成,我们可以通过客户端进行日常工作了。: g! Y! Q2 T+ S3 n7 [

, h7 W3 p% I$ Q- N3 B" {# D由于配置完通过openssl访问后,openssl默认的端口是443,所以访问的链接变为http://ip:443/repos/test,如果想要通过别的端口访问则应该将将conf\extra下中httpd-ssl.conf里所有的443换成自己期望的端口,这样就可以通过自己想要的端口用https访问了,但是注意不要和其他的端口冲突。
$ g$ R8 C+ }3 b. M/ i对svn感兴趣或想与更多人交流的朋友可以加群
/ Y" _2 I% ?) i& l5 Bsvn俱乐部_2:125194361  [4 ~2 x$ E4 D
svn俱乐部_4:443670340 O4 @& v* |& }) G9 ~
svn俱乐部_5:68302447
7 L, i) m- G5 r7 c; S: k6 X# Y& r

评分

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

查看全部评分

发表于 2010-8-17 21:45:30 | 显示全部楼层
感谢分享
8 Q3 h* o0 m5 G& H, |8 O6 h不错的
回复 支持 反对

使用道具 举报

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

注意

1.如果系统的安全设置的比较高的话apache装完后会出现“no services installed”: ^2 K  T. l* m) m& a+ b
这种情况我们需要进入到apache的bin目录,然后执行
! v4 d; _$ j( c3 K1 ^. Hhttpd.exe -k install -n apache2/ D& R# x: z1 {1 F
即可启动apache.& ^6 L+ x: @( @9 w4 W3 M7 w% J
0 R& M0 I. f4 H% G3 `7 |) [
2.配置完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# 的帖子

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

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-7-17 23:32 , Processed in 0.077060 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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