#!/bin/bash
dir='/data1/svndata' ##svn的目录
name=$2 ##svn的资源库名称
user='kbson' ##svn验证登陆的用户名
passwd='kbsonlong' ##svn验证登陆的密码
if test ! -z "$name"; then
mkdir -p $dir
cd $dir/
svnadmin create $name
chown -R apache:apache $name
fi
function config_http()
{
yum -y install httpd httpd-devel subversion mod_dav_svn expect
cat >/etc/httpd/conf.d/subversion_$name.conf<<EOF
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /$name>
DAV svn
SVNListParentPath on
SVNPath "$dir/$name"
AuthType Basic
AuthName "Subversion repository"
AuthUserFile "$dir/$name/conf/authfile"
Require valid-user
SVNAutoversioning on
ModMimeUsePathInfo on
</Location>
EOF
}
function create()
{
echo "
[groups]
admin = test
[admin:/]
@admin = rw
[/]
* = r
[$name:/]
test = rw">>$dir/$name/conf/authz
echo '#!/usr/bin/expect
spawn /usr/bin/htpasswd -c '$dir'/'$name'/conf/authfile '$user'
expect "New password:"
send "'$passwd'\n"
expect "Re-type new password:"
send "'$passwd'\n"
interact'>/tmp/htpasswd.sh
/usr/bin/expect /tmp/htpasswd.sh
chown apache:apache $dir/$name/conf/authfile
echo "$user = $passwd">>$dir/$name/conf/passwd
#svn import $dir/$name/ file://$dir/$name -m "Initial repository"
sed -i "s%# anon-access = read%anon-access = none%g" $dir/$name/conf/svnserve.conf
sed -i "s%# auth-access = write%auth-access = write%g" $dir/$name/conf/svnserve.conf
sed -i "s%# password-db = passwd%password-db = $dir/$name/conf/passwd%g" $dir/$name/conf/svnserve.conf
sed -i "s%# authz-db = authz%authz-db = $dir/$name/conf/authz%g" $dir/$name/conf/svnserve.conf
sed -i "s%# realm = My First Repository%realm = puppt Repository%g" $dir/$name/conf/svnserve.conf
}
function restart()
{
/etc/init.d/httpd restart
SvnPid=`ps -ef |grep $dir |grep -v grep | awk '{print $2}'`
if test ! -z "$SvnPid"; then
kill -9 $SvnPid
fi
svnserve -d -r $dir/ \
&& ps -ef |grep $dir |grep -v grep | awk '{print $2}' >/tmp/.svnpid \
&& echo Svn `cat /tmp/.svnpid` running...
}
case $1 in
"create")
create $2
;;
"config_http")
config_http $2
;;
"restart")
restart $2
;;
*)
echo "Usage $0 {config_http project_name | create project_name | restart }"
;;
esac
svn安装脚本
最新推荐文章于 2021-04-30 15:01:01 发布