本文意在轻松愉快安装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=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/*
[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
[root@svnbak authfile]> head -n100 authz
[groups]
sup_admin = xuxuyu,liudonghai
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
[/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.so
<Location /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
</Location>
[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
2.利用完整备份文件还原SVN访问
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
drwxr-xr-x. 6 apache apache 4096 4月 24 17:45 svn_office
[root@svnbak svn_office]
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.so
<Location /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
</Location>
同样的日志文件未指定将存放在默认/var/log/httpd/目录下
svn访问地址:http://主机IP/svn
注意:在浏览器或svn客户端访问时必须先关闭svn服务器的防火墙和selinux
3.域名访问svn库
以上是没有域名解析的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.so
<VirtualHost *:80>
ServerName 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
<Directory "/data/wwwroot/svn.yinhejuzhen.com">
Options FollowSymlinks
Require all granted
RewriteEngine on
RewriteRule index.html http://docs.galaxymx.com/index.php?title=SVN_版本控制系统
</Directory>
<Files ~ "\.php$">
Require valid-user
AuthType Basic
AuthName "svn.yinhejuzhen.com"
AuthUserFile /data/svn/authfile/passwd
</Files>
<Location /office>
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
</Location>
<Location /office_test>
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
</Location>
</VirtualHost>
|