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.war和db数据库文件
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
第一次需要设置管理员账号和密码:自定义管理员账号和密码。
3)创建仓库
项目:库名自定义
类型:类型为http协议多库
路径:路径相对于linux系统的目录信息
URL:http协议访问svn所在主机,后续为库地址,模拟web寻址方式
描述:描述自定义
打开项目连接可能认证失败,需要添加用户至管理组,添加后就有权限了。
如果当前用户还是没有权限是因为/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服务,这时就有权限了。