Translations of this page?:

Nightly Updatescript

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.

All Linux Versions. For Debian, Fedora, Gentoo and SuSE automated script look down

#!/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


Automated Version

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 - 03.06.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 "(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 "#### 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
 
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**YOURPASSWOR** 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
${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

 
start/scripts/updatenightly.txt · Last modified: 2008/06/25 09:33 (external edit)
 
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki

| All rights reserved : isp-control.net |