您的位置:首页 > 运维架构 > Apache

centos下搭建svn+apache服务

2013-07-25 16:45 507 查看
Subversion是一个自由、开放源代码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件,其中包括程序源码。它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。Subversion有两种运行方式,一种是基于Apache Http Server的Subversion,另一种是Subversion 独立服务。下面我做的是基于Apache Http Server的Subversion,这样做的好处是:A能使用WebDAV协议。B能使用浏览器作为客户端工具浏览源码仓库。C可以很容易的支持到SSPI和LDAP,这些都是Apache本身就支持的。D能得到比较完善的Apache安全认证系统。下面是安装与配置一、首先准备好相关的安装包,我这里使用的是下列的几个包Apr:apr-1.4.2.tar.gz和 apr-util-1.3.10.tar.gzApache:httpd-2.2.22.tar.gzSubversion:subversion-1.6.15.tar.gz和subversion-deps-1.6.15.tar.gz二、安装和配置步骤1、安装apr-1.4.2#tar –zvxf apr-1.4.2.tar.gz#cd apr-1.4.2#./configure 安装不指定路径时 默认安装到/usr/local/apr# make#make install2、安装apr-util-1.3.10#tar –zxvf apr-util-1.3.10.tar.gz#cd apr-util-1.3.10#./configure --with-apr=/usr/local/apr #make && make install3、安装httpd-2.2.22.tar.gz#tar zxvf httpd-2.2.22.tar.gz#cd httpd-2.2.22#./configure --prefix=/usr/local/apache \--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-rewrite#make #make install安装好后启动apache#/usr/local/apache/bin/apachectl-k start用浏览器查看http://IP,得到浏览器页面,说明apache已经配置成功了。4、安装和配置Subversion#tar zxvfsubversion-1.6.15.tar.gz#tar zxvfsubversion-deps-1.6.15.tar.gz# cd subversion-1.6.15# rm -rf apr#rm-rf apr-util注意: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目录),这一点知识非常重要,自己之前多次安装都没成功,现在才明白是在这一点被卡住了,但最终还是被我解决了, 学习,和不断实践 会使你不断成长!# ./configure --prefix=/usr/local/svn--with-apxs=/usr/local/apache/bin/apxs /--with-apr=/usr/local/apr/bin/apr-1-config--with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl--enable-maintainer-mode#make #make install确定下svn有没有安装成功#/usr/local/svn/bin/svnserve --version会看到相关版本信息!之后再看看apache 的相关模块有没有加载!如下:LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so下面开始建立版本库#mkdir -p /home/svndata# chown -R apache.apache /home/svndata#chmod -R 755/home/svndata#/usr/local/svn/bin/svnadmincreate /home/svndata/www/ 创建仓库为“www”#ls /home/svndata/www 查看有没有创建好,如果多了一些文件则说明版本库已经创建好5、配置apache支持svn#vi/usr/local/apache/conf/httpd.conf找到 User daemon 改为 User apache找到 Group daemon 改为 Group apache在配置文件末尾添加<Location /svn> DAV svnSVNParentPath /home/svndata (此处配置你的版本库根目录)AuthType Basic (连接类型设置 基本验证)AuthName "Subversion" (此处字符串内容修改为提示对话框标题)AuthUserFile /home/svndata/passwd(此处为访问版本库用户的文件,用apache的htpasswd命令生成)AuthzSVNAccessFile /home/svndata/auth.conf(此处为访问版本库权限的文件)Require valid-user(在authfile中所有的用户都可以访问,如果没有它,则只能第一个用户可以访问新建库)
</Location>保存退出。重新启动apache#/usr/local/apache/bin/httpd–k restart6、配置svn权限管理1)添加用户#/usr/local/apache/bin/htpasswd-c /home/svndata/passwd user1第一次设置用户时使用-c 表示新建一个用户文件。回车后输入用户密码,完成对用户的增加。第二次添加用户不需要带-c参数。如:/usr/local/apache/bin/htpasswd /home/svndata/passwd user22)权限分配:# vi /home/svndata/auth.conf[groups]表示群组设置Admin=user1,user2 表示admin群组里的成员Develop=u1,u2 表示Develop群组里的成员[www:/] 表示仓库www的根目录下的访问权限user1=rw www仓库user1用户具有读和写权限user2=r www仓库user2用户具有读权限@develop=rw 群develop的成员具有读写权限[/] 在所有仓库的根目录下*=r 对所有的用户都具有读写权限注意:在编辑auth.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错。在auth.conf中也可以指定多个仓库。若一个仓库中有多个目录,也可以设定某些用户或组对该目录有某些权限。如:

可以根据自己的需求设置。7、配置svn钩子#mkdir -p /opt/test#cd/home/svndata/www/hooks/#cp post-commit.tmplpost-commit# chown apache:apache post-commit#chmod 755 post-commit#vi post-commit添加:export.UTF-8/usr/local/svn/bin/svn update /opt/test --username=user1--password=password --no-auth-cache(一定要加此参数!)/usr/local/svn/bin/svn export http://IP:80/svn/www//opt/test --username=user1 --password=password--force --no-auth-cache启动svn#/usr/local/svn/bin/svnserve –d –r /home/svndata-d 表示以daemon方式(后台运行)运行-r 指定根目录#ps –ef | grep svnserve

出现上面的表示启动成功启动apache:#/usr/local/apache/bin/httpd -k restart#/usr/local/svn/bin/svn checkouthttp://192.168.254.131:80/svn/www/ /opt/test --username=ting --password=ting --no-auth-cache#chown -R apache.apache /opt/test/可以用客户端TortoiseSVN测试,这里不再演示也可以浏览器测试http://IP/svn/www显示有用户名和密码输入的提示即配置成功到此apache svn 服务器的架设已经完成。
错误解决:1、权限错误:如果出现Svn提交失败,可根据失败的具体提示去google,一般都能查出大概的错误原因,然后依次排查。例如:hooks脚本没有执行权限,就需要加入执行权限并修改其属主和属组。chown –R apache.apache/home/svndata/www/hooks/post-commitchmod 755 /home/svndata/www/hooks/post-commitPS:我们这次出现错误的主要原因是svn checkout时是以root用户的身份,所以/opt/test目录的属主和属组是root用户。apache用户没有相关执行权限。解决办法:chown –R apache.apache /opt/testchmod –R 755 /opt/test2、日志排错法如果再不报错的情况下达不到预期的效果,就要添加相关日志来辅助分析问题。如此次搭建中,客户端没有任何错误产生,但是就是达不到预期的效果。我们加入了如下日志:LOG=/home/svndata/hook.log /usr/local/svn/bin/svnupdate /opt/test --username=user1 --password=password --no-auth-cache(一定要加此参数!) >>$LOG/usr/local/svn/bin/svn export http://192.168.254.131:80/svn/www//opt/test --username=user1 --password=password--force --no-auth-cache >>$LOG
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息