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.
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
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