Chinaunix首页 | 论坛 | 博客
  • 博客访问: 178976
  • 博文数量: 134
  • 博客积分: 1215
  • 博客等级: 少尉
  • 技术积分: 564
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 11:04
文章分类

全部博文(134)

文章存档

2017年(88)

2012年(46)

我的朋友

分类: 项目管理

2017-04-14 10:47:47

      1.  软件环境
1. 版本
软件 版本 说明
Linux redhat 2.6.9-5.EL 
APR APR-1.2.12 Apache可移植运行库
APR-util APR-util-1.2.12 
Apache httpd-2.2.6.tar.gz 
Subversion subversion-1.4.5.tar.gz 
Subversion-deps subversion-deps-1.4.5.tar.gz svn编译时需要的程序
2. 下载
* Subversion相关软件下载
* Apache相关软件下载:

安装(完全按以下命令配置即可)
安装APR-1.2.12 APR-util-1.2.12

1.
# tar zxvf apr-1.2.12.tar.gz
# cd apr-1.2.12
# ./configure
# make
# make install

2.
# tar zxvf apr-util-1.2.12.tar.gz
# cd apr-util-1.2.12
# . /configure --with-apr=/usr/local/apr
# make
# make install

安装apache 2.2.6
1. 解包  httpd-2.2.6.tar.gz

# tar xzvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6

2. 生成配置文件

# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-dav --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-maintainer-mode MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

     

      3. 生成 make 文件,并安装

# make
# make install

4. 编辑配置文件 httpd.conf

# vi /usr/local/apache2/conf/httpd.conf

修改内容:

      Listen localhost:80      

      ServerName localhost:80
保存退出

* apache的默认端口为 80
* Svn的默认端口为 3690
5. 启动 Apache 服务:

# /usr/local/apache2/bin/apachectl start

6. 浏览网站:
用浏览器查看 得到 it works ,说明 apache 已经配置成功了。

需要将 linux 的防火墙关闭,否则其他 IP 地址无法访问
关闭防火墙命令: service iptables stop
7. 停止 Apache 服务:

# /usr/local/apache2/bin/apachectl stop

8. 设置启动系统后,自启动 Apache 服务
编辑etc/rc.d/rc.local
# vi /etc/rc.d/rc.local

在最后加上一句:
/usr/local/apache2/bin/apachectl start

 

 

 

Subversion1.3.2安装以及配置
1.Subrsion安装

# tar xvzf Subversion-1.3.2.tar.gz
# cd Subversion-1.3.2
# ./configure  --with-apxs=/usr/local/apache2/bin/apxs  

--with-ssl  --with-zlib

--prefix=/usr/local/subversion
# make
# make install

 

查看subversion两个动态库有没有安装成功
# vi /usr/local/apache2/conf/httpd.conf
看到下面两个模块说明安装成功
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

 

FAQ:  configure可能存在的问题及解决方法
1. configure: error: could not find library containing RSA_new
解决方法:   yum install openssl-devel
2. configure: error: no XML parser was found: expat or libxml 2.x required
解决方法:   #   yum install expat-devel
3. configure: error: --with-zlib requires an argument.
解决方法:   去掉此选项

* httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
answer  make sure you have your apache compiled with the dav options:
--enable-dav     --enable-dav-fs     --enable-dav-lock

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

