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

[经验分享] apache SVN权限的问题困扰了我多长时间

[复制链接]

尚未签到

发表于 2017-1-10 09:47:33 | 显示全部楼层 |阅读模式
  chcon -R -h -t httpd_sys_content_t <SVN Root 目录>
  CentOs5.5上配置SVN1.6.13
  我是采用RPM包来装的(本文是服务器端的安装),apache用的是原来安装系统的时候安装的apache。
  1.首先下载所需要的RPM包
1)mod_dav_svn-1.6.13-1.i386.rpm
2)neon-0.28.4-1.i386.rpm
3)neon-devel-0.28.4-1.i386.rpm
4)sqlite-3.5.9-2.i386.rpm
5)sqlite-devel-3.5.9-2.i386.rpm
6)subversion-1.6.13-1.i386.rpm
7)subversion-devel-1.6.13-1.i386.rpm

大家可以到http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.13/下载所需要的软件,这边还有其它版本所需要的文件。
2.开始安装
1)先升级sqlite。
请注意,rpm管理本身对sqlite有依赖,所以不能卸载sqlite,如果卸载,会出现rpm命令不可用的问题,最好直接升级至最新版本的sqlite。
#rpm -Uvh sqlite-3.5.9-2.i386.rpm
注:可能出现以下问题
sqlite = 3.3.6-5 is needed by (installed) sqlite-devel-3.3.6-5.i386
那就先用#rpm -e sqlite-devel-3.3.6-5.i386把这个文件给卸载了,后面会再安装(sqlite-devel-3.5.9-2.i386.rpm)

2)安装neon-0.28.4-1.i386.rpm
# rpm -Uvh neon-0.28.4-1.i386.rpm 
error: Failed dependencies:
libneon.so.25 is needed by (installed) cadaver-0.22.3-4.el5.i386
# rpm -e cadaver-0.22.3-4.el5.i386
# rpm -Uvh neon-0.28.4-1.i386.rpm
Preparing...                ########################################### [100%]
   1:neon                   ########################################### [100%]
3)安装neon-devel
[iyunv@localhost data]# rpm -Uvh neon-devel-0.28.4-1.i386.rpm 
Preparing...                ########################################### [100%]
   1:neon-devel             ########################################### [100%]
4)安装subversion
[iyunv@localhost data]# rpm -ivh subversion-1.6.13-1.i386.rpm 
Preparing...                ########################################### [100%]
   1:subversion             ########################################### [100%]
5)安装mod_dav_svn-1.6.13-1.i386.rpm
[iyunv@localhost data]# rpm -Uvh mod_dav_svn-1.6.13-1.i386.rpm
Preparing...                ########################################### [100%]
   1:mod_dav_svn            ########################################### [100%]
6)安装sqlite-devel
[iyunv@localhost data]# rpm -ivh sqlite-devel-3.5.9-2.i386.rpm 
Preparing...                ########################################### [100%]
   1:sqlite-devel           ########################################### [100%]
7).安装subversion-devel
[iyunv@localhost data]# rpm -ivh subversion-devel-1.6.13-1.i386.rpm
Preparing...                ########################################### [100%]
   1:subversion-devel       ########################################### [100%]
3.配置
 
1)初始化repository
 创建svn的项目库父路径,我把/svn/repos做为svn的项目库父路径。这个目录是任意的,如果是多个项目库则必须在同一个父路径下
 #mkdir /svn/repos
 我们通过如下命令初始化一个svn项目库zf
 #svnadmin create /svn/repos/zf
 重复上面的命令创建多个项目库,如
 #svnadmin create /svn/repos/chenproject
 指定存储方式来报建SVN库:
 #svnadmin create --fs-type fsfs /svn/repos/TelecomRepositorys

 #svnadmin create --fs-type bdb /svn/repos/TelecomRepositorys
 注:默认是bdb(Berkeley DB)的存储方式,不过一般人更喜欢fsfs的存储库方式
