====== 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: apt-get install subversion-tools #!/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 < \\ ===== 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