( 如果./configure编译出错: 

get the sqlite 3.6.13 amalgamation from: 

unpack the archive using tar/gunzip and copy sqlite3.c from the 
resulting directory to: 
This file also ships as part of the subversion-deps distribution. 
configure: error: Subversion requires SQLite 
按照以上提示下载sqlite-amalgamation-3.6.13.tar.gz 

#cd /usr/local/src/tarbag 
#wget 
#tar zxvf sqlite-amalgamation-3.6.13.tar.gz -C ../software 
# mkdir /usr/local/src/software/subversion-1.6.6/sqlite-amalgamation 
# cp /usr/local/src/software/sqlite-3.6.13/sqlite3.c /usr/local/src/software/subversion-1.6.6/sqlite-amalgamation/ 

#cd /usr/local/src/software/subversion-1.6.6

#make && make install


2.Subversion的建立与使用仓库使用

//创建库文件所在的目录 (svnroot用户进行下面的操作 )
MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

开始建立版本库,在/svn目录下建立仓库 test

/usr/local/svn/bin/svnadmin create /svn/test

可以用 ls /svn/test看下目录下是否多了一些目录和文件 

导入项目文件到版本库

我们可以建立 /home/test   下面建立 1到5个测试文件

mkdir /home/test 

touch 1 2 3 4 5 

/usr/local/svn/bin/svn import /home/test/ file:///svn/test/ -m "ku"

将 /home/test 下面的五个文件 导入仓库test


3、Subversion服务器的搭建 配置apache支持svn
我们使用与Apache模块的方式运行。
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:

# vi /usr/local/apache2/conf/httpd.conf

加入下面2 行: 默认 Subrsion 安装成功后会自动加上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

修改apache配置文件

vi /usr/local/apache2/conf/httpd.conf

末尾加入

DocumentRoot /usr/local/apache2/htdocs

ServerName  192.168.17.83

DirectoryIndex index.html

   DAV svn

   SVNPath /svn/test

   AuthzSVNAccessFile /svn/test/authz

   AuthType Basic

   AuthName "Welcome! Please input username and password"

   AuthUserFile /svn/test/conf/passwd

   Require valid-user

 MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

建立用户:

1 . 添加用户:

/usr/local/apache2/bin/htpasswd -c /svn/test/conf/passwd user1

第二次添加用户不需要带 -c 参数 可以加上 -m

/usr/local/apache2/bin/htpasswd -m /svn/test/conf/passwd user2

2 . 权限分配:

vi /svn/test/conf/authz

末行加入

Admin=admin,user1

groupA=user1

groupB=user2

[test:/]

@admin=rw

[test:/test]

*=

@admin=rw

@groupA=rw

@groupB=r

仅作测试使用   测试结果OK

备注:

[groups] /*这个表示群组设置

Admin=user1,user2       /*这个表示admin群组里的成员 user1,user2

Develop=u1, u2         /*这个表示Develop群组里的成员 u1,u2

[test:/]    /*这表示,仓库www的根目录下的访问权限

user1 = rw     /* test仓库user1用户具有读和写权限

user2 = r       /* test仓库userl用户具只有读权限

@develop=rw     /*这表示 群 develop的成员都具有读写权限

[/]          /*这个表示在所有仓库的根目录下

* = r        /*这个表示对所有的用户都具有读权限

最后测试( 需要 重启Apache

通过 下面url请求测试:

当然,要受权限的限制,必须是合法用户才能访问且具有相应的权限
客户端的使用,可以通过许多客户端GUI软件来用。比如TortoiseSVN就很好用。
官方网址:




另外一篇文章也很详细:

【本文主要介绍SVN的迁移方案,以及如何安装部署一台SVN服务器】

一、迁移方案

<<<近期发现svn放在机房里托管,速度上很难受到保证,经常遇到网络故障,导致在开发的时候很受影响。故决定将SVN迁移回本地机房里,然后通过建立VPN通过供外界使用,效果图如下>>>

工作机制:SVN Server配置于本地机房中(内网接入),外网接入时需要通过VPN通道。

备份机制:项目进行中时,定期备份SVN服务器的版本库(可采用脚本实现);结项后,手动check out版本库,进行整体备份。

优势:保证了SVN Server的安全性,稳定性。且当SVN Server出现宕机等异常时,可立即切至备份服务器继续工作。

劣势:当 VPN通道出现异常时,导致外网则无法接入SVN Server。

自动备份方案

采用rsync文件同步方式。将SVN版本库进行同步工作,

二、安装配置SVN服务器 1.安装apr和apr-util # wget # wget # tar zxvf apr-1.2.12.tar.gz # cd apr-1.2.12 # ./configure --prefix=/usr/local/apr # make && make install # tar zxvf apr-util-1.2.12.tar.gz # cd apr-util-1.2.12 # ./configure --with-apr=/usr/local/apr # make && make install 2.安装apache # wget # tar zxvf http-2.2.16.tar.gz # cd http-2.2.16 # ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-modules=so --enable-dav --enable-maintainer-mode --enable-ssl # make && make install 3.安装subversion # wget # wget # tar zxvf subversion-deps-1.6.11 注意:删除apr与apr-util。 # tar zxvf subversion-1.6.11.tar.gz # cd subversion-1.6.11 # ./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 # make && make install

/*将svnadmin放入$PATH环境变量里*/
cp /usr/local/subversion/bin/svnadmin /usr/local/sbin

/* 你可以用以下命令检验subversion是否安装成功 */
svnadmin –version

4.subversion环境的搭建

使用与Apache模块的方式运行
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:

LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so

#然后配置仓库:

DAV svn SVNParentPath /jiunile/svn AuthType Basic AuthName "Subversion repository" AuthUserFile /jiunile/svn/svnpasswd Require valid-usr AuthzSVNAccessFile /jiunile/svn/svnaccessfile

建立SVN版本库

#cd /jiunile/svn #svnadmin create test #chmod -R 777 test

建立svnaccessfile

#cd /jiunile/svn #vi svnaccessfile [test:/] xupeng = rw

然后,配置验证方式:
这里使用旦Apache的验证方式:

添加用户和密码:

cd /jiunile/svn /usr/local/apace2/bin/htpasswd –bc svnpasswd username password 注意:-bc 第一次创建需要c参数,接下来就只要b这个参数即可 1 下面,就要写这个svnaccessfile文件说明 1 [svn1:/] //这表示,仓库svn1的根目录下的访问权限 dl1 = rw // svn1仓库dl1用户具有读和写权限 dl2 = rw // svn1仓库dl2用户具有读和写权限 dl3 = r // svn1仓库dl3用户具有读权限 [svn2:/] //svn2仓库根目录下的访问权限 harry = r // harry用户在svn2仓库根目录下只有读权限 sally = // sally用户在 svn2仓库根目录下无任何权限 #[/] // 这个表示在所有仓库的根目录下 #* = r // 这个表示对所有的用户都具有读权限 #[groups] // 这个表示群组设置 #svn1-developers = harry, sally // 这个表示某群组里的成员 #svn2-developers = sally #[svn1:/] #@svn1-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置 1 将这个设置完成后。重启Apache 1 /usr/local/apache2/bin/apachect1 –k restart

就可以通过

这个URL来访问仓库了

导入导出SVN版本库可以使用SVN客户端工具实现,很简单,这里就不详细说明了,客户端工具为:TortoiseSVN,图形是只乌龟

三、遇到的问题

问题1.将线上的SVN环境拷贝过来,配置好后,通过URL访问提示如下信息:Could not open the requested SVN filesystem
查看日志文件,发现:Expected FS format ’2′; found format ’3′

问题产生原因:

服务程序是1.4.x版本的svnserve或mod_dav_svn,版本库通过1.5.x版本的svnadmin或TortoiseSVN创建时,会产生这个问题

解决方法:

使用1.5以上的SVN来作为服务
或使用1.4系列的svnadmin或TortoiseSVN来创建版本库
或使用1.4.x系列创建新版本库,通过1.5.x版本备份并恢复原版本库到新版本库

问题2.

httpd: Syntax error on line 443 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/lib/libsvn_subr-1.so.0: undefined symbol: apr_memcache_add_server

问题产生的原因:

SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。 由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要。

解决方法:
下载apr-1.2.12.tar.gz与apr-util-1.2.12.tar.gz。

编译安装这两个包,然后重新安装下apache与subversion即可。

问题3.

/usr/bin/ld: cannot find -lexpatcollect2: ld returned 1 exit status
make[1]: *** [test/serf_get] 错误 1
make[1]: Leaving directory `/root/build/subversion-1.6.11/serf
‘make: *** [external-all] 错误 1

解决方法:

yum install expat-devel

阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~