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
安装过程
- 安装所需应用
yum install -y subversion php httpd mod_dav_svn
- 查看应用安装情况
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连接起来,配置文件
- 修改配置文件
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>
- 重启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的部署和启动方式决定了我们使用具体哪种协议
- 当我们使用
svnserve -d -r [svn repo path]
启动svn服务的时候,是使用svn://
协议访问- 当我们使用
systemctl start httpd
或者systemctl restart httpd
启动时,是使用http://
协议访问- 两种启动方式只能使用一种,一般同时只使用一种访问协议.
关于使用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>