diff --git a/install_httpd-2.4.sh b/install_httpd-2.4.sh index 50dc309..0b82b41 100755 --- a/install_httpd-2.4.sh +++ b/install_httpd-2.4.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +_backup_suffix=".BAK" +_backup_date="$(date +%Y%m%d-%H%M)" + # httpd Apapche Webserver # @@ -92,6 +95,16 @@ _BASE_WEBSPACE_DIR="/var/www" ## - DO NOT CHANGE ---------------------------------- ## - +# - systemd supported by OS ? +# - +_systemd="$(which systemctl)" +_systemctl="$(which systemctl)" +if [[ -z "$_systemd" ]] && [[ -z "$_systemctl" ]]; then + SYSTEMD_SUPPORTED=false +else + SYSTEMD_SUPPORTED=true +fi + ## - Determin httpd binary ## - _httpd_binary="`which httpd`" @@ -102,6 +115,12 @@ if [ -z "$_httpd_binary" ]; then _httpd_binary="/usr/local/apache2/bin/httpd" fi fi + +fi + +_httpd_current_version= +if [ -n "$_httpd_binary" ]; then + _httpd_current_version="$($_httpd_binary -v | grep -i version | awk '{print$3}' | cut -d'/' -f2)" fi APACHE_WEBSERVICE_RUNNING=false @@ -123,8 +142,10 @@ if [ -x "$_httpd_binary" ];then PID=$(ps aux | grep "$(realpath $_httpd_binary)" | grep -e "^root" | grep -v grep | awk '{print$2}') if [[ "X${PID}X" = "XX" ]] ;then APACHE_WEBSERVICE_RUNNING=false + START_APACHE_WEBSERVICE=false else APACHE_WEBSERVICE_RUNNING=true + START_APACHE_WEBSERVICE=true fi fi @@ -481,38 +502,41 @@ echo -e "\033[32m--\033[m" echo "" echo "Some server configuration" echo "" -echo " - Sysmlink for initscript (/etc/init.d/apache2)" +#echo " - Sysmlink for initscript (/etc/init.d/apache2)" echo " - Sysmlink for installation directory (/usr/local/apache2)" echo " - Start at boot time" echo "" -if [[ ! -f "/etc/init.d/apache2" ]] ; then - _SYMLINK_INITSCRIPT=yes -else - _SYMLINK_INITSCRIPT=no -fi -__SYMLINK_INITSCRIPT= -while [ "X$__SYMLINK_INITSCRIPT" = "X" ] -do - echononl "Sysmlink for initscript (yes/no) [${_SYMLINK_INITSCRIPT}]: " - read __SYMLINK_INITSCRIPT - if [ "X$__SYMLINK_INITSCRIPT" = "X" ]; then - __SYMLINK_INITSCRIPT=$_SYMLINK_INITSCRIPT - fi -done -__SYMLINK_INITSCRIPT=`echo $__SYMLINK_INITSCRIPT | tr '[:upper:]' '[:lower:]'` -if [ "$__SYMLINK_INITSCRIPT" = "yes" ] ; then - SYMLINK_INITSCRIPT=true - START_APACHE_WEBSERVICE=true -else - SYMLINK_INITSCRIPT=false - START_APACHE_WEBSERVICE=false -fi +#if [[ ! -f "/etc/init.d/apache2" ]] ; then +# _SYMLINK_INITSCRIPT=yes +#else +# _SYMLINK_INITSCRIPT=no +#fi +#__SYMLINK_INITSCRIPT= +#while [ "X$__SYMLINK_INITSCRIPT" = "X" ] +#do +# echononl "Sysmlink for initscript (yes/no) [${_SYMLINK_INITSCRIPT}]: " +# read __SYMLINK_INITSCRIPT +# if [ "X$__SYMLINK_INITSCRIPT" = "X" ]; then +# __SYMLINK_INITSCRIPT=$_SYMLINK_INITSCRIPT +# fi +#done +#__SYMLINK_INITSCRIPT=`echo $__SYMLINK_INITSCRIPT | tr '[:upper:]' '[:lower:]'` +#if [ "$__SYMLINK_INITSCRIPT" = "yes" ] ; then +# SYMLINK_INITSCRIPT=true +# START_APACHE_WEBSERVICE=true +#else +# SYMLINK_INITSCRIPT=false +# START_APACHE_WEBSERVICE=false +#fi if [[ ! -f "/usr/local/apache2" ]]; then _SYMLINK_INSTALL_DIR=yes + _START_AT_BOOTTIME=yes else _SYMLINK_INSTALL_DIR=no + _START_AT_BOOTTIME=no fi + __SYMLINK_INSTALL_DIR= while [ "X$__SYMLINK_INSTALL_DIR" = "X" ] do @@ -529,11 +553,6 @@ else SYMLINK_INSTALL_DIR=false fi -if $SYMLINK_INITSCRIPT ; then - _START_AT_BOOTTIME=yes -else - _START_AT_BOOTTIME=no -fi __START_AT_BOOTTIME= while [ "X$__START_AT_BOOTTIME" = "X" ] do @@ -706,13 +725,13 @@ while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'` done if [ "$OK" = "yes" ]; then - SYSTEMD_EXISTS=false + SYSTEMD_SUPPORTED=false +fi + +if $SYSTEMD_SUPPORTED ; then + INIT_SCRIPT_SUPPORTED=false else - if [ "X`which systemd`" = "X" ]; then - SYSTEMD_EXISTS=false - else - SYSTEMD_EXISTS=true - fi + INIT_SCRIPT_SUPPORTED=true fi @@ -745,13 +764,14 @@ echo "" echo "standard (non-ssl) port.......: $HTTPD_PORT" echo "ssl port......................: $HTTPD_SSL_PORT" echo "" -echo "Symlink /etc/init.d/apache2...: $SYMLINK_INITSCRIPT" +#echo "Symlink /etc/init.d/apache2...: $SYMLINK_INITSCRIPT" echo "Symlink /usr/local/apache2....: $SYMLINK_INSTALL_DIR" echo "Start at boot time............: $START_AT_BOOTTIME" echo "" echo "Set umask to \"0002\"...........: $SET_UMASK" echo "" -echo "System supports systemd.......: $SYSTEMD_EXISTS" +echo "Install start init script.....: $INIT_SCRIPT_SUPPORTED" +echo "System supports systemd.......: $SYSTEMD_SUPPORTED" echo "" echo "Include mod_proxy_cgi.........: $WITH_MOD_PROXY_FCGI" echo "" @@ -785,7 +805,7 @@ echo "" if [ -d "$_logdir" ];then echononl "\tVerschiebe exitierendes Logverzeichnis ..." - mv $_logdir $_logdir.`date +%Y%m%d-%H%M` + mv $_logdir $_logdir.${_backup_date} if [ "$?" = "0" ]; then echo_ok else @@ -809,7 +829,7 @@ echo "## -----------" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log echo "## - httpd version.................: $APACHE_VERSION" >> ${_logdir}/main.log echo "## - apr version................: $APR_VERSION" >> ${_logdir}/main.log -echo "## - apr-uril version...........: $APR_UTIL_VERSION" >> ${_logdir}/main.log +echo "## - apr-util version...........: $APR_UTIL_VERSION" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log echo "## - apache user...................: $HTTPD_USER" >> ${_logdir}/main.log echo "## - apache group..................: $HTTPD_GROUP" >> ${_logdir}/main.log @@ -831,11 +851,12 @@ echo "## - " >> ${_logdir}/main.log echo "## - standard (non-ssl) port.......: $HTTPD_PORT" >> ${_logdir}/main.log echo "## - ssl port......................: $HTTPD_SSL_PORT" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log -echo "## - Symlink /etc/init.d/apache2...: $SYMLINK_INITSCRIPT" >> ${_logdir}/main.log +#echo "## - Symlink /etc/init.d/apache2...: $SYMLINK_INITSCRIPT" >> ${_logdir}/main.log echo "## - Symlink /usr/local/apache2....: $SYMLINK_INSTALL_DIR" >> ${_logdir}/main.log echo "## - Start at boot time............: $START_AT_BOOTTIME" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log -echo "## - System supports systemd.......: $SYSTEMD_EXISTS" >> ${_logdir}/main.log +echo "## - Install start init script.....: $INIT_SCRIPT_SUPPORTED" >> ${_logdir}/main.log +echo "## - System supports systemd.......: $SYSTEMD_SUPPORTED" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log echo "## - Include mod_php...............: $WITH_MOD_PHP" >> ${_logdir}/main.log if $WITH_MOD_PHP ; then @@ -861,10 +882,14 @@ echo "" >> ${_logdir}/main.log echo "APACHE_VERSION=$APACHE_VERSION" >> ${_logdir}/main.log echo "APR_VERSION=$APR_VERSION" >> ${_logdir}/main.log echo "APR_UTIL_VERSION=$APR_UTIL_VERSION" >> ${_logdir}/main.log +echo "HTTPD_USER=$HTTPD_USER" >> ${_logdir}/main.log +echo "HTTPD_GROUP=$HTTPD_GROUP" >> ${_logdir}/main.log +echo "PREFIX=$PREFIX" >> ${_logdir}/main.log echo "BASE_WEBSPACE_DIR=$BASE_WEBSPACE_DIR" >> ${_logdir}/main.log -echo "GLOBAL_DOC_ROOT=\"${BASE_WEBSPACE_DIR}/default\"" >> ${_logdir}/main.log +echo "GLOBAL_DOC_ROOT=$GLOBAL_DOC_ROOT" >> ${_logdir}/main.log +echo "SERVER_NAME=$SERVER_NAME" >> ${_logdir}/main.log +echo "SERVER_ADMIN=$SERVER_ADMIN" >> ${_logdir}/main.log echo "SUEXEC_DOC_ROOT=$BASE_WEBSPACE_DIR" >> ${_logdir}/main.log -echo "HTTPD_USER=$HTTPD_GROUP" >> ${_logdir}/main.log echo "IPv4_ADDRESSES=\"$IPv4_ADDRESSES\"" >> ${_logdir}/main.log echo "IPv6_ADDRESSES=\"$IPv6_ADDRESSES\"" >> ${_logdir}/main.log echo "IP_ADDRESSES=\"$IP_ADDRESSES\"" >> ${_logdir}/main.log @@ -872,11 +897,15 @@ echo "SEPARATE_LISTEN_DIRECTIVES=$SEPARATE_LISTEN_DIRECTIVES" >> ${_logdir}/main echo "STATUS_URL=\"$STATUS_URL\"" >> ${_logdir}/main.log echo "HTTPD_PORT=$HTTPD_PORT" >> ${_logdir}/main.log echo "HTTPD_SSL_PORT=$HTTPD_SSL_PORT" >> ${_logdir}/main.log -echo "" >> ${_logdir}/main.log +echo "SYMLINK_INSTALL_DIR=$SYMLINK_INSTALL_DIR" >> ${_logdir}/main.log +echo "START_AT_BOOTTIME=$START_AT_BOOTTIME" >> ${_logdir}/main.log +echo "INIT_SCRIPT_SUPPORTED=$INIT_SCRIPT_SUPPORTED" >> ${_logdir}/main.log +echo "SYSTEMD_SUPPORTED=$SYSTEMD_SUPPORTED" >> ${_logdir}/main.log echo "WITH_MOD_PHP=$WITH_MOD_PHP" >> ${_logdir}/main.log if $WITH_MOD_PHP ; then echo "PHP_VERSION=$PHP_VERSION" >> ${_logdir}/main.log fi +echo "WITH_MOD_PROXY_FCGI=$WITH_MOD_PROXY_FCGI" >> ${_logdir}/main.log echo "WITH_MOD_FCGID=$WITH_MOD_FCGID" >> ${_logdir}/main.log if $WITH_MOD_FCGID ; then echo "MOD_FCGID_VERSION=$MOD_FCGID_VERSION" >> ${_logdir}/main.log @@ -894,7 +923,7 @@ if $WITH_MOD_FCGID ; then APXS="$PREFIX/bin/apxs" _builddir_fcgid=${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}_httpd-${APACHE_VERSION} if [ -d "$_builddir_fcgid" ]; then - mv $_builddir_fcgid ${_builddir_fcgid}.`date +%Y%m%d-%H%M` + mv $_builddir_fcgid ${_builddir_fcgid}.${_backup_date} fi fi @@ -902,15 +931,13 @@ if $WITH_MOD_PERL ; then APXS="$PREFIX/bin/apxs" _builddir_perl=${_srcdir}/mod_perl-${MOD_PERL_VERSION}_httpd-${APACHE_VERSION} if [ -d "$_builddir_perl" ]; then - mv $_builddir_perl ${_builddir_perl}.`date +%Y%m%d-%H%M` + mv $_builddir_perl ${_builddir_perl}.${_backup_date} fi fi _httpdconf=${PREFIX}/conf/httpd.conf _rel_confextra_path=conf/extra -_backup_suffix=".BAK" - echo "PREFIX=$PREFIX" >> ${_logdir}/main.log echo "" >> ${_logdir}/main.log echo "APXS=\"$PREFIX/bin/apxs\"" >> ${_logdir}/main.log @@ -1054,8 +1081,8 @@ else echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing source directory apr-$APR_VERSION ..." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv ${_srcdir}/apr-$APR_VERSION ${_srcdir}/apr-$APR_VERSION.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv ${_srcdir}/apr-$APR_VERSION ${_srcdir}/apr-$APR_VERSION.`date +%Y%m%d-%H%M` + echo "mv ${_srcdir}/apr-$APR_VERSION ${_srcdir}/apr-$APR_VERSION.${_backup_date}" >> ${_logdir}/main.log + mv ${_srcdir}/apr-$APR_VERSION ${_srcdir}/apr-$APR_VERSION.${_backup_date} if [ "$?" = "0" ]; then echo_ok else @@ -1129,8 +1156,8 @@ else echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing install directory apr-${APR_VERSION}.." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv /usr/local/apr-${APR_VERSION} /usr/local/apr-${APR_VERSION}.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv /usr/local/apr-${APR_VERSION} /usr/local/apr-${APR_VERSION}.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv /usr/local/apr-${APR_VERSION} /usr/local/apr-${APR_VERSION}.${_backup_date}" >> ${_logdir}/main.log + mv /usr/local/apr-${APR_VERSION} /usr/local/apr-${APR_VERSION}.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -1208,8 +1235,8 @@ else echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing source directory apr-util-$APR_UTIL_VERSIO.." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv ${_srcdir}/apr-util-$APR_UTIL_VERSION ${_srcdir}/apr-util-$APR_UTIL_VERSION.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv ${_srcdir}/apr-util-$APR_UTIL_VERSION ${_srcdir}/apr-util-$APR_UTIL_VERSION.`date +%Y%m%d-%H%M` + echo "mv ${_srcdir}/apr-util-$APR_UTIL_VERSION ${_srcdir}/apr-util-$APR_UTIL_VERSION.${_backup_date}" >> ${_logdir}/main.log + mv ${_srcdir}/apr-util-$APR_UTIL_VERSION ${_srcdir}/apr-util-$APR_UTIL_VERSION.${_backup_date} if [ "$?" = "0" ]; then echo_ok else @@ -1299,8 +1326,8 @@ EOF echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing install directory apr-util-${APR_UTIL_VERSION}.." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv /usr/local/apr-util-${APR_UTIL_VERSION} /usr/local/apr-util-${APR_UTIL_VERSION}.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv /usr/local/apr-util-${APR_UTIL_VERSION} /usr/local/apr-util-${APR_UTIL_VERSION}.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv /usr/local/apr-util-${APR_UTIL_VERSION} /usr/local/apr-util-${APR_UTIL_VERSION}.${_backup_date}" >> ${_logdir}/main.log + mv /usr/local/apr-util-${APR_UTIL_VERSION} /usr/local/apr-util-${APR_UTIL_VERSION}.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -1369,8 +1396,8 @@ if [ -d "$_builddir" ];then echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing source directory ..." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv $_builddir $_builddir.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv $_builddir $_builddir.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv $_builddir $_builddir.${_backup_date}" >> ${_logdir}/main.log + mv $_builddir $_builddir.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -1546,8 +1573,8 @@ if [ -d "$PREFIX" ];then echo "" >> ${_logdir}/main.log echo "## - Backup existing installation directory.." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv $PREFIX $PREFIX.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv $PREFIX $PREFIX.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv $PREFIX $PREFIX.${_backup_date}" >> ${_logdir}/main.log + mv $PREFIX $PREFIX.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -1564,7 +1591,7 @@ if $START_AT_BOOTTIME && $APACHE_WEBSERVICE_RUNNING ; then echo "## - Stop Apache Webservice.." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - if $SYSTEMD_EXISTS ; then + if $SYSTEMD_SUPPORTED ; then echo "systemctl stop apache2" >> ${_logdir}/main.log systemctl stop apache2 >> ${_logdir}/main.log 2>&1 else @@ -1577,9 +1604,127 @@ if $START_AT_BOOTTIME && $APACHE_WEBSERVICE_RUNNING ; then echo_failed error "Stopping Apache Webservice failed!" fi + + sleep 5 + + declare -i i=0 + PIDS="$(ps aux | grep "$(realpath "$_httpd_binary")" | grep -v grep | awk '{print$2}')" + + while [[ "X$PIDS" != "X" ]]; do + + if [[ $i -eq 0 ]]; then + warn "Stopping Apache Webservice failed. Going to kill remaining httpd-processes.." + fi + + if [[ $i -gt 10 ]]; then + error "Killing remaining httpd-processes failed !" + break + fi + + for _PID in $PIDS ; do + kill -9 $_PID > /dev/null 2>&1 + done + sleep 2 + PIDS="$(ps aux | grep "$(realpath "$_httpd_binary")" | grep -v grep | awk '{print$2}')" + i=i+1 + done + else echo_skipped fi + + +# - Remove start script and/or systemd service file +# - + +if `ls /etc/rc2.d/ | grep apache2 > /dev/null 2>&1` ; then + echo "" >> ${_logdir}/main.log + echononl "\tRemove init script links" + echo "## - Remove init script links" >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "update-rc.d -f apache2 remove" >> ${_logdir}/main.log + + update-rc.d -f apache2 remove >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Removing existing init script links failed." + fi +fi + +if [[ -h "/etc/init.d/apache2" ]]; then + echo "" >> ${_logdir}/main.log + echo "## - Remove existing symlink /etc/init.d/apache2.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "rm /etc/init.d/apache2" >> ${_logdir}/main.log + echononl "\tRemove existing symlink /etc/init.d/apache2.." + rm /etc/init.d/apache2 >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Remove existing symlink /usr/local/apache2 failed." + fi +fi + +if [[ -f "/etc/init.d/apache2" ]]; then + echo "" >> ${_logdir}/main.log + echo "## - Remove existing file /etc/init.d/apache2.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "rm /etc/init.d/apache2.." >> ${_logdir}/main.log + echononl "\tRemove existing file /etc/init.d/apache2" + rm /etc/init.d/apache2 >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Remove existing file /usr/local/apache2 failed." + fi +fi + +if [[ -f "/etc/systemd/system/apache2.service" ]]; then + + echo "" >> ${_logdir}/main.log + echo "## - Disable apache2 service" >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "systemctl disable apache2" >> ${_logdir}/main.log + echononl "\tDisable apache2 service.." + systemctl disable apache2 >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Disabling apache2 service failed!" + fi + + echo "" >> ${_logdir}/main.log + echo "## - Remove existing file /etc/systemd/system/apache2.service.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "rm /etc/systemd/system/apache2.service" >> ${_logdir}/main.log + echononl "\tRemove existing file /etc/systemd/system/apache2.service.." + rm /etc/systemd/system/apache2.service >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Remove existing file /etc/systemd/system/apache2.service failed." + fi + + echo "" >> ${_logdir}/main.log + echo "## - Reload systemd" >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "systemctl daemon-reload" >> ${_logdir}/main.log + echononl "\tReload systemd.." + systemctl daemon-reload >> ${_logdir}/main.log 2>&1 + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Reloading systemd failed!" + fi + +fi echo "" >> ${_logdir}/main.log @@ -2591,8 +2736,8 @@ if $WITH_MOD_FCGID ; then echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing source directory ..." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv $_builddir_fcgid $_builddir_fcgid.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv $_builddir_fcgid $_builddir_fcgid.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv $_builddir_fcgid $_builddir_fcgid.${_backup_date}" >> ${_logdir}/main.log + mv $_builddir_fcgid $_builddir_fcgid.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -2609,7 +2754,7 @@ if $WITH_MOD_FCGID ; then echo "## -" >> ${_logdir}/main.log echo "" >> ${_logdir}/main.log echononl "\tBackup directory ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.." - mv ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION} ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.`date +%Y%m%d-%H%M` + mv ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION} ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.${_backup_date} if [ "$?" = "0" ]; then echo_ok else @@ -2764,8 +2909,8 @@ if $WITH_MOD_PERL ; then echo "" >> ${_logdir}/main.log echo "## - Move (backup) existing source directory ..." >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "mv $_builddir_perl $_builddir_perl.`date +%Y%m%d-%H%M`" >> ${_logdir}/main.log - mv $_builddir_perl $_builddir_perl.`date +%Y%m%d-%H%M` >> ${_logdir}/main.log 2>&1 + echo "mv $_builddir_perl $_builddir_perl.${_backup_date}" >> ${_logdir}/main.log + mv $_builddir_perl $_builddir_perl.${_backup_date} >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then echo_ok else @@ -2782,7 +2927,7 @@ if $WITH_MOD_PERL ; then echo "## -" >> ${_logdir}/main.log echo "" >> ${_logdir}/main.log echononl "\tBackup directory ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.." - mv ${_srcdir}/mod_perl-${MOD_PERL_VERSION} ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.`date +%Y%m%d-%H%M` + mv ${_srcdir}/mod_perl-${MOD_PERL_VERSION} ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.${_backup_date} if [ "$?" = "0" ]; then echo_ok else @@ -2917,25 +3062,28 @@ echo if $SYMLINK_INSTALL_DIR ; then - if [ -h "/usr/local/apache2" ]; then + echononl "\tRemove Symlink /usr/local/apache2.." + if [[ -h "/usr/local/apache2" ]]; then echo "" >> ${_logdir}/main.log - echo "## - Remove existing symlink /usr/local/apache2.." >> ${_logdir}/main.log + echo "## - Remove Symlink /usr/local/apache2" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - echo "rm /usr/local/apache2" >> ${_logdir}/main.log - echononl "\tRemove existing symlink /usr/local/apache2.." - rm /usr/local/apache2 >> ${_logdir}/main.log 2>&1 + echo "rm -f /usr/local/apache2" >> ${_logdir}/main.log + rm -f /usr/local/apache2 >> ${_logdir}/main.log if [ "$?" = "0" ]; then echo_ok else echo_failed - warn "Remove existing symlink /usr/local/apache2 failed." + warn "Removing symlink /usr/local/apache2 failed" fi + else + echo_skipped fi + echo "" >> ${_logdir}/main.log echo "## - Set Symlink /usr/local/apache2.." >> ${_logdir}/main.log - echo "## - ln -s `basename $PREFIX` /usr/local/apache2" >> ${_logdir}/main.log - echo "" >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "ln -s `basename $PREFIX` /usr/local/apache2" >> ${_logdir}/main.log echononl "\tSet Symlink /usr/local/apache2.." ln -s `basename $PREFIX` /usr/local/apache2 >> ${_logdir}/main.log 2>&1 if [ "$?" = "0" ]; then @@ -2946,24 +3094,26 @@ if $SYMLINK_INSTALL_DIR ; then fi fi -## - Priovide LSB - Add Block for run-time dependencies to apachectl -## - -_backup_apachectl=`mktemp` -_failed=false -echo "" >> ${_logdir}/main.log -echo "## - Priovide LSB - Add Block for run-time dependencies to apachectl.." >> ${_logdir}/main.log -echo "## -" >> ${_logdir}/main.log +if $INIT_SCRIPT_SUPPORTED ; then + ## - Priovide LSB - Add Block for run-time dependencies to apachectl + ## - + _backup_apachectl=`mktemp` + _failed=false -echononl "\tAdd Block for run-time dependencies to apachectl.." + echo "" >> ${_logdir}/main.log + echo "## - Priovide LSB - Add Block for run-time dependencies to apachectl.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log -echo "cp $PREFIX/bin/apachectl $_backup_apachectl" >> ${_logdir}/main.log -cp $PREFIX/bin/apachectl $_backup_apachectl >> ${_logdir}/main.log 2>&1 -if [ "$?" != "0" ]; then - _failed=true -fi + echononl "\tAdd Block for run-time dependencies to apachectl.." -echo "cat << EOF >$PREFIX/bin/apachectl + echo "cp $PREFIX/bin/apachectl $_backup_apachectl" >> ${_logdir}/main.log + cp $PREFIX/bin/apachectl $_backup_apachectl >> ${_logdir}/main.log 2>&1 + if [ "$?" != "0" ]; then + _failed=true + fi + + echo "cat << EOF >$PREFIX/bin/apachectl #!/bin/sh ### BEGIN INIT INFO # Provides: apache2 @@ -2976,7 +3126,7 @@ echo "cat << EOF >$PREFIX/bin/apachectl ### END INIT INFO EOF" >> ${_logdir}/main.log -cat << EOF >$PREFIX/bin/apachectl + cat << EOF >$PREFIX/bin/apachectl #!/bin/sh ### BEGIN INIT INFO # Provides: apache2 @@ -2988,26 +3138,29 @@ cat << EOF >$PREFIX/bin/apachectl # Short-Description: Start/stop apache2 web server ### END INIT INFO EOF -if [ "$?" != "0" ]; then - _failed=true -fi -echo "tail -n +2 "$_backup_apachectl" >> $PREFIX/bin/apachectl" >> ${_logdir}/main.log -tail -n +2 "$_backup_apachectl" >> $PREFIX/bin/apachectl -if [ "$?" != "0" ]; then - _failed=true -fi + if [ "$?" != "0" ]; then + _failed=true + fi -echo "rm $_backup_apachectl" >> ${_logdir}/main.log -rm $_backup_apachectl >> ${_logdir}/main.log 2>&1 -if [ "$?" != "0" ]; then - _failed=true -fi -if $_failed ; then - echo_failed -else - echo_ok -fi + echo "tail -n +2 "$_backup_apachectl" >> $PREFIX/bin/apachectl" >> ${_logdir}/main.log + tail -n +2 "$_backup_apachectl" >> $PREFIX/bin/apachectl + if [ "$?" != "0" ]; then + _failed=true + fi + + echo "rm $_backup_apachectl" >> ${_logdir}/main.log + rm $_backup_apachectl >> ${_logdir}/main.log 2>&1 + if [ "$?" != "0" ]; then + _failed=true + fi + if $_failed ; then + echo_failed + else + echo_ok + fi + +fi # if $INIT_SCRIPT_SUPPORTED ; then ## - Set status url echo "" >> ${_logdir}/main.log @@ -3025,22 +3178,7 @@ else fi -if $SYMLINK_INITSCRIPT ; then - - if [ -h "/etc/init.d/apache2" ]; then - echo "" >> ${_logdir}/main.log - echo "## - Remove existing symlink /etc/init.d/apache2.." >> ${_logdir}/main.log - echo "## -" >> ${_logdir}/main.log - echo "rm /etc/init.d/apache2.." >> ${_logdir}/main.log - echononl "\tRemove existing symlink /etc/init.d/apache2.." - rm /etc/init.d/apache2 >> ${_logdir}/main.log 2>&1 - if [ "$?" = "0" ]; then - echo_ok - else - echo_failed - warn "Remove existing symlink /usr/local/apache2 failed." - fi - fi +if $INIT_SCRIPT_SUPPORTED ; then echo "" >> ${_logdir}/main.log echo "## - Set Symlink /etc/init.d/apache2.." >> ${_logdir}/main.log @@ -3074,28 +3212,82 @@ EOF fi + + +if $SYSTEMD_SUPPORTED ; then + + echo "" >> ${_logdir}/main.log + echo "## - Create systemd service file.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echo "cat << EOF > /etc/systemd/system/apache2.service +[Unit] +Description=The Apache HTTP Server +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +Environment=APACHE_STARTED_BY_SYSTEMD=true +ExecStart=${PREFIX}/bin/apachectl start +ExecStop=${PREFIX}/bin/apachectl stop +ExecReload=${PREFIX}/bin/apachectl graceful +PrivateTmp=true +Restart=on-abort + +[Install] +WantedBy=multi-user.target +EOF" >> ${_logdir}/main.log + + echononl "\tCreate systemd service file.." + cat << EOF > /etc/systemd/system/apache2.service +[Unit] +Description=The Apache HTTP Server +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +Environment=APACHE_STARTED_BY_SYSTEMD=true +ExecStart=${PREFIX}/bin/apachectl start +ExecStop=${PREFIX}/bin/apachectl stop +ExecReload=${PREFIX}/bin/apachectl graceful +PrivateTmp=true +Restart=on-abort + +[Install] +WantedBy=multi-user.target +EOF + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + warn "Creating systemd service file '/etc/systemd/system/apache2.service' failed." + fi + +fi + + +echononl "\tSet umask to $UMASK in \"envvars\" .." +if $SET_UMASK ; then + cat <> ${PREFIX}/bin/envvars +umask $UMASK + +EOF + if [ "$?" = "0" ]; then + echo_ok + else + echo_failed + fatal "Kann \"umask\" nicht setzen (${PREFIX}/bin/envvars).." + fi +else + echo_skipped +fi + + echo "" if $START_AT_BOOTTIME ; then - if `ls /etc/rc2.d/ | grep apache2 > /dev/null 2>&1` ; then - echo "" >> ${_logdir}/main.log - echononl "\tRemove init script links" - echo "## - Remove init script links" >> ${_logdir}/main.log - echo "## -" >> ${_logdir}/main.log - echo "update-rc.d -f apache2 remove" >> ${_logdir}/main.log - - update-rc.d -f apache2 remove >> ${_logdir}/main.log 2>&1 - if [ "$?" = "0" ]; then - echo_ok - else - echo_failed - warn "Removing existing init script links failed." - fi - fi - echononl "\tReload systemd.." - if $SYSTEMD_EXISTS ; then + if $SYSTEMD_SUPPORTED ; then systemctl daemon-reload > /dev/null 2>&1 if [ "$?" = "0" ]; then echo_ok @@ -3113,7 +3305,7 @@ if $START_AT_BOOTTIME ; then echononl "\tMake apache start at boottime" echo "## - Make apache start at boottime" >> ${_logdir}/main.log echo "## -" >> ${_logdir}/main.log - if $SYSTEMD_EXISTS ; then + if $SYSTEMD_SUPPORTED ; then echo "systemctl enable apache2" >> ${_logdir}/main.log systemctl enable apache2 >> ${_logdir}/main.log 2>&1 else @@ -3625,6 +3817,57 @@ else echo_skipped fi +if [[ -n "$_httpd_current_version" ]]; then + _failed=false + _done=false + echo "" >> ${_logdir}/main.log + echo "## - Try to restore vhost configurations.." >> ${_logdir}/main.log + echo "## -" >> ${_logdir}/main.log + echononl "\tTry to restore vhost configurations.." + if [[ "$_httpd_current_version" != $APACHE_VERSION ]]; then + if [[ -d "$(dirname "$PREFIX")/httpd-${_httpd_current_version}/conf/vhosts" ]]; then + _src_dir="$(dirname "$PREFIX")/httpd-${_httpd_current_version}/conf/vhosts" + fi + else + if [[ -d "${PREFIX}.${_backup_date}/conf/vhosts" ]]; then + _src_dir="${PREFIX}.${_backup_date}/conf/vhosts" + fi + fi + + if [[ -n "$_src_dir" ]] ; then + while IFS='' read -r -d '' _name ; do + if [[ "$(basename "$_name")" =~ 00default ]]; then + continue + fi + if [[ "$(basename "$_name")" = "000-logformat.conf" ]]; then + continue + fi + + echo "cp -a "$_name" "${PREFIX}/conf/vhosts"" >> ${_logdir}/main.log + cp -a "$_name" "${PREFIX}/conf/vhosts" >> ${_logdir}/main.log + if [[ $? -ne 0 ]]; then + _failed=true + fi + _done=true + + done < <(find "$_src_dir" -mindepth 1 -maxdepth 1 -print0) + + if $_done ; then + if $_failed ; then + echo_failed + error "Restoring vhost configuration failed!" + else + echo_ok + fi + else + echo_skipped + fi + + fi # [[ -n "$_src_dir" ]] ; then + +fi # if [[ -n "$_httpd_current_version" ]] + + if $START_APACHE_WEBSERVICE ; then echo "" >> ${_logdir}/main.log echo "" >> ${_logdir}/main.log @@ -3632,7 +3875,7 @@ if $START_APACHE_WEBSERVICE ; then echo "## -" >> ${_logdir}/main.log echo "" echononl "\tStarting Apache Webserver.." - if $SYSTEMD_EXISTS ; then + if $SYSTEMD_SUPPORTED ; then echo "systemctl start apache2" >> ${_logdir}/main.log systemctl start apache2 >> ${_logdir}/main.log 2>&1 else