History for Install Zope 2.6 on Debian (shell script source install)
??changed:
-
#!/bin/sh
# Compile Zope Source on Debian and Update to Zope 2.6
## variables
install_plone=1 #experimental
webdir=http://www.zope.org/Products/Zope/2.6.0/
tarball=Zope-2.6.0-src
tarballext=.tgz
zopeinstaller=wo_pcgi.py
zopeuser=www-data
pythonver=python2.1
pythonver_unstable=python2.2 #experimental
http_port=8081
ZOPE_HOME=/usr/lib/zope
SOFTWARE_HOME=/usr/lib/zope/lib/python
INSTANCE_HOME=/var/lib/zope
export ZOPE_HOME SOFTWARE_HOME INSTANCE_HOME
currdir=`cd .;pwd`
## Setup Debian Zope Environment, on non Debian install these manually first
apt-get -y install wget tar gcc make libc6-dev $pythonver-dev
apt-get -y install zope
## If you are using plone from the unstable tree you must install it first
if [ $install_plone = 1 ]; then
pythonver=pythonver_unstable
#apt-get -y install zope-cmfplone $pythonver-dev
fi
## Download Zope Source
mkdir -p $ZOPE_HOME
mkdir -p $INSTANCE_HOME/var
if [ -e $INSTANCE_HOME/$tarball$tarballext ]; then
#echo -e '$tarball already downloaded !'
rm -f $INSTANCE_HOME/$tarball$tarballext
fi
echo -e "Downloading tarball from $webdir$tarball$tarballext\n"
wget --tries=5 --directory-prefix=$INSTANCE_HOME $webdir$tarball$tarballext
if [ ! -e $INSTANCE_HOME/$tarball$tarballext ]; then
echo -e "$webdir$tarball$tarballext could not be downloaded."
echo -e "Check your internet settings and try again later.\n"
exit
fi
## unpack and compile in install dir
cd $INSTANCE_HOME
if [ -d $INSTANCE_HOME/$tarball ]; then
echo "Delete existing tmp dir..."
rm -d -f -r $INSTANCE_HOME/$tarball
fi
tar xvzf $tarball$tarballext
cd $tarball
## disable setting of default password after install
sed -e "s/import zpasswd;/#import zpasswd;/" ./$zopeinstaller > ./$zopeinstaller.tmp
mv ./$zopeinstaller.tmp ./$zopeinstaller
## starting standard install without PCGI support
$pythonver ./$zopeinstaller
## stop current zope instance
if [ -e /etc/init.d/zope ]; then
echo -e "Stopping Debian Zope Server\n"
/etc/init.d/zope stop
else
echo -e "Stopping Zope Server...\n"
$ZOPE_HOME/stop
fi
## backup old Zope install
echo -e "Compilation of Zope Source $tarball has finished."
echo -e "Do you want to backup your current zope installation before update ?\n"
opts="Backup Continue"
select opt in $opts; do
#echo -e you picked "$opt" \($REPLY\)
if [ "$opt" != "Continue" ]; then
echo -e "Starting Backup..."
mkdir -p $INSTANCE_HOME/Zope-Backup$INSTANCE_HOME
mkdir -p $INSTANCE_HOME/Zope-Backup$ZOPE_HOME
cp -R -f $INSTANCE_HOME/var $INSTANCE_HOME/Zope-Backup$INSTANCE_HOME
cp -f $INSTANCE_HOME/* $INSTANCE_HOME/Zope-Backup$INSTANCE_HOME
cp -R -f $ZOPE_HOME/Extensions $INSTANCE_HOME/Zope-Backup$ZOPE_HOME
cp -R -f $ZOPE_HOME/ZServer $INSTANCE_HOME/Zope-Backup$ZOPE_HOME
cp -R -f $ZOPE_HOME/lib $INSTANCE_HOME/Zope-Backup$ZOPE_HOME
#cp -f $ZOPE_HOME/* $INSTANCE_HOME/Zope-Backup$ZOPE_HOME
echo -e "\nZope structure has been saved to $INSTANCE_HOME/Zope-Backup\n"
elif [ "$opt" = "Continue" ]; then
echo -e "Continue without Backup...\n"
fi
break
done
## delete and copy files
#find $ZOPE_HOME -name '*.o' -o -name '*.so' -o -name '*.py[co]' \
# -o -name 'core*' | xargs rm -f
echo -e "delete old compilations in $ZOPE_HOME ....\n"
find $ZOPE_HOME -name '*.py[co]' -o -name 'core*' | xargs rm -f
echo -e "copy new files to $ZOPE_HOME ...."
cp -R -f $INSTANCE_HOME/$tarball/Extensions $ZOPE_HOME
cp -R -f $INSTANCE_HOME/$tarball/ZServer $ZOPE_HOME
cp -R -f $INSTANCE_HOME/$tarball/lib $ZOPE_HOME
cp -R -f $INSTANCE_HOME/$tarball/utilities $ZOPE_HOME
cp -R -f $INSTANCE_HOME/$tarball/import $INSTANCE_HOME
if [ -d /usr/share/doc/zope ]; then
cp -r -f $INSTANCE_HOME/$tarball/doc/* /usr/share/doc/zope
fi
cp -f $INSTANCE_HOME/$tarball/zpasswd.py $ZOPE_HOME/zpasswd.py
mv $ZOPE_HOME/z2.py $ZOPE_HOME/z2.py.bak
## Create Unix-User for running Zope Instance
groupadd $zopeuser
useradd -g $zopeuser -d $INSTANCE_HOME $zopeuser
zuid=`id -u $zopeuser`
## Debian modifications for z2.py - dirty hack - at least it's easy to find
echo "#! /usr/bin/$pythonver" > $ZOPE_HOME/z2.py
echo "# Debian setup begin" >> $ZOPE_HOME/z2.py
echo "import os, sys" >> $ZOPE_HOME/z2.py
echo "sys.path.insert(0, '$SOFTWARE_HOME')" >> $ZOPE_HOME/z2.py
echo "os.chdir('$ZOPE_HOME')" >> $ZOPE_HOME/z2.py
echo "os.environ['INSTANCE_HOME']='$INSTANCE_HOME'" >> $ZOPE_HOME/z2.py
echo "os.setuid($zuid)" >> $ZOPE_HOME/z2.py
echo "os.umask(077)" >> $ZOPE_HOME/z2.py
echo "# Debian setup end" >> $ZOPE_HOME/z2.py
cat $INSTANCE_HOME/$tarball/z2.py >> $ZOPE_HOME/z2.py
## Set values for UID AND HTTP_PORT in z2.py
sed -e "s/UID=None/UID='$zopeuser'/" $ZOPE_HOME/z2.py > $ZOPE_HOME/z2.py.tmp
mv $ZOPE_HOME/z2.py.tmp $ZOPE_HOME/z2.py
sed -e "s/HTTP_PORT=8080/HTTP_PORT=$http_port/" $ZOPE_HOME/z2.py > $ZOPE_HOME/z2.py.tmp
mv $ZOPE_HOME/z2.py.tmp $ZOPE_HOME/z2.py
## Change the restart Timeout / 5 sec is too short
sed -e 's/HTTP-EQUIV=REFRESH CONTENT="5/HTTP-EQUIV=REFRESH CONTENT="15/' \
$ZOPE_HOME/lib/python/App/ApplicationManager.py > \
$ZOPE_HOME/lib/python/App/ApplicationManager.py.tmp
mv $ZOPE_HOME/lib/python/App/ApplicationManager.py.tmp \
$ZOPE_HOME/lib/python/App/ApplicationManager.py
chmod 755 $ZOPE_HOME/z2.py
chmod 755 $ZOPE_HOME/zpasswd.py
echo -e "\nFinishing installation....\n"
## Set Startupmode for non Debian
if [ ! -e /etc/init.d/zope ]; then
echo -e "Default Zope detected (no Debian)...\n"
cp -f $INSTANCE_HOME/$tarball/start $ZOPE_HOME/start
cp -f $INSTANCE_HOME/$tarball/stop $ZOPE_HOME/stop
sed -e "s/$tarball//" $ZOPE_HOME/stop > $ZOPE_HOME/stop.tmp
mv $ZOPE_HOME/stop.tmp $ZOPE_HOME/stop
chmod 755 $ZOPE_HOME/start
chmod 755 $ZOPE_HOME/stop
fi
## Set Initial / Emergency User if no access file found
if [ ! -e $INSTANCE_HOME/access ]; then
echo -e "The initial/emergency user '$zopeuser' will now be created !"
echo -e "The emergency user can only logon to Zope and create other users."
echo -e "Please enter a new password for the emergency user '$zopeuser':"
read -s -p Password: password
$ZOPE_HOME/zpasswd.py -u $zopeuser -p $password -e CRYPT $INSTANCE_HOME/access
chmod 644 $INSTANCE_HOME/access
echo -e "\nYou can now login to http://YourZopeSite:$http_port/manage/"
echo -e "username: $zopeuser"
echo -e "password: $password\n"
fi
## Check if Database is already installed
if [ -e $INSTANCE_HOME/var/Data.fs ]; then
echo -e "Existing Zope Database found in $INSTANCE_HOME/var !\n"
else
mkdir -p $INSTANCE_HOME/var
cp -f $INSTANCE_HOME/$tarball/var/* $INSTANCE_HOME/var
echo -e "Created new Zope Database...\n"
fi
## Setting owner rights to zopeuser and restart script as zopeuser
echo -e "Set owner of $INSTANCE_HOME/var to $zopeuser."
chown -R $zopeuser:$zopeuser $INSTANCE_HOME/var
rm -fr $INSTANCE_HOME/$tarball
## Restart Zope as zopeuser
if [ -e /etc/init.d/zope ]; then
echo -e "\nPrepare Debian Zope restart as user $zopeuser...\n"
cd $currdir
su -c "/etc/init.d/zope restart" $zopeuser
else
echo -e "\nPrepare non Debian Zope restart as user $zopeuser...\n"
cd $currdir
su -c "$ZOPE_HOME/start&" $zopeuser
fi
exit