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

[经验分享] Redhat5下安装Apache2与Subversion1.6.15-guichina的学习笔记

[复制链接]

尚未签到

发表于 2018-5-12 14:07:37 | 显示全部楼层 |阅读模式
  原文地址 http://www.cnblogs.com/newstar/archive/2011/01/15/1936479.html
  一、安装步骤
  1.编译安装 apache2
  # tar xzvf httpd-2.2.15.tar.gz
  # cd httpd-2.2.15
  ## 一定主要要加入“–enable-dav”和“–enable-dav-fs”,这样apache会直接把这两个用于支持SVN的扩展编译。“–prefix=PATH”是apache在硬盘上的安装位置。
  # ./configure --enable-dav  --enable-dav-fs --enable-so --enable-mods-shared=most --prefix=/usr/local/apache2
  # make
  # make install
  ##启动验证apache是否安装正确
  # cd /usr/local/apache2/bin
  # ./apachectl start
  ##打开浏览器http://localhost/,如果有测试也"It works" 出现则证明已经安装成功
  ##将apache2加入为系统服务
  #cp /usr/local/httpd-2.2.15/bin/apachectl  /etc/rc.d/init.d/apache2.1.15
  ##首先将apachectl命令拷贝至/etc/rc.d/init.d目录下,改名为httpd。使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下
1# chkconfig: 35 70 302# description: Apache2  ##接着注册该服务。
  # chkconfig –-add httpd
  ##一切OK了,启动服务
  #  service httpd start
  ##停止服务
  #  service httpd stop
  ##重启服务
  # service httpd restar
  2.编译安装zlib
  # tar zxvf zlib-1.2.3.tar.gz
  # cd zlib-1.2.3
  # ./configure --prefix=/usr/local/zlib
  # make
  # make install
  3.编译安装subversion
  # tar –xzvf subversion-1.6.15.tar.gz
  ##将apr-util-1.3.10.tar.gz和apr-1.3.12.tar.gz解压出来,并move到subversion-1.6.15目录下,目录名分别更改为apr-util和apr。
  ##将sqlite-amalgamation-3.6.23.1.tar.gz解压,并move到subversion-1.6.15目录下,目录更改为sqlite-amalgamation
  # cd subversion-1.6.15
  # ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-ssl --with-zlib=/usr/local/zlib
  # make
  # make install
  4.创建版本仓库
  让运行Apache的用户拥有该仓库的所有权
1# mkdir /var/www/svn2# cd /var/www/svn/3# svnadmin create stuff4# chown -R apache:apache stuff/这样,就创建了一个stuff仓库,并让apache称为该仓库宿主。  5.修改Apache配置
  需要激活Apache加载mod_dav_svn模块。
  修改/usr/local/apache2/conf/httpd.conf配置文件的内容:
  # 加载相应的模块,执行前面的安装步骤,应该会自动添加进来,如果没有可手工增加如下内容
  LoadModule dav_svn_module     modules/mod_dav_svn.so
  LoadModule authz_svn_module   modules/mod_authz_svn.so
  在文件的最下面添加如下内容:
1<Location /repos>2   DAV svn3   SVNPath /var/www/svn/stuff4</Location>重新启动httpd服务后,通过浏览器访问http://ip/repos,即可看到如下界面:
DSC0000.jpg

  6.加入认证信息
  上 面定义的版本仓库,默认是任何人都可以匿名访问,并且拥有完全的写入、读取、修改、提交、删除版本库中信息的权限。因此,我们需要加入认证信息以做权限的 管理。HTTP协议版本就提供了简单的客户端认证方式,这可通过Apache配置完成。Apache提供了一个htpasswd工具来管理,使用该工具可 以创建一个文件,其中存放着用户名和加密后的密码信息。而这些就是Subversion可以引用的用户了,根据这些用户信息,配合 mod_authz_svn模块即可进行目录的访问控制。
  a、创建存放用户名信息的文件
  用htpasswd命令创建文件:
1# mkdir /etc/svn2# htpasswd -c /etc/svn/svnusers.conf linuxing3New password:4Re-type new password:5Adding password for user linuxing还可以利用htpasswd添加用户,或修改密码,删除用户名等,可参考apache2的参考文档。  b、修改/usr/local/apache2/conf/httpd.conf配置文件
在配置文件的Location标签部分,再加入如下内容,结果为:1<Location /repos>2  DAV svn3  SVNPath /var/www/svn/stuff4  AuthType Basic   # 使用基本认证方式,即用户名、密码认证5  AuthName &quot;Authorization Realm&quot;      # 在认证对话框中出现的提示信息6  AuthUserFile /etc/svn/svnusers.conf        # 指定上面创建好的存放用户名信息的文件路径7  Require valid-user  # 限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径8</Location>重启httpd服务后,可使用浏览器或svn客户端对该认证工作进行验证。
DSC0001.png

  7.进行目录访问控制
  上面配置只能对Location标签内的路径执行某些动作时进行控制,若希望控制版本仓库中目录访问权限,需要利用mod_authz_svn模 块。在上面的subversion.conf中,我们已经激活了该模块。所以,接下来要做的,就是在Location标签中使用authz功能:
