脚本分2部分 atuo_svn.sh 是编译安装svn make_svn.sh是自动安装一个指定的库 cat atuo_svn.sh #/bin/sh mkdir -p ./data/software cd ./data/software wget http://subversion.tigris.org/downloads/subversion-1.6.11.tar.bz2 wget http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.bz2 if [ ! -e "subversion-1.6.11.tar.bz2"] ;then echo “下载的链接错误,文件下载失败” exit 1 fi if [ ! -e "subversion-deps-1.6.11.tar.bz2"] ;then echo “下载的链接错误,文件下载失败” exit 1 fi #开始安装 mkdir -p ./data/src cd ./data/src #解压以下二个文件,会自动解压到同一个目录 tar jxvf ./data/software/subversion-1.6.11.tar.bz2 tar jxvf ./data/software/subversion-deps-1.6.11.tar.bz2 cd subversion-1.6.11/ ./configure -prefix=/usr/local/subversion make clean make && make install if [ "$?"== "0"]; then echo subversion安装成功. else echo subversion安装失败. exit 1 fi ln -s /usr/local/subversion/bin/* /usr/bin ldconfig cat make_svn.sh #/bin/sh #创建一个svn仓库 if [ "$3" = "" ] ; then echo “Please use: sh ${0} scoke (仓库名) test(用户名) web(网站的路径)” exit 1 fi #创建一个仓库名为$1 mkdir -p /data/svn svnadmin create /data/svn/$1 #配置svn sed -i ‘/# anon-access = read/a/anon-access = none’ /data/svn/$1/conf/svnserve.conf sed -i ‘/# password-db = passwd/a/password-db = passwd’ /data/svn/$1/conf/svnserve.conf #设置svn用户与密码 echo “$2 = `tr -dc _A-Z-a-z#$%^*-0-9 </dev/urandom |head -c25`” >> /data/svn/$1/conf/passwd #创建多个用户可以使用该命令创建,自动生成密码 #配置svn cd /data/svn/$1/hooks cp post-commit.tmpl post-commit chmod 777 post-commit mkdir -p /data/svn/$1/files cat > /data/svn/$1/hooks/post-commit << EOF #!/bin/sh REPOS=”/$1″ REV=”/$2″ commit-email.pl “/$REPOS” “/$REV” commit-watchers@example.org log-commit.py –repository “/$REPOS” –revision “/$REV” mkdir -p /data/svn/test1/files cd /data/svn/test1/files svn co file:///data/svn/test1 chown -R www:www /data/svn/test1/files/* chmod -R 777 /data/svn/test1/files/* /data/sh/rsy/rsy_svn_test1.sh EOF sed -i “s@test1@$1@g” /data/svn/$1/hooks/post-commit #创建同步脚本 cat > /data/sh/rsy/rsy_svn_test1.sh << EOF source /data/sh/rsy/rsy_script.sh cd /data/sh/rsy REMOTEIP=127.0.0.1 run_rsync svn_test1 /${REMOTEIP} svn_test1 data/web/kuaizhi/www EOF chmod 755 /data/sh/rsy/rsy_svn_test1.sh sed -i “s@test1@$1@g” /data/sh/rsy/rsy_svn_test1.sh sed -i “s@data/web/kuaizhi/www@$3@g” /data/sh/rsy/rsy_svn_test1.sh mv /data/sh/rsy/rsy_svn_test1.sh /data/sh/rsy/rsy_svn_$1.sh #/data/sh/rsy/rsy_script.sh脚本内容暂不贴出 #修改/etc/rsyncd.conf,添加指向 echo ######### >> /etc/rsyncd.conf echo [svn_$1] >> /etc/rsyncd.conf echo path = /data/svn/$1/files/$1 >> /etc/rsyncd.conf echo auth users = rsy_user >> /etc/rsyncd.conf #重启rsync服务和开启svn kill -9 `ps -aux |grep svn |grep -v grep |awk ‘{print $2}’` /usr/local/bin/svnserve -d -r /data/svn pkill rsync sleep 2 pkill rsync rsync –daemon echo ‘请打开防火墙3690端口和确定rsync服务开启’ ip=`ifconfig eth0|grep “inet addr”|awk -F: ‘{print $2}’ |awk ‘{print $1}’` echo svn://$ip/$1