svnadmin是一个Java开发的管理svn服务器的项目用户的web应用。安装好svn服务器端把svnadmin.war部署至tomcat,就可以通过web浏览器管理svn的项目,用户以及目录权限,使得管理配置svn简便,之后不需要每次都到服务器上手工修改配置文件。下面具体讲述一下如何在Linux系统下搭建svnadmin服务,借助于nginx,tomcat等服务。


安装MySQL,JDK,Tomcat,Nginx

安装Mysql — https://blog.yoodb.com/yoodb/article/detail/1517

安装JDK — https://blog.yoodb.com/yoodb/article/detail/209

安装Tomcat,Nginx — https://blog.yoodb.com/nikolatesla/article/detail/1439


1、安装httpd服务

1)安装apache命令yum install httpd -y 


2)安装完成后可以通过如下命令查看是否安装成功,命令httpd -version

[root@ecs-5a8d-0001 /]# httpd -version
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 5 2018 01:47:09


3)修改httpd服务端口号

...
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 83
#
# Dynamic Shared Object (DSO) Support
...


4)httpd服务启动命令

[root@ecs-5a8d-0001 svn]# /bin/systemctl start httpd.service


5)查看是否启动成功(访问)  http://ip:port/

能打开页面显示“Testing 123... ”,表示httpd服务启动成功了。


2、安装svn模型

1)在安装svn模型之前先关掉httpd服务:

[root@ecs-5a8d-0001 svn]# /bin/systemctl stop httpd.service


2)安装svn模型命令yum install mod_dav_svn subversion -y


3)查看svn模型是否安装命令svnserve --version

[root@ecs-5a8d-0001 /]# svnserve --version
svnserve, version 1.7.14 (r1542130)
compiled Apr 11 2018, 02:40:28
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.


4)查看是否多出两个模型文件命令ls /etc/httpd/modules/ | grep svn

[root@ecs-5a8d-0001 /]# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so


5)创建svn仓库主目录,并建根目录软连接

[root@ecs-5a8d-0001 svn]# mkdir -p /home/yoodb/svn
[root@ecs-5a8d-0001 svn]# ln -s /home/yoodb/svn /


6)创建subversion.conf

[root@ecs-5a8d-0001 svn]# vi /etc/httpd/conf.d/subversion.conf

增加如下内容:

<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath /svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /svn/passwd.http
AuthzSVNAccessFile /svn/authz
Require valid-user
</Location>
RedirectMatch ^(/svn)$ $1/


3、安装svnadmin

svnadmin下载地址 — https://jsvnadmin.googlecode.com/files/svnadmin-3.0.5.zip  ,解压后有svnadmin.wardb数据库文件


1)修改tomcat端口号和字符编码(否则svn页面操作无法输入中文),命令vi /home/yoodb/svnadmin/conf/server.xml, URIEncoding="UTF-8"

[root@ecs-5a8d-0001 svn]# vi /home/yoodb/svnadmin/conf/server.xml
...
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="82" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
...


2)解压svnadmin-3.0.5.zip,将svnadmin.war包中jdbc.properties,提取到桌面,修改svnadmin的数据库信息。


3)创建数据并导入数据mysql5.sql,en.sql

create database svnadmin default charset utf8 collate utf8_general_ci;


4、配置nginx

server {
listen 81;
server_name localhost;
location /svnadmin {
proxy_pass http://127.0.0.1:82;
proxy_read_timeout 150;
}
location /svn {
proxy_pass http://127.0.0.1:83;
proxy_read_timeout 150;
}
}


5、分别启动httpd服务,tomcat服务和nginx服务

1)启动服务

[root@ecs-5a8d-0001 svn]# /bin/systemctl start httpd.service
[root@ecs-5a8d-0001 svn]# /home/yoodb/svnadmin/bin/startup.sh
[root@ecs-5a8d-0001 svn]# /usr/local/nginx/sbin/nginx/sbin/nginx


2)访问地址

http://ip:port/svnadmin,如:http://192.168.0.1:81/svnadmin

第一次需要设置管理员账号和密码:自定义管理员账号和密码。

Linux系统下搭建svnadmin服务详细步骤讲解_svn


3)创建仓库

Linux系统下搭建svnadmin服务详细步骤讲解_svn_02

项目:库名自定义

类型:类型为http协议多库

路径:路径相对于linux系统的目录信息

URL:http协议访问svn所在主机,后续为库地址,模拟web寻址方式

描述:描述自定义


打开项目连接可能认证失败,需要添加用户至管理组,添加后就有权限了。

Linux系统下搭建svnadmin服务详细步骤讲解_svn_03


如果当前用户还是没有权限是因为/svn/blog目录的权限属于root用户,而apache用户组管理的apache用户没有操作这个目录的权限,我们只需要将该目录权限赋值给apache如果以后创建新库,需要对新建的库目录执行相同操作即可。

[root@ecs-5a8d-0001 svn]# chown -R apache.apache blog


除了权限问题,还需要关闭SELinux(Linux的访问控制,一定要在局域网里关闭此权限,否则非常危险,相当于裸奔),否则会和svn的目录访问有冲突。

[root@ecs-5a8d-0001 svn]# vim /etc/selinux/config

修改内容:SELINUX=disabled

重启系统以及重启httpd服务和tomcat服务,这时就有权限了。


Linux系统下搭建svnadmin服务详细步骤讲解_apache_04