svn服务器的搭建!!

工作前准备!

系统使用centos6.2最小安装的系统!

系统安装好以后配置 ip地址 和 dns地址! 能ping通百度/google  确保可以上网!


 一apache + subversion 环境的安装!(安装svn需要先安装apache,访问svn需要通过apache帐号)

1. 创建目录

 mkdir -p /web/root        #存放apache根目录也就是代替htdocs目录!

mkdir -p /web/log         #存放apache的错误日志

mkdir -p /web/src         #存放下载的安装文件

mkdir -p /web/svn        #


2. 安装编译工具和软件包

cd /web/src

yum -y install gcc gcc-c++ make glibc glibc-devel glib2 glib2-devel patch autoconf automake

yum -y install ntp wget vixie-cron


3.下载/安装关联文件

wget http://archive.apache.org/dist/apr/apr-1.4.6.tar.gz

wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz

wget http://zlib.net/zlib-1.2.7.tar.gz

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz

wget http://www.sqlite.org/sqlite-autoconf-3071401.tar.gz


tar -zxvf apr-1.4.6.tar.gz

cd apr-1.4.6

./configure --prefix=/usr/local/apr

make

make install

cd ..


tar -zxvf apr-util-1.5.1.tar.gz

cd apr-util-1.5.1

./configure --with-apr=/usr/local/apr

make

make install

cd ..


tar -zxvf zlib-1.2.7.tar.gz

cd zlib-1.2.7

./configure --prefix=/usr/local/zlib

make

make install

cd ..


tar -zxvf pcre-8.31.tar.gz

cd pcre-8.31

./configure

make

make install

cd ..


tar -zxvf sqlite-autoconf-3071401.tar.gz

cd sqlite-autoconf-3071401

./configure --prefix=/usr/local/sqlite

make && make install

cd.


4. 下载安装apache2.2.9  ------- 因为subversion是1.6版本的 ,它和apache2.4版本兼容有问题!

wget http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz

tar -zxvf httpd-2.4.3.tar.gz

cd httpd-2.4.3

./configure --prefix=/usr/local/apache2 --enable-so --enable-dav --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config               (  --with-mpm=worker 可以添加提高性能)

make

make install

cd ..

(自己检测apache是否安装成功~)


5.下载安装subversion1.6.19 

yum install  expat-devel

wget http://subversion.tigris.org/downloads/subversion-1.6.19.tar.gz

tar -zxvf subversion-1.6.19.tar.gz

cd subversion-1.6.19

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl --with-zlib=/usr/local/zlib --enable-maintainer-mode --with-sqlite=/usr/local/sqlite

make

make install

cd..

到此svn安装完成


二:最主要的还是svn和apache的配置问题!!

---------------------这一步没有多大的用处----------------

为了方便使用subversion的命令,将subversion安装目录下的bin目录加入到Path中

vi /etc/profile  最后加入

SVN_HOME=/usr/local/subversion

PATH=$PATH:$SVN_HOME/bin:

export SUSBVERSION PATH

-----------------------------------------------------------------


1.创建账号密码文件添加apache用户

cd /

mkdir data

cd data

mkdir svn

cd svn

vi passwd.conf

apache用户的额添加:(用户是通过apache来访问svn的 所以用的是apache的用户)

第一次添加用户:/usr/local/apache2/bin/htpasswd -cm /data/svn/passwd.conf  + aaa (用户名)    回车后输入两次密码!! 

第二次添加用户:/usr/local/apache2/bin/htpasswd -m /data/svn/passwd.conf  + bbb (用户名)    回车后输入两次密码!! 

(/data/svn/  passwd.conf 文件里面可以看到用户, -c 覆盖写入,-m :用md5加密)


2.创建版本库

cd /data

mkdir svn

cd svn

mkdir code  -----------------版本库code目录

mkdir test  ------------------版本库test目录

cd /usr/local/subversion/bin 

./svnadmin create /data/svn/code  (到code下看是不是多了文件,多了就是说明版本库创建成功)

./svnadmin create /data/svn/test    (到test下看是不是多了文件,多了就是说明版本库创建成功)



3.创建权限控制文件

cd /data/svn/

touch authz.conf 

vi authz.conf


vi authz.conf

---------------

 [/]      #对于 /(根)目录(/date/svn) 设置权限如下

 * = r    #所有人对svn根目录都有读的权限 ()

[groups]     #添加 "组"

Admin = aaa    #添加apache(用户)为admin组的成员

system = bbb  # 添加test(用户)为system组的成员

[test:/]    #定义 用户/组 对test版本库的权限 

@Admin = rw    #admin组有读写的权限  (前面有@的是组没有@的是用户)

* =           #所有人都没有权限,没有这句话所有人都能检出test酷里面的内容,因为继承了[/]的权限!!!     

bbb = rw #apache对test版本库有rw权限

[code:/]                      # 定义 用户/组 对code版本库的权限

@Admin = rw # admin组对code版本库有rw权限!

--------------------



4.修改apache的配置文件

