#!/bin/bash
#subversion and apache install script
#by zm 20110627
#variables
pw_dir=/usr/local
svn_dir=/data/svnroot
#function
#function_main
svn_main (){
#
#check and uninstall rpm packages
#subversion
if rpm -qa | grep subversion > /dev/null;then
echo subversion 0
rpm -e --allmatches subversion
else
echo rpm package subversion 1
fi
#apr
if rpm -qa | grep apr > /dev/null;then
echo apr 0
rpm -e --allmatches apr
else
echo rpm package apr 1
fi
#apr-util
if rpm -qa | grep apr-util > /dev/null;then
echo apr-util 0
rpm -e --allmatches apr-util
else
echo rpm package apr-util 1
fi
#
#install
tar zxf src/httpd*.tar.gz
#apr
if [ ! -e "$pw_dir/apr" ];then
cd httpd*/srclib/apr
./configure --prefix=/usr/local/apr
make && make install
cd ../
if [ ! -e "$pw_dir/apr" ];then
echo "error! can't install apr please check ! Will now out of the script!"
exit 1
else
if ! grep '/usr/local/apr/lib' /etc/ld.so.conf>/dev/null;then
sed -i '$ a\/usr/local/apr/lib' /etc/ld.so.conf
fi
fi
else
echo "apache apr exists"
fi
#apr-util
if [ ! -e "$pw_dir/apr-util" ];then
cd apr-util/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
cd ../
if [ ! -e "$pw_dir/apr-util" ];then
echo "error! can't install apr-util please check ! Will now out of the script!"
exit 1
else
if ! grep '/usr/local/apr-util/lib' /etc/ld.so.conf>/dev/null;then
sed -i '$ a\/usr/local/apr-util/lib' /etc/ld.so.conf
fi
fi
else
echo "apache apr-util exists"
fi
#apache2
if [ ! -e "$pw_dir/apache2" ];then
pwd && cd httpd*/
./configure --enable-dav --enable-so --prefix=/usr/local/apache2/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make && make install
cd ../
if [ ! -e "$pw_dir/apache2" ];then
echo "error! can't install apache please check ! Will now out of the script!"
exit 1
else
if ! grep '/usr/local/apache2/bin' /etc/profile>/dev/null;then
sed -i '$,/export/ a\export PATH=$PATH:/usr/local/apache2/bin' /etc/profile
fi
fi
else
echo "apache already exists"
fi
#subversion
if [ ! -e "$pw_dir/subversion" ];then
tar jxf src/subversion*.tar.bz2
tar zxf src/sqlite-autoconf*.tar.gz
cd subversion*/
mkdir sqlite-amalgamation && cp ../sqlite-autoconf*/sqlite3.c sqlite-amalgamation/
./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl --enable-maintainer-mode
make && make install
if [ ! -e "$pw_dir/subversion" ];then
echo "error! can't install subversion please check ! Will now out of the script!"
exit 1
else
if ! grep '/usr/local/subversion/bin' /etc/profile>/dev/null;then
sed -i '$,/export/ a\export PATH=$PATH:/usr/local/subversion/bin' /etc/profile
source /etc/profile
ldconfig
fi
fi
else
echo "Already exists"
fi
}
#
#function_config
svn_config() {
#check_user_and_group
if ! grep 'svnroot' /etc/passwd >/dev/null && grep 'root' /etc/group >/dev/null;then
useradd -s /sbin/nologin svnroot
else
echo "svnroot user nad group already exists"
fi
#check_svn_dir
if [ ! -e "$svn_dir/repository" ];then
mkdir -p "$svn_dir/repository"
else
echo "$svn_dir/repository already exists"
fi
#create repository and import repository
if [ ! -e "$svn_dir/repository/test" ];then
svnadmin create "$svn_dir/repository/test"
mkdir -p $svn_dir/repository/import/{trunk,branches,tags}
svn import $svn_dir/repository/import file:///$svn_dir/repository/test -m 'init'
if [ ! -e "$svn_dir/repository/test" ];then
echo "error! can't modify $svn_dir please check ! Will now out of the script!"
exit 1
else
#modify user and group
chown -R svnroot:svnroot $svn_dir
chmod 700 $svn_dir
chmod 700 "$svn_dir/repository"
fi
else
echo "repository already exists"
fi
#passwd_file
if [ ! -e "$svn_dir/repository/pwdfile" ];then
htpasswd -cm "$svn_dir/repository/pwdfile" admin
chown -R svnroot.svnroot "$svn_dir/repository/pwdfile"
chmod 700 "$svn_dir/repository/pwdfile"
fi
#create authz file
if [ ! -e "$svn_dir/repository/authz" ];then
printf '
[groups]
g_pm = micheal,admin
g_dev = harry,sally,admin
[test:/]
@g_pm = r
@g_dev = r
[test:/trunk]
@g_pm = rw
@g_dev = rw
[test:/branches]
@g_pm = rw
@g_dev = rw
[test:/tags]
@g_pm = rw
@g_dev = rw' >"$svn_dir/repository/authz"
#
if [ -e "$svn_dir/repository/authz" ];then
chown svnroot.svnroot "$svn_dir/repository/authz"
chmod 700 "$svn_dir/repository/authz"
fi
fi
#modify httpd.conf
sed -i 's/User daemon/User svnroot/' /usr/local/apache2/conf/httpd.conf
sed -i 's/Group daemon/Group svnroot/' /usr/local/apache2/conf/httpd.conf
printf '
<Location /svn>
DAV svn
SVNParentPath /data/svnroot/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /data/svnroot/repository/pwdfile
AuthzSVNAccessFile /data/svnroot/repository/authz
Satisfy Any
Require valid-user
</Location>
'>> /usr/local/apache2/conf/httpd.conf
}
#
#main
case $1 in
install)
echo "argument type $1"
svn_main
;;
config)
echo "argument type $1"
svn_config
;;
*)
echo "Usage: $0 {install|config}"
exit 1
esac
附件:http://down.51cto.com/data/2358453
本文转自 dongnan 51CTO博客,原文链接: http://blog.51cto.com/dngood/599571