IF.SVNAdmin安装 | SVN权限可视化管理

IF.SVNAdmin安装

环境准备

  • Subversion
  • PHP
  • Apache(httpd)
  • mod_dav_svn

SVN

安装SVN,并创建对应的SVN仓库

PHP

IF.SVNAdmin是PHP项目,需要安装PHP

Apache(httpd)

IF.SVNAdmin与与Subversion的连接需要基于Apache
配置文件目录: /etc/httpd/conf.d

mod_dav_svn

Apache与Subversion连接需要组件mod_dav_svn


安装过程

  1. 安装所需应用
yum install -y subversion php httpd mod_dav_svn
  1. 查看应用安装情况
svnserver --version
php -v
httpd -version
ls /etc/httpd/modules/ |grep svn

目录明确

# 默认目录如下
# /var/www/html httpd服务的应用存放目录
# /etc/httpd/conf.d httpd服务的配置文件目录,需在该目录在建subversion.conf关联svn
# /etc/httpd/conf.d/subversion httpd服务与svn关联配置文件


# 手动创建目录如下(如需更改,应注意后文所有参数一并进行更改)
# /var/www/html/svnadmin 存放ifsvnadmin
# /apps/svn/repos 存放所有svn库的目录,通常用参数SVNParentPath,代码库的父级目录
# /apps/svn/config 存放ifsvnadmin使用的配置文件
# /apps/svn/config/passwdfile 用户信息配置文件 [IF.SVNAdmin使用]
# /apps/svn/config/accessfile 权限配置文件 [IF.SVNAdmin使用]

目录及文件创建:

mkdir -p /apps/svn/repos
mkdir -p /apps/svn/config 
touch /apps/svn/config/passwdfile
touch /apps/svn/config/accessfile

下载IFSVNAdmin

wget https://jaist.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.2.zip /apps
unzip /apps/svnadmin-1.6.2.zip
mv /apps/iF.SVNAdmin-stable-1.6.2 /var/www/html/svnadmin
rm -rf /apps/svnadmin-1.6.2.zip

权限修改

chmod -R 777 /var/www/html/svnadmin/data/
chmod -R 777 /apps/svn/repos
chown -R apache:apache /var/www/html/svnadmin/
chmod 777 /apps/svn/config/passwdfile
chmod 777 /apps/svn/config/accessfile

配置

httpd与subversion连接

安装了Apache之后,需要修改配置文件与SVN连接起来,配置文件

  1. 修改配置文件
vim /etc/httpd/conf.d/subversion.conf

增加内容

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
    DAV svn
    SVNParentPath /apps/svn/repos
    AuthType Basic
    AuthName "Authorization Realm"
    AuthUserFile /apps/svn/config/passwdfile
    AuthzSVNAccessFile /apps/svn/config/accessfile
    Require valid-user
</Location>
  1. 重启httpd
systemctl restart httpd

第一次访问svnadmin时设置

# Subversion 授权文件(authz)
/apps/svn/config/accessfile
# 用户身份验证文件 (SVNUserFile)
/apps/svn/config/passwdfile
# 代码仓库的父目录 (SVNParentPath)
/apps/svn/repos
# 'svn.exe' 或 'svn'可执行文件:
/usr/bin/svn
# 'svnadmin.exe' 或 'svnadmin' 可执行文件:
/usr/bin/svnadmin

URL

  • svnadmin 的Web端
# http://[服务器IP]/[访问前缀]/库名   (其中,访问前缀定义在subversion.conf,中的`Location /svn`)
# 例如:
http://10.100.xx.xxx/svnadmin/
  • svn库的http地址
# http://[服务器IP]/[访问前缀]/库名   (其中,访问前缀定义在subversion.conf,中的`Location /svn`)
# 例如:
http://10.100.xx.xxx/svn/repo1/
http://10.100.xx.xxx/svn/repo2/
http://10.100.xx.xxx/svn/test1/

其他相关参考

服务启停

# 查状态
systemctl status httpd
# 启服务
systemctl start httpd
# 重启服务
systemctl restart httpd
# 停止服务
systemctl stop httpd

SE Linux

# 查看SE Linux的状态
getenforce
# Enforcing [开启] 强制执行
# Permissive [关闭] 放任的,纵容的,宽容的

临时关闭SE Linux

setenforce 0

永久修改SE Linux

文件
/etc/selinux/config
修改参数

SELINUX=disabled # 关闭
SELINUX=enforcing # [开启]强制
SELINUX=permissive # [开启]宽容

关于SVN访问协议

通常情况下,SVN默认的访问协议是通过svn://来访问,不支持http访问.
但是在借用Apache(httpd)之后,则是通过http://来访问,这个时候不支持svn://访问协议.
http的访问协议可以支持网页直接打开,所以通常情况下http协议通用性更强一些

SVN的部署和启动方式决定了我们使用具体哪种协议

  1. 当我们使用svnserve -d -r [svn repo path]启动svn服务的时候,是使用svn://协议访问
  2. 当我们使用systemctl start httpd或者systemctl restart httpd启动时,是使用http://协议访问
  3. 两种方式可以同时使用,但一般同时只使用一种访问协议.
  4. 如果两种方式同时使用, 可以理解为svnserver与httpd分别工作, 且同时会使用两套体系管理用户信息, httpd访问时使用httpd的帐号, svnserver使用svnserver的帐号权限体系.则导致权限管理混乱.

关于使用SVNAdmin之后的库配置

在使用SVNAdmin之后,原本SVN库内的conf文件基本失去作用.
passwd和authz文件会由SVNAdmin两个passwdfile和accessfile代替.
server.conf也失去作用.
Apache的作用是基于SVN底层对文件目录直接接管.
passwdfile文件内保存的密码是加密密码, 原生的passwd是明文密码
在使用了svnadmin时,同样可以配置hook脚本.依旧是在原库配置.

在http访问时候,配置的hook脚本有中文时可能会报编码错误.
Error output could not be translated from the native locale to UTF-8.
需要修改httpd的配置编码.SVN1.8之后可以设置

vim /etc/httpd/conf/httpd.conf

添加内容

<IfModule mod_dav_fs.c>
    DAVLockDB /var/lib/dav/lockdb
    SVNUseUTF8 On
</IfModule>
posted @ 2021-06-29 09:57  Jrri  阅读(1971)  评论(0编辑  收藏  举报