This Script is for updating a Nighly build to a new Nightly.
The script is a quick hack to automate the process. Make sure you read the timeline before you use it.
Changes in the ispcp.conf are NOT included in the Script. You have to do this by hand.
Launch it as “root” from your “trunk” directory.
A backup of the current IPSPCDIR is created in BACKUPDIR (default values are in the script).
It's in Beta state. Make sure you have backups before you try it.
#!/bin/sh # # ispcp-nightly-update # Version: 0.0.1 # License: GPL # Author : ispcomm # Credits: ispcp development team # # Variables BACKUPDIR="/var/www/backup" WWWDIR="/var/www" ISPCPDIR="${WWWDIR}/ispcp/" REBUILD_SITES="yes" # Backup current installation mkdir -p ${BACKUPDIR} pushd ${BACKUPDIR} tar czpf "ispcp_backup-`date +'%Y-%m-%d %H-%M-%S'`.tar.gz" ../ispcp/ cp ../ispcp/engine/ispcp-db-keys.pl . cp ../ispcp/gui/include/ispcp-db-keys.php . cp ../ispcp/gui/tools/pma/config.inc.php . popd # Compile ispcp. Install will copy files to /tmp/ispcp make clean install # Update current installation /etc/init.d/ispcp_daemon stop pushd /tmp/ispcp${WWWDIR} cp -R ispcp/ ${WWWDIR} find ${ISPCPDIR} -type d -name '.svn' -exec rm -fr '{}' \; cd ${BACKUPDIR} cp ispcp-db-keys.pl ../ispcp/engine/ cp ispcp-db-keys.pl ../ispcp/engine/messager/ cp ispcp-db-keys.php ../ispcp/gui/include/ cp config.inc.php ../ispcp/gui/tools/pma/ cd ../ispcp/engine/setup/ ./set-engine-permissions.sh ./set-gui-permissions.sh if [ $REBUILD_SITES == "yes" ] ; then # Some old releases require this. not necessary for current ones. #DELETE FROM config WHERE name = 'DATABASE_REVISION'; cat <<EOF | mysql -uroot -p ispcp UPDATE mail_users SET status='toadd' where status='ok'; UPDATE domain SET domain_status = 'change' WHERE domain_status = 'ok'; UPDATE domain_aliasses SET alias_status = 'change' WHERE alias_status = 'ok'; UPDATE subdomain SET subdomain_status = 'change' WHERE subdomain_status = 'ok'; EOF ${ISPCPDIR}/engine/ispcp-rqst-mngr fi /etc/init.d/ispcp_daemon start rm -fR /tmp/ispcp popd
Also, if you're super lazy, you can use this modified version (thanks sci2tech). It will checkout svn for you and upgrade “parts” and “etc” also. Be carefull with this as sometimes nightly is broken. Always check the timeline. Remember to change mysql user and password
#!/bin/bash # # ispcp-nightly-update # Version: 0.0.3 - 18.08.2008 # License: GPL # Author : ispcomm # Credits: ispcp development team # # Variables BACKUPDIR="/var/www/backup" TRUNK_DIR="/usr/src/ispcp" REBUILD_SITES="yes" SAVE_DEFAULT_BACKUP="yes" DISTRO_UPD="yes" function msg_exit(){ echo $1;exit; } function Extract_vars(){ eval `cat ${TRUNK_DIR}/${MAKEFILE} | grep -E "(INST_PREF|SYSTEM_CONF)="| sed -e 's/$(INST_PREF)//g'` for a in `cat ${SYSTEM_CONF}/ispcp.conf | grep -E "(CONF_DIR|GUI_ROOT_DIR|ROOT_DIR|BACKUP_FILE_DIR|CMD_HTTPD|CMD_NAMED|CMD_MTA|CMD_ISPCPD|CMD_PFLOGSUM)"| sed -e 's/ //g'` do export $a done WWWDIR=`echo ${ROOT_DIR} | awk -F "/ispcp" '{print $1}'` } #download/update trunk no longer remove old trunk (thanks kilburn) echo "#### DOWNLOAD TRUNK ####" mkdir -p ${TRUNK_DIR} svn checkout http://www.isp-control.net/ispcp_svn/trunk/ ${TRUNK_DIR} cd ${TRUNK_DIR} echo "#### SO determining ####" if [ -e /etc/debian_version ]; then RELEASE=`cat /etc/debian_version` case ${RELEASE} in 2.0) VERSION="hamm";msg_exit "HAMM is not suported";; 2.1) VERSION="slink";msg_exit "SLINK is not suported";; 2.2) VERSION="potato";msg_exit "POTATO is not suported";; 3.0) VERSION="woody";msg_exit "WOODY is not suported";; 3.1) VERSION="sarge";; 4.0) VERSION="etch";; lenny*) VERSION="lenny";; esac MAKEFILE="Makefile" Extract_vars if [ $DISTRO_UPD == "yes" ] ; then echo "#### SO UPDATE ####" apt-get update; apt-get -y dist-upgrade; apt-get -y install `cat ./docs/Debian/debian-packages-${VERSION}`; fi; elif [ -e /etc/fedora-release ]; then MAKEFILE="Makefile.fedora" Extract_vars if [ $DISTRO_UPD == "yes" ] ; then msg_exit "Fedora is not suported yet" yum -y install `cat ./docs/Fedora/fedora-packages` cpan2rpm -i http://search.cpan.org/CPAN/authors/id/P/PH/PHOENIX/Term-ReadPassword-0.07.tar.gz wget -P /tmp/core http://hany.sk/mirror/fedora/releases/7/Everything/i386/os/Fedora/perl-Net-LibIDN-0.09-3.fc7.i386.rpm rpm -i /tmp/core/perl-Net-LibIDN-0.09-3.fc7.i386.rpm rm -f /tmp/core/perl-Net-LibIDN-0.09-3.fc7.i386.rpm fi; elif [ -e /etc/SuSE-release ]; then MAKEFILE="Makefile.opensuse" Extract_vars if [ $DISTRO_UPD == "yes" ] ; then yast -i `cat ./docs/OpenSuse/opensuse103-packages` fi; elif [ -e /etc/gentoo-release ]; then MAKEFILE="Makefile.gentoo" Extract_vars if [ $DISTRO_UPD == "yes" ] ; then emerge -uq `cat ./docs/Gentoo/gentoo-packages` fi; elif [ -e /etc/redhat-release ]; then msg_exit "RedHat is not suported yet" elif [ -e /etc/slackware-version ]; then msg_exit "Slackware is not suported yet" else msg_exit "Unknown Linux ditribution: not suported" fi echo "#### BACKUP OLD FILES ####" # Backup current installation mkdir -p $BACKUPDIR pushd $BACKUPDIR if [ $SAVE_DEFAULT_BACKUP == "yes" ] ; then #move ispcp/backups to a temporary location mv -f $BACKUP_FILE_DIR . fi tar czpf "ispcp_backup-`date +'%Y-%m-%d %H-%M-%S'`.tar.gz" ${WWWDIR}/ispcp/ tar czpf "ispcp_backup-etc-`date +'%Y-%m-%d %H-%M-%S'`.tar.gz" ${SYSTEM_CONF} echo "#### SAVEING SETTINGS ####" cp -v ${WWWDIR}/ispcp/engine/ispcp-db-keys.pl . cp -v ${WWWDIR}/ispcp/gui/include/ispcp-db-keys.php . cp -v ${WWWDIR}/ispcp/gui/tools/pma/config.inc.php . popd echo "#### BUILDING ISPCP ####" make -f ${MAKEFILE} clean make -f ${MAKEFILE} install echo "#### STOPING ISPCP DAEMON ####" $CMD_ISPCPD stop echo "#### SAVEING CUSTOM STAFF ####" cp -TvR ${GUI_ROOT_DIR}/domain_default_page ${INST_PREF}${GUI_ROOT_DIR}/domain_default_page cp -v ${GUI_ROOT_DIR}/themes/user_logos/* ${INST_PREF}${GUI_ROOT_DIR}/themes/user_logos/ echo "#### REMOVE OLD ISPCP ####" rm -fR $ROOT_DIR echo "#### REMOVE .svn DIRECTORIES ####" rm -fr `find ${INST_PREF} -type d -name '.svn'` echo "#### UPDATE CURENT INSTALATION ####" pushd ${INST_PREF}${WWWDIR} rm -fr `find ispcp/ -type d -name '.svn'` cp -R ispcp/ $WWWDIR cp -v ${INST_PREF}${CMD_PFLOGSUM} ${CMD_PFLOGSUM} popd echo "#### RESTORE SETTINGS ####" pushd $BACKUPDIR cp -v ispcp-db-keys.pl ${WWWDIR}/ispcp/engine/ cp -v ispcp-db-keys.pl ${WWWDIR}/ispcp/engine/messager/ cp -v ispcp-db-keys.php ${WWWDIR}/ispcp/gui/include/ cp -v config.inc.php ${WWWDIR}/ispcp/gui/tools/pma/ echo "#### RESTORE BACKUPS ####" if [ $SAVE_DEFAULT_BACKUP == "yes" ] ; then mv -f backups ${BACKUP_FILE_DIR} fi popd echo "#### SETTING PERMISIONS ####" pushd ${WWWDIR}/ispcp/engine/setup/ ./set-engine-permissions.sh ./set-gui-permissions.sh popd echo "#### COPYING /parts DIRECTORIES ####" bla=`find ${INST_PREF}/etc/ispcp -type d -name 'parts'`; for x in $bla; do bla2=`echo ${x} | awk -F"${INST_PREF}|/parts" '{print $2}'` cp -R $x $bla2 done cp ${INST_PREF}${CONF_DIR}/apache/httpd.conf ${CONF_DIR}/apache/httpd.conf cp ${INST_PREF}${CONF_DIR}/apache/working/ispcp.conf ${CONF_DIR}/apache/working/ispcp.conf echo "#### REBUILDING SITES ####" if [ $REBUILD_SITES == "yes" ] ; then # Some old releases require this. not necessary for current ones. #DELETE FROM config WHERE name = 'DATABASE_REVISION'; #read -p "Enter mysql pasword on prompt" cat <<EOF | mysql -uroot -p**YOURPASSWORD** ispcp UPDATE mail_users SET status='toadd' where status='ok'; UPDATE domain SET domain_status = 'change' WHERE domain_status = 'ok'; UPDATE domain_aliasses SET alias_status = 'change' WHERE alias_status = 'ok'; UPDATE subdomain SET subdomain_status = 'change' WHERE subdomain_status = 'ok'; TRUNCATE TABLE login; EOF ${ROOT_DIR}/engine/ispcp-rqst-mngr fi echo "#### Starting ispcp-daemon ####" $CMD_ISPCPD start echo "#### Deleting ispcp tmp Dir ####" rm -fR ${INST_PREF} echo "#### Restarting Services ####" $CMD_HTTPD restart $CMD_NAMED restart $CMD_MTA restart
Changelog:
25.05.08 - Added Printouts
03.06.08 - Added suport for Fedora, SuSE and Gentoo
18.08.08 - Added rebuild for apache ispcp.conf. Save customizations (domain_default_page and user logo).