------------------------------------------------------------------------------------------------------------------------------------

打开apache的conf/httpd.conf,安装subversion后,apache的conf/httpd.conf文件会自动增加了模块
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

相应的so文件也自动copy到了apache/modules。这些工作就不用自己动手了。

---------------------------------------------------------------------------------------------------------------------------------------    

首先我们需要在http.conf文件里的最后面添加版本库的模块!         (我用的多模块方式!!)      

 

<Location /svn>

DAV svn

SVNListParentPath on                       ---------------->   #允许访问/svn目录    (多模块比单模块多了这条语句!!)  

 

SVNParentPath /data/svn    ----------------->定义版本库的目录(但模块需要写出具体的库如:   /data/svn/test)

AuthType Basic    ------------------>   启用基本的验证,用户名/密码验证      

 

AuthName "Subversion repository"    ------------------>

AuthUserFile /data/svn/passwd.conf    ------------------>   身份验证文件的路径  

 

AuthzSVNAccessFile /data/svn/authz.conf    --->   指定authz.conf文件的路径来限定各个用户或组在版本库中目录的访问权限      

 

Require valid-user    ------------------->   #禁止匿名访问      

#除了以上的语句以外还有其它的配置语句....以下的我没有用到..  

#Satisfy Any            准许匿名访问!  
 

#SVNIndexXSLT "/svnindex.xsl"        #Subersion自带的XSLT样式表  

#SSLRequireSSL   #只允许https方式访问      

 

</Location>

                   

然后然后为了我们使用方便修要修改以下地方

DocumentRoot "/web/root"                   #把apache的网站根目录修改到/web/root目录


<Directory "/web/root"> #对/web/root目录进行权限的控制!

 

    Options FollowSymLinks

   AllowOverride None

    Order allow,deny

    Allow from all

</Directory>


ErrorLog "/web/log//error_log"  #把错误日志文件放到/web/log/error_log文件里!(linux区分大小写!!)


修改apache配置文件以后重启apache后才能生效!

到此apache+svn配置成功!


检测方法

1.检查apache是否开启,没有开启的话先开启apache!!

/usr/local/apache2/bin/apachectl start

2.关闭linux的防火墙

service iptables stop

3.打开网页访问apache+svn 服务器的地址 出现一下"It works"字样,apache没问题

4.访问http://apache+svn服务器ip/svn/test  出现 登录 对话框 (用开设的apache帐号登陆) 

登录后提示 : " test - Revision 0: /"  svn安装成功!!  



 ----重要提示!----  注意:开设的apache帐号 (aaa/bbb) 他们的登录地址是  http://apache+svn服务器ip/svn/test 还是 http://apache+svn服务器ip/svn/code  是根据/data/svn/authz.conf 文件的配置决定的!  


常用命令:

1.添加用户

/usr/local/apache2/bin/htpasswd -m /data/svn/passwd.conf  bbb (用户名)    回车后输入两次密码!!

2.创建版本库

cd /usr/local/subversion/bin 

svnadmin create /data/svn/code  (到code下看是不是多了文件,多了就是说明版本库创建成功)

3.svn 检出命令

svn co /data/svn/test /web/root/    

 (只有第一次需要检出,以后用 svn update 就可以把上传的内容检出到/web/root里)

4.查看日志

svn  log  /data/svn/test 

5.查看svn文件或目录状态

svn status  

/data/svn/test 

更多信息去这里  http://www.jb51.net/os/RedHat/2461.html

工作中遇到的问题:

1.目标: 在装有 svn、nginx 服务的上,实现用http协议访问传到svn上面的html文件!

        步骤:首先配置nginx的反向解析,指定web访问的目录! 然后用svn的检出命令把需要查看的html文件检出到指定好的目录。 然后就能通过http://来访问svn检出的html文件!

2.版本库中有多层目录的权限分配!!

[groups]
admin = sunwn,www,wangyue
product = wangyue,lanrx,liubo
design = wany,shaow,wumin
develop = jinhao,shengsd,tongjh,shixl
system = sunwn,denglz
test = denglz,chenghm,test
operate = wangsq,wangrh

[/]
* = r

[ankang:/]
@admin = rw
* = r

[ankang:/decision]
sunwn = rw
* =

[ankang:/code]
@admin = rw
@develop = rw
* =

[ankang:/document/架构设计]
@admin = rw
* =

[ankang:/document/需求文档]
@admin = rw
@product = rw
* =

[ankang:/document/产品文档]
@admin = rw
@product = rw
* =

[ankang:/document/设计文档]
@admin = rw
@product =rw
@design = rw
* =

[ankang:/document/开发文档]
@admin = rw
@develop = rw
* =


限制版本库里面目录的权限时,必须限制所用户的权(* =  ),如果有用户没有限制他将继承上一级目录的权限!

以[ankang:/document/开发文档]为例,如果没有"* =  " 除了admin 和 develop 组的用户都有读的权限,因为[ankang:/] 给所有人读的权限了.

你可能感兴趣的:(svn服务器的搭建!!)