1AuthzSVNAccessFile /etc/svn/accesspolicy.conf  其中,AuthzSVNAccessFile  指向的就是svnserve服务时使用的权限配置文件。每一段命名一个版本库和里面的路径,使用“认证用户(组)=权限”的方式描述每个用户(组)访问版 本库的级别:r 是只读,rw是可读写,留空是不允许访问。另外,*表示所有用户,可以用于控制匿名用户的访问权限;@表示已经被分组的组名。
  例如: 
01# cat /etc/svn/accesspolicy.conf02[groups]03committers = paul,linuxing04developers = linuxing,hanry05 06[/]07* = r # 用于控制匿名用户的08@committers = rw09 10[/dev]11@developers = rw12 13[/private]14* =15@comitters = r  这里定义了两个组,并对版本库中的特定路径给予了访问权限的控制。
  加入AuthzSVNAccessFile选项后,需要重启httpd服务以让其生效。但权限控制文件的内容修改后马上生效,是不需重启httpd服务。
  二、注意事项:
  1、如果你有多个版本仓库,怎么办?
  这时,可以使用多个Location,通过SVNPath来分别指定其路径;或者,参考配置文件中提供的,用SVNParentPath指定一个总路径,例如:
1SVNParentPath /var/www/svn但是,你务必需要给该总路径适当的宿主权限: 1# chown -R apache.apache /var/www/svn否则,访问时会提示权限不足的错误。接着,你就可以使用浏览器访问http://ip/repos/stuff等每个单独的版本库了。(每个单独的版本库,其Revision信息是独立的)  ◎ 还需要留意两点:
  a、虽然使用SVNParentPath指定了总路径,而且用浏览器去访问http://ip/repos可能会看到一些浏览信息。但如果总路径并没有加入到版本仓库中管理(即没有.svn目录下的文件),则通过svn客户端去访问版本仓库时,应通过实际仓库的路径去访问,如:http://ip/repos/stuff ;
  b、使用mod_dav_svn模块,通过Apache访问版本仓库,是不需要启动svnserve服务的,一切都已经由dav模块做接口完成数据请求的工作,通过svn客户端以HTTP协议访问版本仓库即可。
  2、能否通过一个权限配置文件对每个版本库进行访问权限?
  Subversion提供版本库分支管理功能。因此,在svnserve服务,或使用mod_dav_svn模块,使用Apache访问Subversion版本库时,当定义权限配置文件中,是可以对每个版本库进行权限控制的。
  以mod_dav_svn方式为例,像上面提到的SVNParentPath来指定版本库的总路径,如:
1SVNParentPath = /var/www/svn  而实际上,真正的版本库是/var/www/svn下面的一些子目录,例如/var/www/svn/project1、/var/www/svn /project2,它们才是由svnadmin  create创建的版本仓库。这时,可以在权限配置文件中,使用[repository:/path]的方式定义权限:
1[project1:/]2* = r3@project1_committer =rw4 5[project2:/]6* = r7@project2_committer =rw  3、Apache与svn权限控制该用哪个?
  根据上面的描述,可以在Apache中使用<Limit>等标签进行权限控制,也可以激活mod_authz_svn模块后,使用svnauthz格式的权限文件来控制。那该如何选择呢?
  事 实上,它们的区别在于权限的管理者不同,对于浏览器或svn客户端来说,除了Linux文件系统本身的访问权限外,<Limit>方式是让 Apache根据发送的命令进行访问管理,svnauthz则是由mod_authz_svn来进行,它们没有本质的区别,都可以用。但由于对命令的控制 比较复杂,而且容易导致误操作,因此,我更建议使用svnauthz的方式管理访问权限:
01<Location /repos>02   DAV svn03   SVNParentPath /var/www/svn04   Satisfy Any05   AuthType Basic06   AuthName &quot;Authorization Realm&quot;07   AuthUserFile /etc/svn/svnusers.conf08   Require valid-user09   AuthzSVNAccessFile /etc/svn/accesspolicy.conf10</Location>  这里的/etc/httpd/conf.d/subversion.conf文件中,不需要加入<Limit> 或<LimitExcept>标签。但加入了Satisfy  Any的设置,其表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足 Allow和Require的条件,而Any则是满足其中之一即可。
  这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。若没有这句话,则无论svnauthz中是否加入了“*=r”的写法,匿名用户都是无法访问的。
  4、svn协议与mod_authz_svn模块
  svn 协议,用于客户端使用svn://方式访问版本库,而mod_authz_svn模块让客户端可通过Apache访问版本库,它们分别使用不同的服 务:svnserve、httpd进行访问。由于用户、组权限不同,权限管理方式也不相同,因此,不建议同时启动两种访问方式。
  而易用性,管理方便的角度来分析,Apache以mod_authz_svn模块的方式访问版本库会更多人选择。(mod_authz_svn方式,使用80端口访问,并且提供https等加密传输,用于用户信息验证的密码保存方式不是明文的)
  三、安装过程中遇到的问题:
  1. 在安装过程中遇到configure failed for neon问题
  可能是系统的neon版本过低,可下载neon-0.28.4-1.i386.rpm包执行以下命令安装:
1# rpm -Uvh neon-0.28.4-1.i386.rpm  注:如果要用http访问,则必须要安装正确版本的neon
  参考资料:
  1.http://www.goodluck4u.com/?m=201007
  2.http://www.uml.org.cn/pzgl/200908078.asp

运维网声明 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-459189-1-1.html 上篇帖子: Redhat AS 6 修改网卡名 下篇帖子: redhat安装Gluster
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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