本文意在轻松愉快安装svn1.9版本,绕过繁琐的编译安装,利用yum安装来解决依赖关系
参考链接:
链接1:部署http+svn
链接2:yum安装svn指定版本,svn.repo文件制作
难点1:关键还是从链接2知道了svn镜像库地址;
难点2:直接安装的subversion 不符合版本要求,tar.gz包编译安装问题多到想砸键盘
本次部署是因为生产环境中的svn库完整备份后,在备份机上还原SVN的使用;生产环境使用的版本是subversion-1.9.9,低于这个版本部署完成后会报错,yum默认安装的版本是1.7,在yum安装之前必须先准备1.9.9以上版本的yum源,或者rpm包。一定要编译安装的请出门左转继续搜索,不要浪费时间。
在网上找到subversion的安装源,版本库,http://opensource.wandisco.com/rhel/7/svn-1.9/RPMS/
yum源,将下面内容写入到文件/etc/yum.repos.d/svn.repo [root@localhost ~]> cat /etc/yum.repos.d/svn.repo [subversion] name=subversion baseurl=http://opensource.wandisco.com/rhel/7/svn-1.9/RPMS/ enabled=1 gpgcheck=1 #也可不验证,gpgkey=0,下面一行删除 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco二、安装软件 方法1.利用repo文件在线安装
做好svn.repo后,直接yum install subversion [root@localhost ~]> yum install subversion -y [root@localhost ~]> rpm -q subversion subversion-1.9.12-1.x86_64 其他两个软件直接安装即可 [root@localhost ~]> yum -y install httpd mod_dav_svn [root@localhost ~]> rpm -q subversion httpd mod_dav_svn subversion-1.9.12-1.x86_64 httpd-2.4.6-95.el7.centos.x86_64 mod_dav_svn-1.9.12-1.x86_64方法2.下载rpm包后安装
如果制作的repo文件不能安装成功,直接在浏览器里打开repo文件里的链接,找到符合系统版本的rpm包,直接点击即可下载,或者右键软件包"复制链接"在centos里用wget下载
在rpm包所在的目录执yum install xxxx.rpm,同样可以安装其他依赖包,不建议用rpm -ivh xxx.rpm安装,rpm 安装不能解决软件包的依赖关系
下载离线rpm包 [root@localhost ~]> wget http://opensource.wandisco.com/rhel/7/svn-1.9/RPMS/x86_64/subversion-1.9.12-1.x86_64.rpm [root@localhost ~]> ls anaconda-ks.cfg subversion-1.9.12-1.x86_64.rpm [root@localhost ~]> yum -y install subversion-1.9.12-1.x86_64.rpm 同样,其他两个软件直接安装即可 [root@localhost ~]> yum -y install httpd mod_dav_svn [root@localhost ~]> rpm -q subversion httpd mod_dav_svn subversion-1.9.12-1.x86_64 httpd-2.4.6-95.el7.centos.x86_64 mod_dav_svn-1.9.12-1.x86_64三、重点:配置文件
这里我分了两种情况供大家参考
1.全新创建配置过程 1.1创建SVN库,并把目录所有者和所属组改成apache[root@localhost ~]> mkdir -p /data/svn [root@localhost ~]> svnadmin create /data/svn/ [root@localhost ~]> chown -R apache:apache /data/svn/* #把权限给apache [root@localhost ~]> cd /data/svn/ ;ls -lh drwxr-xr-x 2 apache apache 76 Apr 25 10:51 conf drwxr-sr-x 6 apache apache 233 Apr 25 10:51 db -r--r--r-- 1 apache apache 2 Apr 25 10:51 format drwxr-xr-x 2 apache apache 231 Apr 25 10:51 hooks drwxr-xr-x 2 apache apache 41 Apr 25 10:51 locks -rw-r--r-- 1 apache apache 246 Apr 25 10:51 README.txt [root@localhost ~]> htpasswd -c conf/passwd liudh #初次创建密码用-c,若已有的passwd和authz直接拷贝到该目录 #authz文件 这里放一段做参考吧 [root@svnbak authfile]> head -n100 authz [groups] #群组设置 sup_admin = xuxuyu,liudonghai #管理员组 # PM 组: pm_admin = litingrong pm = liuwei,dengchangwei,lilianzhu,litingrong # 市场部: mkt_admin = litingrong mkt = liuwei,dengchangwei,lilianzhu,litingrong mkt_sj_admin = sunpeng mkt_sj = sunpeng,sunjiayue,bufan,longhuan [/] #根目录的权限 @sup_admin = rw #管理组有读写权限 * = r #everyone均有读权限 [/PM组] #PM项目的权限 @pm = r @pm_admin = rw @sup_admin = rw * = [/s市场部] @mkt_sup_admin = rw @mkt = r @mkt_sj = r #下一级目录的访问者 * = [/s市场部/s设计] @mkt_sj_admin = rw @mkt_sj = r * =1.2配置/etc/httpd/conf.d/svn.conf 文件
[root@localhost ~]> cat /etc/httpd/conf.d/svn.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so2.利用完整备份文件还原SVN访问DAV svn SVNPath /data/svn AuthType Basic AuthName "10.0.0.76" AuthUserFile /data/svn/conf/passwd Require valid-user AuthzSVNAccessFile /data/svn/conf/authz #注:因为我在部署的时候把http访问日志的配置写到这里的话,httpd服务无法启动,于是就没写了 #日志将会存放到默认目录下/var/log/httpd/ #ErrorLog /data/logs/httpd/svn_error.log #CustomLog /data/logs/httpd/svn_access.log common [root@localhost ~]> ll /var/log/httpd/ -rw-r--r-- 1 root root 1712 Apr 25 14:38 access_log -rw-r--r-- 1 root root 1902 Apr 25 14:37 error_log [root@localhost ~]> systemctl start httpd.service 到此配置完成,如果/etc/httpd/conf.d/svn.conf 文件没错,httpd即可正常启动 svn访问地址:http://主机IP/svn 注意:在浏览器或svn客户端访问时必须先关闭svn服务器的防火墙和selinux
svn完整备份出来后存放在了 /data/svn/202204241100/svn_office/,此时不用再创建svn库,需要做的是:
1)把svn库目录的所有者和所属者给apache;
2)适当修改/etc/httd/conf.d/svn.conf文件
[root@localhost ~]> chown -R apache:apache /data/svn/202204241100/ [root@localhost ~]> ll /data/svn/202204241100/ drwxr-xr-x. 2 apache apache 4096 4月 24 19:22 authfile #passwd和authz文件放在这,并非放在svn库下的conf文件夹 drwxr-xr-x. 6 apache apache 4096 4月 24 17:45 svn_office [root@svnbak svn_office]# ll drwxr-xr-x. 2 apache apache 4096 4月 24 10:59 conf drwxr-sr-x. 6 apache apache 4096 4月 24 17:45 db -r--r--r--. 1 apache apache 2 4月 24 17:45 format drwxr-xr-x. 3 apache apache 4096 4月 24 10:59 hooks drwxr-xr-x. 2 apache apache 4096 4月 24 10:59 locks -rw-r--r--. 1 apache apache 246 4月 24 10:59 README.txt 修改完成的svn.conf文件 [root@localhost ~]> cat /etc/httpd/conf.d/svn.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so3.域名访问svn库DAV svn SVNPath /data/svn/202204241100/svn_office AuthType Basic AuthName "192.168.0.12" AuthUserFile /data/svn/202204241100/authfile/passwd Require valid-user AuthzSVNAccessFile /data/svn/202204241100/authfile/authz 同样的日志文件未指定将存放在默认/var/log/httpd/目录下 svn访问地址:http://主机IP/svn 注意:在浏览器或svn客户端访问时必须先关闭svn服务器的防火墙和selinux
以上是没有域名解析的svn访问,这里放一个可域名访问svn库的配置文件供参考
[root@localhost ~]> cat /etc/httpd/conf.d/svn.conf LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.soServerName svn.yinhejuzhen.com ServerAlias svn.yinhejuzhen.com DocumentRoot /data/wwwroot/svn.yinhejuzhen.com ErrorLog /data/logs/httpd/svn.yinhejuzhen.com_error.log CustomLog /data/logs/httpd/svn.yinhejuzhen.com_access.log common Options FollowSymlinks Require all granted RewriteEngine on RewriteRule index.html http://docs.galaxymx.com/index.php?title=SVN_版本控制系统 Require valid-user AuthType Basic AuthName "svn.yinhejuzhen.com" AuthUserFile /data/svn/authfile/passwd DAV svn SVNPath /data/svn/svn_office AuthType Basic AuthName "svn.yinhejuzhen.com" AuthUserFile /data/svn/authfile/passwd Require valid-user AuthzSVNAccessFile /data/svn/authfile/authz DAV svn SVNPath /data/svn_test/svn_office.test AuthType Basic AuthName "svn.yinhejuzhen.com" AuthUserFile /data/svn_test/authfile/passwd.test Require valid-user AuthzSVNAccessFile /data/svn_test/authfile/authz.test



