专注系统运维、网络架构,研究技术解决方案,记录我的思想轨迹、工作学习、生活和关注的领域
分类: 项目管理
2011-09-08 14:31:01
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请求测试:
【本文主要介绍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
使用与Apache模块的方式运行
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:
#然后配置仓库:
建立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