2)创建登陆的用户,有两种方式:以文件的形式,以数据库的形式(mysql)
a)以文件的形式
 
        在/svn目录下创建登陆用户文件.htpasswd以及2个用户chen1,chen2
        #htpasswd -c /svn/.htpasswd chen1
        #htpasswd /svn/.htpasswd chen2
注:-c是第一次那建文件时要用。在后面添加用户的时候,就不用-c选项.如果是自己安装了apaceh,那么找到apache的bin目录找到htpasswd 
 b)以数据库的形式
         #mysql -u root -p
          #mysql>create database svn_auth;
          mysql>user svn_auth
         创建用户svn
        mysql>GRANT ALL PRIVILEGES ON *.* TO svn@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
       创建表users
       mysql> CREATE TABLE users (
           ->   user_name CHAR(30) NOT NULL,
          ->   user_passwd CHAR(20) NOT NULL,
          ->   PRIMARY KEY (user_name)
          -> );
       添加2个测试帐号
         mysql> insert into users values('chen1', ENCRYPT('password'));
         mysql> insert into user values('chen2', ENCRYPT('password'));
4.SVN访问控制
  在/svn目录下创建访问控制文件文件svnaccess,名字任意,不过在以后的配置过程中你必须使用正确的名字,文件内容为
[groups]   
# harryharry_and_sally = harry,sally     
[/]   
*=rw  
注:意思是对所有的项目,所有人都有读写(rw)的权限,当然我们还可以对某个项目单独进行限制,设置如下
[groups]   
# harryharry_and_sally = harry,sally     
[zf:/]   
chen1=r  
*=rw  
 意思是对于项目库zf,用户chen1只有读权限,其他人有读写权限
5.Apache和SVN集成
 编辑apache的配置文件/etc/httpd/conf/httpd.conf文件或者/etc/httpd/conf.d/subversion.conf文件
 如果你使用登陆文件认证的方式,添加如下内容 
<Location /svn>  
DAV svn                           
SVNParentPath /svn/repos                           
AuthzSVNAccessFile /svn/svnaccess                           
AuthType Basic                           
AuthName "SVN Repositorys"                           
AuthUserFile /svn/.htpasswd                           
Require valid-user      
</Location>  
如果是用上面的方式,可能会出现提示authzSVNAccessFile有问题,要确保httpd.conf或是subversion.conf中有添加以下模块
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so



 如果你使用数据库认证的方式,添加如下内容
<Location /svn>                      
DAV svn                       
SVNParentPath /svn/repos                       
AuthzSVNAccessFile /svn/svnaccess                       
AuthName "SVN Repositorys"                       
AuthType Basic                       
AuthMYSQLEnable on                       
AuthMYSQLUser svn                       
AuthMySQLPassword password                       
AuthMYSQLDB svn_auth                       
AuthMYSQLUserTable users                       
AuthMYSQLNameField user_name                       
AuthMYSQLPasswordField user_passwd                       
Require valid-user               
</Location> 
注:我们可以看到/svn/svnaccess,/svn/.htpasswd是我们创建的文件,如果名字自定义的话,请在http.conf配置正确,同样需要正确配置的还有数据库用户svn,数据库svn_auth,表名users等等。
6.安全访问设置[必须设置,否则svn无法访问]
 修改目录的属主和访问权限
 #chown apache.apache -R /svn
 #chmod 755 -R /svn    
注:如果有开启selinux,那么会出现问题,解决方法:
 .禁用SELinux(不推荐)
或者
在SELinux图形管理界面中勾上Disable SELinux protection for httpd daemon这个选项,否则apache这个虚拟用户无法访问/svn目录,当然  你也可以用更好的方法设置apache的访问权限.

7.重新启动Apache服务器
 #service httpd restart
  或者
 #/etc/init.d/httpd restart
7. 键入下面的url看是否能正确的访问svn。
 http://localhost/svn/zf

若页面有东西,说明成功。

运维网声明 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-326390-1-1.html 上篇帖子: apache SVN权限的问题困扰了我多长时间 下篇帖子: Apache服务器访问控制与用户认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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