Table of Contents

Script de actualización de Nightly

Este script está hecho para poder seguir el progreso de ispCP. Está diseñado para aquellas personas que saben lo que hacen! No damos soporte para este script. ¡¡¡Úsalo bajo tu propia responsabilidad!!!

El script es un mecanismo rápido para automatizar el proceso. ¡¡¡Asegúrate de leer el “timeline” antes de usarlo!!!

Los cambios en “ispcp.conf” NO están incluidos en el script. Tienes que realizarlos a mano.

Entra como “root” desde el directorio raíz.

La copia de seguridad del actual IPSPCDIR se crea en BACKUPDIR (los valores por defecto están en el script).

Esto está en estado Beta. Asegúrate de tener copias de seguridad antes de probarlo.

Versión automatizada

Si, además, eres super perezoso, puedes utilizar esta versión modificada (gracias sci2tech). Chequeará svn por ti y también te actualizará “parts” y “etc”. Ten cuidado con esto porque a veces nightly está “roto”. Revisa siempre el “timeline”. Recuerda cambiar el usuario MySQL y la contraseña.

Necesitas tener instalado “subversion” en tu servidor para usarlo. Por ejemplo en Debian utiliza: <cli>apt-get install subversion-tools</cli>

#!/bin/bash
#
# ispcp-nightly-update
# Version: 0.0.7 - 07.09.2009
# 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"
 
echo "#### Starting Update ispCP to latest Trunk ####"
 
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_FTPD|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 [ `lsb_release -i -s | tr -d "\n"` == "Ubuntu" ]; then
	RELEASE=`lsb_release -c -s | tr -d "\n"`
	case ${RELEASE} in
		"jaunty")	;;
		"intrepid")	;;
		"hardy")	;;
		"gutsy")	;;
		"feisty")	;;
		"edgy")	;;
		* ) msg_exit "${RELEASE} is not suported";;
	esac
	MAKEFILE="Makefile.ubuntu"
	Extract_vars
	if [ $DISTRO_UPD == "yes" ] ; then
		if [ -e ./docs/Ubuntu/ubuntu-packages-${RELEASE} ]; then
			echo "#### SO UPDATE ####"
			apt-get update;
			apt-get -y dist-upgrade;
			apt-get -y install `cat ./docs/Ubuntu/ubuntu-packages-${RELEASE}`;
		fi
	fi;
elif [ -e /etc/debian_version ]; then
	RELEASE=`lsb_release -c -s | tr -d "\n"`
	case ${RELEASE} in
		"sarge")	;;
		"etch")		;;
		"lenny")	;;
		"squeeze")	;;
		* ) msg_exit "${RELEASE} is not suported";;
	esac
	MAKEFILE="Makefile"
	Extract_vars
	if [ $DISTRO_UPD == "yes" ] ; then
		if [ -e ./docs/Debian/debian-packages-${RELEASE} ]; then
			echo "#### SO UPDATE ####"
			apt-get update;
			apt-get -y dist-upgrade;
			apt-get -y install `cat ./docs/Debian/debian-packages-${RELEASE}`;
		fi
	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 ####"
mkdir -p $BACKUPDIR
pushd $BACKUPDIR
if [ $SAVE_DEFAULT_BACKUP == "yes" ] ; then
	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 "#### SAVING 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/
cp -TvR ${GUI_ROOT_DIR}/errordocs ${INST_PREF}${GUI_ROOT_DIR}/errordocs
 
echo "#### REMOVE OLD ISPCP ####"
rm -fR $ROOT_DIR
 
echo  "#### REMOVE .svn DIRECTORIES ####"
rm -fR `find ${INST_PREF} -type d -name '.svn'`
 
echo "#### UPDATE CURENT INSTALLATION ####"
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/messenger/
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
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';
UPDATE subdomain_alias SET subdomain_alias_status = 'change' WHERE subdomain_alias_status = 'ok';
UPDATE htaccess SET status = 'change' WHERE status='ok';
UPDATE htaccess_groups SET status = 'change' WHERE status='ok';
UPDATE htaccess_users SET status = 'change' WHERE status='ok';
UPDATE server_ips SET ip_status = 'change' WHERE ip_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 ####"
make clean
 
echo "#### Restarting Services ####"
$CMD_HTTPD restart
$CMD_NAMED restart
$CMD_MTA restart
$CMD_FTPD restart


CAMBIOS

25.05.08 - Añadido Printouts
03.06.08 - Añadido soporte para Fedora, SuSE y Gentoo
18.08.08 - Añadido rebuild para apache ispcp.conf. Guarda personalizaciones (domain_default_page y user logo).
13.12.08 - Guarda también personalizaciones (errordocs)
07.01.09 - Fijado algunos Typo's
22.01.09 - Fijado Lenny apt-get list
02.05.09 - Actualización Debian 5.0.1
03.05.09 - Actualización site rebuilding
03.08.09 - Añadido soporte para Ubuntu
12.08.09 - Cambiado messager por messenger
20.08.09 - Simplificado lsb_release usage
07.09.09 - Añadido FTPd restart