设为首页 收藏本站
查看: 628|回复: 0

[经验分享] Centos 下搭建svn+apache 服务

[复制链接]

尚未签到

发表于 2018-11-25 13:28:53 | 显示全部楼层 |阅读模式
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.gz

Apache:httpd-2.2.22.tar.gz

Subversion: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 install

2、  安装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 install

3、安装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://192.168.254.131,得到it works,说明apache已经配置成功了。

4、    安装和配置Subversion

# tar zxvf subversion-1.6.15.tar.gz

# tar zxvf subversion-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/svnadmin create /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

在配置文件末尾添加


    DAV svn

    SVNParentPath /home/svndata (此处配置你的版本库根目录)

    AuthType Basic  (连接类型设置 基本验证)

    AuthName "Subversion" (此处字符串内容修改为提示对话框标题)

    AuthUserFile /home/svndata/passwd(此处为访问版本库用户的文件,用apache的htpasswd命令生成)

    AuthzSVNAccessFile /home/svndata/auth.conf(此处为访问版本库权限的文件)

    Require valid-user(在authfile中所有的用户都可以访问,如果没有它,则只能第一个用户可以访问新建库)


保存退出。

重新启动apache

#/usr/local/apache/bin/httpd –k restart

6、    配置svn权限管理

1)    添加用户

# /usr/local/apache/bin/htpasswd -c /home/svndata/passwd user1

第一次设置用户时使用-c 表示新建一个用户文件。回车后输入用户密码,完成对用户的增加。第二次添加用户不需要带-c参数。如:

/usr/local/apache/bin/htpasswd /home/svndata/passwd user2

2)    权限分配:

# 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.tmpl post-commit

# chown apache:apache post-commit

# chmod 755 post-commit

#vi post-commit

添加:

export LANG=zh_CN.UTF-8

/usr/local/svn/bin/svn update /opt/test --username=user1 --password=password --no-auth-cache(一定要加此参数!)

/usr/local/svn/bin/svn export http://192.168.254.131: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 checkout http://192.168.254.131:80/svn/www/ /opt/test  --username=ting --password=ting --no-auth-cache

#chown -R apache.apache /opt/test/

接下来客户端TortoiseSVN测试

如图客户端连接


  





  





  





  


最后浏览器测试



http://192.168.254.131/svn/www


  










  




成功!到此apache svn 服务器的架设已经完成。




  


FAQ



  

1、权限错误:



如果出现Svn提交失败,可根据失败的具体提示去google,一般都能查出大概的错误原因,然后依次排查。例如:hooks脚本没有执行权限,就需要加入执行权限并修改其属主和属组。

chown –R apache.apache /home/svndata/www/hooks/post-commit

chmod 755 /home/svndata/www/hooks/post-commit

PS:我们这次出现错误的主要原因是svn checkout时是以root用户的身份,所以/opt/test目录的属主和属组是root用户。apache用户没有相关执行权限。

解决办法:

chown –R apache.apache /opt/test

chmod –R 755 /opt/test

2、日志排错法

如果再不报错的情况下达不到预期的效果,就要添加相关日志来辅助分析问题。如此次搭建中,客户端没有任何错误产生,但是就是达不到预期的效果。我们加入了如下日志:

LOG=/home/svndata/hook.log

   /usr/local/svn/bin/svn update /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


  





  







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639435-1-1.html 上篇帖子: apache+htpasswd 下篇帖子: 安装配置 Apache服务器开发工具(1) CGl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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