apache2/install_httpd-2.4.sh

4501 lines
147 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
_backup_suffix=".BAK"
_backup_date="$(date +%Y%m%d-%H%M)"
# httpd Apapche Webserver
#
## - CHANGE PARAMETER TO PASS YOUR SITUATION--------
## -
_VSERVER_GUEST=no
_APACHE_VERSION=2.4.48
_WITH_MOD_PROXY_FCGI=true
_WITH_MOD_FCGID=true
_MOD_FCGID_VERSION=2.3.9
_WITH_MOD_PERL=true
_MOD_PERL_VERSION=2.0.11
_SEPARATE_LISTEN_DIRECTIVES=false
_SSL_SNAKEOIL_CERT="/etc/ssl/certs/ssl-cert-snakeoil.pem"
_SSL_SNAKEOIL_KEY="/etc/ssl/private/ssl-cert-snakeoil.key"
_CRONTAB_BAKUP_FILE="$(mktemp)"
if $_WITH_MOD_FCGID -o $_WITH_MOD_PROXY_FCGI ; then
_WITH_MOD_PHP=false
else
_WITH_MOD_PHP=true
fi
_SSL_Cipher_Suite='ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-ARIA256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-ARIA128-GCM-SHA256'
_PHP_VERSION=7.1.24
## - Determin IP-Adresses
## -
if ifconfig | grep -i -q -E "inet [address|Adresse]" ; then
__ipv4="`ifconfig | grep -E \"^\s*inet [address|Adresse]\" | grep -v \"127.0.0.1\" | awk '{print$2}' | cut -d\":\" -f2 | sort`"
__ipv6="`ifconfig | grep -e \"^\s*inet6-Adresse\" | awk '{print$2}' | grep -v -e \"^::1/\" | grep -v -e \"^fe80\" | cut -d\"/\" -f1 | sort`"
else
__ipv4="`ifconfig | grep -e \"^\s*inet \" | grep -v \"127.0.0.1\" | awk '{print$2}' | sort`"
__ipv6="`ifconfig | grep -e \"^\s*inet6 \" | awk '{print$2}' | grep -v \"^::1\" | grep -v -e \"^fe80\" | sort`"
fi
for _ip in $__ipv4 ; do
_ipv4="$_ipv4 $_ip"
done
for _ip in $__ipv6 ; do
_ipv6="$_ipv6 $_ip"
done
## - Trim leading whitespaces
## -
shopt -s extglob
_ipv4="${_ipv4##*( )}"
_ipv6="${_ipv6##*( )}"
shopt -u extglob
## - Is PHP-FPM socket in use
## -
declare -a _php_socket_arr=()
while IFS='' read -r -d '' _socket ; do
echo "socket: $_socket"
_php_major_version="$(echo "$_socket" | cut -d '-' -f2)"
_php_socket_arr+=("${_php_major_version}:$_socket")
done < <(find "/tmp" -type s -name "php*" -print0 | sort -z)
## - substitude path "/usr/local/httpd-$APACHE_VERSION" to "/usr/local/apache2"
## - in apache configuration files ?
## -
subst_base_path=false
_APR_VERSION=1.7.0
_APR_UTIL_VERSION=1.6.1
_HTTPD_USER=www-data
_HTTPD_PORT=80
_HTTPD_SSL_PORT=443
_SERVER_NAME=`hostname -f`
_SERVER_ADMIN="admin@oopen.de"
_srcdir=$(dirname $(realpath $0))
_START_AT_BOOTTIME=yes
APACHE_LOG_DIR=/var/log/apache2
DIRECTORY_INDEX="index.html index.htm index.php"
MUTEX_DIR="${APACHE_LOG_DIR}/ssl_mutex"
_BASE_WEBSPACE_DIR="/var/www"
#_GLOBAL_DOC_ROOT="${_BASE_WEBSPACE_DIR}/default"
#_SUEXEC_DOC_ROOT=$_BASE_WEBSPACE_DIR
#_PROXY_PATH_MATH_LINE="#ProxyPassMatch ^/(status|ping)$ unix:${_PHP_FPM_SOCKET}|fcgi://localhost/${_BASE_WEBSPACE_DIR}/default"
## - DO NOT CHANGE ----------------------------------
## -
# - systemd supported by OS ?
# -
_systemd="$(which systemd)"
_systemctl="$(which systemctl)"
if [[ -z "$_systemd" ]] && [[ -z "$_systemctl" ]]; then
SYSTEMD_SUPPORTED=false
else
SYSTEMD_SUPPORTED=true
fi
## - Determin httpd binary
## -
_httpd_binary="$(which httpd)"
if [ -z "$_httpd_binary" ]; then
_httpd_binary="$(ps -axu | grep httpd | grep -e "^root" | grep -v grep | awk '{print$11}')"
if [ -z "$_httpd_binary" ]; then
if [ -x "/usr/local/apache2/bin/httpd" ]; 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
if [ -x "$_httpd_binary" ];then
## - Determin websever user
## -
_pass_web_user=false
web_user="`$_httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^User" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`"
web_group="`$_httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^Group" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`"
if [ -z "$web_user" -o -z "$web_group" ]; then
_HTTPD_USER=www-data
else
_HTTPD_USER=$web_user
_HTTPD_GROUP=$web_group
fi
## - Is Apache Webservice running?
## -
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
## - Let make use multiple cores (-j<number of cores +1>)
## -
export MAKEFLAGS=-j$(expr `grep "^processor" /proc/cpuinfo | sort -u | wc -l` + 1)
# : ${_arch:=i686}
# : ${_arch:=athlon}
: ${_arch:=k8} ## --> x86-64 instructionset
#_cflags="-O2 -march=$_arch "
## --- some functions
## ---
clean_up() {
# Perform program exit housekeeping
if [[ -s "$_CRONTAB_BAKUP_FILE" ]]; then
crontab -u root $_CRONTAB_BAKUP_FILE
fi
rm -f $_CRONTAB_BAKUP_FILE
exit $1
}
echononl(){
echo X\\c > /tmp/shprompt$$
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
echo -e -n "$*\\c" 1>&2
else
echo -e -n "$*" 1>&2
fi
rm /tmp/shprompt$$
}
fatal(){
echo ""
echo -e "[ \033[31m\033[1mError\033[m ]: $*"
echo ""
echo -e "\t\033[31m\033[1mInstalllation wird abgebrochen\033[m\033[m"
echo ""
clean_up 1
}
warn (){
echo ""
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
echo ""
}
error (){
echo ""
echo -e "\t[ \033[31m\033[1mError\033[m ]: $*"
echo ""
}
echo_ok() {
echo -e "\033[75G[ \033[32mok\033[m ]"
}
echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
}
echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
}
## ---
## --- END: functions
trap clean_up SIGHUP SIGINT SIGTERM
clear
echo
echo -e "\033[21G\033[32mInstallation script apache webserver \033[m"
echo
echo
echo
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert version numbers apache (httpd) apr and apr-util."
echo ""
echo ""
APACHE_VERSION=
while [ "X$APACHE_VERSION" = "X" ]
do
echononl "apache version [$_APACHE_VERSION]: "
read APACHE_VERSION
if [ "X$APACHE_VERSION" = "X" ]; then
APACHE_VERSION=$_APACHE_VERSION
fi
done
APR_VERSION=
while [ "X$APR_VERSION" = "X" ]
do
echononl "apr version [$_APR_VERSION]: "
read APR_VERSION
if [ "X$APR_VERSION" = "X" ]; then
APR_VERSION=$_APR_VERSION
fi
done
if [ -d "/usr/local/apr-$APR_VERSION" ]; then
APR_INSTALLED=true
else
APR_INSTALLED=false
fi
APR_UTIL_VERSION=
while [ "X$APR_UTIL_VERSION" = "X" ]
do
echononl "apr-util version [$_APR_UTIL_VERSION]: "
read APR_UTIL_VERSION
if [ "X$APR_UTIL_VERSION" = "X" ]; then
APR_UTIL_VERSION=$_APR_UTIL_VERSION
fi
done
if [ -d "/usr/local/apr-util-$APR_UTIL_VERSION" ]; then
APR_UTIL_INSTALLED=true
else
APR_UTIL_INSTALLED=false
fi
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Base Directory contains the webspaces.."
echo ""
echo ""
BASE_WEBSPACE_DIR=
while [ "X$BASE_WEBSPACE_DIR" = "X" ]
do
echononl "Webspace base directory [${_BASE_WEBSPACE_DIR}]: "
read BASE_WEBSPACE_DIR
if [ "X$BASE_WEBSPACE_DIR" = "X" ]; then
BASE_WEBSPACE_DIR=$_BASE_WEBSPACE_DIR
fi
done
GLOBAL_DOC_ROOT="${BASE_WEBSPACE_DIR}/default"
SUEXEC_DOC_ROOT=$BASE_WEBSPACE_DIR
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert User/Group for apache daemon (httpd)."
echo ""
echo ""
HTTPD_USER=
while [ "X$HTTPD_USER" = "X" ]
do
echononl "apache user [${_HTTPD_USER}]: "
read HTTPD_USER
if [ "X$HTTPD_USER" = "X" ]; then
HTTPD_USER=$_HTTPD_USER
fi
done
if [ -z "$_HTTPD_GROUP" ]; then
if [ "$HTTPD_USER" = "nobody" ]; then
_HTTPD_GROUP="nogroup"
else
_HTTPD_GROUP=$HTTPD_USER
fi
fi
while [ "X$HTTPD_GROUP" = "X" ]
do
echononl "apache group [$_HTTPD_GROUP]: "
read HTTPD_GROUP
if [ "X$HTTPD_GROUP" = "X" ]; then
HTTPD_GROUP=$_HTTPD_GROUP
fi
done
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert default ServerName / ServerAdmin ."
echo ""
echo ""
SERVER_NAME=
while [ "X$SERVER_NAME" = "X" ]
do
echononl "default SeverName [${_SERVER_NAME}]: "
read SERVER_NAME
if [ "X$SERVER_NAME" = "X" ]; then
SERVER_NAME=$_SERVER_NAME
fi
done
if [ -z "`echo $SERVER_NAME | cut -s -d"." -f 3`" ];then
_HOST=""
_DOMAIN=`echo $SERVER_NAME | cut -s -d"." -f 1`
_TLD=`echo $SERVER_NAME | cut -s -d"." -f 2`
else
_HOST=`echo $SERVER_NAME | cut -s -d"." -f 1`
_DOMAIN=`echo $SERVER_NAME | cut -s -d"." -f 2`
_TLD=`echo $SERVER_NAME | cut -s -d"." -f 3`
fi
SERVER_ADMIN=
while [ "X$SERVER_ADMIN" = "X" ]
do
echononl "default SeverAdmin [${_SERVER_ADMIN}]: "
read SERVER_ADMIN
if [ "X$SERVER_ADMIN" = "X" ]; then
SERVER_ADMIN=$_SERVER_ADMIN
fi
done
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert the IP-Addresses the webserver should listen for."
echo " Note:"
echo " Put in a blank seperated list of ip-addresses"
echo ""
echo -e " \033[33m\"127.0.0.1\"\033[m will be added automatically "
echo ""
echo ""
_IPv4_ADDRESSES=
while [ "X$_IPv4_ADDRESSES" = "X" ]
do
echononl "Ipv4 addresses [$_ipv4]: "
read _IPv4_ADDRESSES
if [ "X$_IPv4_ADDRESSES" = "X" ]; then
_IPv4_ADDRESSES=$_ipv4
#echononl "Must NOT be empty. Insert again: "
fi
done
IPv4_FIRST=`echo $_IPv4_ADDRESSES | cut -d " " -f1`
HTTPD_INFO_ADDRESSES="$_IPv4_ADDRESSES"
IPv4_ADDRESSES="127.0.0.1 $_IPv4_ADDRESSES"
echo ""
echo "Type:"
echo -e "\t\033[33mNone\033[m if IPv6 is not suppoerted"
echo ""
IPv6_ADDRESSES=
while [ "X$IPv6_ADDRESSES" = "X" ]
do
echononl "Ipv6 addresses [$_ipv6]: "
read IPv6_ADDRESSES
if [ "X$IPv6_ADDRESSES" = "Xnone" -o "X$IPv6_ADDRESSES" = "XNone" ]; then
warn "Disable support for IPv6.."
IPv6_ADDRESSES="disbled"
#echononl "Must NOT be empty. Insert again: "
elif [ "X$IPv6_ADDRESSES" = "X" ]; then
IPv6_ADDRESSES=$_ipv6
fi
done
if [ "$IPv6_ADDRESSES" != "disbled" ]; then
IPv6_FIRST=`echo $IPv6_ADDRESSES | cut -d " " -f1`
else
IPv6_FIRST=""
fi
IP_ADDRESSES="$IPv4_ADDRESSES"
if [ "$IPv6_ADDRESSES" != "disbled" ]; then
for _ipv6 in $IPv6_ADDRESSES ; do
IP_ADDRESSES="$IP_ADDRESSES [$_ipv6]"
HTTPD_INFO_ADDRESSES="$HTTPD_INFO_ADDRESSES $_ipv6"
done
fi
echo ""
echo ""
echo -e "\tUse Separate \"Listen\" Directives for each IP-Address?"
echo ""
SEPARATE_LISTEN_DIRECTIVES=
while [ "X$SEPARATE_LISTEN_DIRECTIVES" = "X" ]
do
if $_SEPARATE_LISTEN_DIRECTIVES ; then
echononl "Separate \"Listen\" Directives (yes/no) [yes]: "
else
echononl "Separate \"Listen\" Directives (yes/no) [no]: "
fi
read SEPARATE_LISTEN_DIRECTIVES
if [ "X$SEPARATE_LISTEN_DIRECTIVES" = "X" ]; then
SEPARATE_LISTEN_DIRECTIVES=$_SEPARATE_LISTEN_DIRECTIVES
fi
done
SEPARATE_LISTEN_DIRECTIVES=`echo $SEPARATE_LISTEN_DIRECTIVES | tr '[:upper:]' '[:lower:]'`
if [ "$SEPARATE_LISTEN_DIRECTIVES" = "yes" ] || $SEPARATE_LISTEN_DIRECTIVES ; then
SEPARATE_LISTEN_DIRECTIVES=true
_STATUS_URL="http://localhost:80/server-status"
else
SEPARATE_LISTEN_DIRECTIVES=false
_STATUS_URL="http://127.0.0.1:80/server-status"
fi
echo ""
echo ""
echo -e "\tInsert the URL used to access the status report"
echo ""
echo " Example:"
echo " http://localhost:80/server-status"
echo " http://127.0.0.1:80/server-status"
echo ""
STATUS_URL=
while [ "X$STATUS_URL" = "X" ]
do
if [[ -n $_STATUS_URL ]] ; then
echononl "Status URL [$_STATUS_URL]: "
else
echononl "Status URL: "
fi
read STATUS_URL
if [ "X$STATUS_URL" = "X" ]; then
STATUS_URL=$_STATUS_URL
fi
done
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert Ports for standard non-ssl and ssl connections"
echo ""
echo ""
HTTPD_PORT=
while [ "X$HTTPD_PORT" = "X" ]
do
echononl "port for standard (non-ssl) connections [${_HTTPD_PORT}]: "
read HTTPD_PORT
if [ "X$HTTPD_PORT" = "X" ]; then
HTTPD_PORT=$_HTTPD_PORT
fi
done
HTTPD_SSL_PORT=
while [ "X$HTTPD_SSL_PORT" = "X" ]
do
echononl "port for ssl connections [${_HTTPD_SSL_PORT}]: "
read HTTPD_SSL_PORT
if [ "X$HTTPD_SSL_PORT" = "X" ]; then
HTTPD_SSL_PORT=$_HTTPD_SSL_PORT
fi
done
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Some server configuration"
echo ""
#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 "/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
echononl "Sysmlink for installation directory (yes/no) [${_SYMLINK_INSTALL_DIR}]: "
read __SYMLINK_INSTALL_DIR
if [ "X$__SYMLINK_INSTALL_DIR" = "X" ]; then
__SYMLINK_INSTALL_DIR=$_SYMLINK_INSTALL_DIR
fi
done
__SYMLINK_INSTALL_DIR=`echo $__SYMLINK_INSTALL_DIR | tr '[:upper:]' '[:lower:]'`
if [ "$__SYMLINK_INSTALL_DIR" = "yes" ] ; then
SYMLINK_INSTALL_DIR=true
else
SYMLINK_INSTALL_DIR=false
fi
__START_AT_BOOTTIME=
while [ "X$__START_AT_BOOTTIME" = "X" ]
do
echononl "Start at boot time (yes/no) [${_START_AT_BOOTTIME}]: "
read __START_AT_BOOTTIME
if [ "X$__START_AT_BOOTTIME" = "X" ]; then
__START_AT_BOOTTIME=$_START_AT_BOOTTIME
fi
done
__START_AT_BOOTTIME=`echo $__START_AT_BOOTTIME | tr '[:upper:]' '[:lower:]'`
if [ "$__START_AT_BOOTTIME" = "yes" ] ; then
START_AT_BOOTTIME=true
else
START_AT_BOOTTIME=false
fi
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo ""
OK=""
echononl "Set \"umask\" to \"0002\" ? [no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "Xno" -a "X$OK" != "XNo" -a "X$OK" != "X" ]; do
echononl "falsche Angabe! [no]: "
read OK
done
if [ "$OK" = "yes" -o "$OK" = "Yes" ]; then
SET_UMASK=true
UMASK=0002
else
SET_UMASK=false
fi
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Support for apache modules"
echo ""
echo ""
__WITH_MOD_PROXY_FCGI=
while [ "X$__WITH_MOD_PROXY_FCGI" = "X" ]
do
echononl "Include \"mod_proxy_cgi\" [${_WITH_MOD_PROXY_FCGI}]: "
read __WITH_MOD_PROXY_FCGI
if [ "X$__WITH_MOD_PROXY_FCGI" = "X" ]; then
__WITH_MOD_PROXY_FCGI=$_WITH_MOD_PROXY_FCGI
fi
done
if [ "$__WITH_MOD_PROXY_FCGI" = "true" ] ; then
WITH_MOD_PROXY_FCGI=true
else
WITH_MOD_PROXY_FCGI=false
fi
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Support for third party modules"
echo ""
echo ""
__WITH_MOD_FCGID=
while [ "X$__WITH_MOD_FCGID" = "X" ]
do
echononl "Include \"mod_fcgid\" [${_WITH_MOD_FCGID}]: "
read __WITH_MOD_FCGID
if [ "X$__WITH_MOD_FCGID" = "X" ]; then
__WITH_MOD_FCGID=$_WITH_MOD_FCGID
fi
done
if [ "$__WITH_MOD_FCGID" = "true" ] ; then
WITH_MOD_FCGID=true
MOD_FCGID_VERSION=
while [ "X$MOD_FCGID_VERSION" = "X" ]
do
echononl "mod_fcgid version [$_MOD_FCGID_VERSION]: "
read MOD_FCGID_VERSION
if [ "X$MOD_FCGID_VERSION" = "X" ]; then
MOD_FCGID_VERSION=$_MOD_FCGID_VERSION
fi
done
else
WITH_MOD_FCGID=false
fi
echo
__WITH_MOD_PERL=
while [ "X$__WITH_MOD_PERL" = "X" ]
do
echononl "Include \"mod_perl\" [${_WITH_MOD_PERL}]: "
read __WITH_MOD_PERL
if [ "X$__WITH_MOD_PERL" = "X" ]; then
__WITH_MOD_PERL=$_WITH_MOD_PERL
fi
done
if [ "$__WITH_MOD_PERL" = "true" ] ; then
WITH_MOD_PERL=true
MOD_PERL_VERSION=
while [ "X$MOD_PERL_VERSION" = "X" ]
do
echononl "mod_perl version [$_MOD_PERL_VERSION]: "
read MOD_PERL_VERSION
if [ "X$MOD_PERL_VERSION" = "X" ]; then
MOD_PERL_VERSION=$_MOD_PERL_VERSION
fi
done
else
WITH_MOD_PERL=false
fi
echo
__WITH_MOD_PHP=
while [ "X$__WITH_MOD_PHP" = "X" ]
do
echononl "Include \"mod_php\" [${_WITH_MOD_PHP}]: "
read __WITH_MOD_PHP
if [ "X$__WITH_MOD_PHP" = "X" ]; then
__WITH_MOD_PHP=$_WITH_MOD_PHP
fi
done
if [ "$__WITH_MOD_PHP" = "true" ] ; then
WITH_MOD_PHP=true
PHP_VERSION=
while [ "X$PHP_VERSION" = "X" ]
do
echononl "php version [$_PHP_VERSION]: "
read PHP_VERSION
if [ "X$PHP_VERSION" = "X" ]; then
PHP_VERSION=$_PHP_VERSION
fi
done
else
WITH_MOD_PHP=false
fi
if [ -n "$PHP_VERSION" ] ; then
_builddir=${_srcdir}/httpd-${APACHE_VERSION}_php-${PHP_VERSION}
PREFIX=/usr/local/httpd-${APACHE_VERSION}_php-${PHP_VERSION}
_logdir=${_srcdir}/log_httpd-${APACHE_VERSION}_php-${PHP_VERSION}_build
else
_builddir=${_srcdir}/httpd-${APACHE_VERSION}
PREFIX=/usr/local/httpd-${APACHE_VERSION}
_logdir=${_srcdir}/log_httpd-${APACHE_VERSION}
fi
## - Is this a system with "systemd" ?
## -
OK=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Are you installing on a VServer guest system?"
echo ""
echononl "VServer Gastsystem (yes/no) [$_VSERVER_GUEST]: "
read OK
if [ "X$OK" = "X" ]; then
OK=$_VSERVER_GUEST
fi
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
done
if [ "$OK" = "yes" ]; then
SYSTEMD_SUPPORTED=false
fi
if $SYSTEMD_SUPPORTED ; then
INIT_SCRIPT_SUPPORTED=false
else
INIT_SCRIPT_SUPPORTED=true
fi
clear
echo ""
echo -e "\033[21G\033[32mStart Apache Webserver Installation with the following Parameters \033[m"
echo ""
if [[ -n "$_httpd_current_version" ]]; then
echo ""
echo -e "--- Update form apache version \033[33m$_httpd_current_version\033[m ---"
echo ""
fi
echo "httpd version.................: $APACHE_VERSION"
echo " apr version................: $APR_VERSION"
echo " apr-uril version...........: $APR_UTIL_VERSION"
echo ""
echo "apache user...................: $HTTPD_USER"
echo "apache group..................: $HTTPD_GROUP"
echo ""
echo "Installation directory........: $PREFIX"
echo ""
echo "Base directory for webspaces..: $BASE_WEBSPACE_DIR"
echo "Global DocumentRoot directory.: $GLOBAL_DOC_ROOT"
echo ""
echo "default ServerName............: $SERVER_NAME"
echo "default ServerAdmin...........: $SERVER_ADMIN"
echo ""
echo "IPv4 addresses................: $IPv4_ADDRESSES"
echo "IPv6 addresses................: $IPv6_ADDRESSES"
echo ""
echo "Separate Listen Directives....: $SEPARATE_LISTEN_DIRECTIVES"
echo "URL to access status report...: $STATUS_URL"
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 /usr/local/apache2....: $SYMLINK_INSTALL_DIR"
echo "Start at boot time............: $START_AT_BOOTTIME"
echo ""
echo "Set umask to \"0002\"...........: $SET_UMASK"
echo ""
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 ""
echo "Include mod_php...............: $WITH_MOD_PHP"
if $WITH_MOD_PHP ; then
echo " php version................: $PHP_VERSION"
fi
echo ""
echo "Include mod_fcgid.............: $WITH_MOD_FCGID"
if $WITH_MOD_FCGID ; then
echo " mod_fcgid version..........: $MOD_FCGID_VERSION"
fi
echo "Include mod_perl..............: $WITH_MOD_PERL"
if $WITH_MOD_PERL ; then
echo " mod_perl version...........: $MOD_PERL_VERSION"
fi
echo ""
if [[ ${#_php_socket_arr[@]} -gt 0 ]] ; then
echo -n "PHP FPM versions found........:"
for _val in ${_php_socket_arr[@]} ; do
IFS=':' read -a _val_arr <<< "${_val}"
echo -n " ${_val_arr[0]}"
done
echo
fi
echo ""
echononl "start with that configuration? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Change parameters and restart script: `basename $0`"
echo ""
echo ""
if [ -d "$_logdir" ];then
echononl "\tVerschiebe exitierendes Logverzeichnis ..."
mv $_logdir $_logdir.${_backup_date}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Logverzeichnis \"${_logdir}\" nicht verschieben.."
fi
fi
echononl "\tErstelle Logverzeichnis \"`basename ${_logdir}`\".."
mkdir -p $_logdir > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Kann Logverzeichnis \"${_logdir}\" nicht erstellen.."
fi
touch ${_logdir}/main.log
echo "## -----------" >> ${_logdir}/main.log
echo "## - Start Apache Webserver installation with the following Parameters" >> ${_logdir}/main.log
echo "## -----------" >> ${_logdir}/main.log
if [[ -n "$_httpd_current_version" ]]; then
echo "## -" >> ${_logdir}/main.log
echo "## --- Update form apache version $_httpd_current_version ---" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
fi
echo "## -" >> ${_logdir}/main.log
echo "## - httpd 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 "## -" >> ${_logdir}/main.log
echo "## - apache user...................: $HTTPD_USER" >> ${_logdir}/main.log
echo "## - apache group..................: $HTTPD_GROUP" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - Installation directory........: $PREFIX" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - Base directory for webspaces..: $BASE_WEBSPACE_DIR" >> ${_logdir}/main.log
echo "## - Global DocumentRoot directory.: $GLOBAL_DOC_ROOT" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - default ServerName............: $SERVER_NAME" >> ${_logdir}/main.log
echo "## - default ServerAdmin...........: $SERVER_ADMIN" >> ${_logdir}/main.log
echo "## - " >> ${_logdir}/main.log
echo "## - IPv4 addresses................: $IPv4_ADDRESSES" >> ${_logdir}/main.log
echo "## - IPv6 addresses................: $IPv6_ADDRESSES" >> ${_logdir}/main.log
echo "## - " >> ${_logdir}/main.log
echo "## - Separate Listen Directives....: $SEPARATE_LISTEN_DIRECTIVES" >> ${_logdir}/main.log
echo "## - URL to access status report...: $STATUS_URL" >> ${_logdir}/main.log
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 /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 "## - 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
echo "## - php version................: $PHP_VERSION" >> ${_logdir}/main.log
fi
echo "## -" >> ${_logdir}/main.log
echo "## - Include mod_proxy_cgi.........: $WITH_MOD_PROXY_FCGI" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - Include mod_fcgid.............: $WITH_MOD_FCGID" >> ${_logdir}/main.log
if $WITH_MOD_FCGID ; then
echo "## - mod_fcgid version..........: $MOD_FCGID_VERSION" >> ${_logdir}/main.log
fi
echo "## - Include mod_perl..............: $WITH_MOD_PERL" >> ${_logdir}/main.log
if $WITH_MOD_PERL ; then
echo "## - mod_perl version...........: $MOD_PERL_VERSION" >> ${_logdir}/main.log
fi
echo "## -" >> ${_logdir}/main.log
if [[ ${#_php_socket_arr[@]} -gt 0 ]] ; then
echo -n "PHP FPM versions found........:" >> ${_logdir}/main.log
for _val in ${_php_socket_arr[@]} ; do
IFS=':' read -a _val_arr <<< "${_val}"
echo -n " ${_val_arr[0]}" >> ${_logdir}/main.log
done
echo "## -" >> ${_logdir}/main.log
fi
echo "## -" >> ${_logdir}/main.log
echo "## - log directory installation....: $_logdir" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
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=$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 "IPv4_ADDRESSES=\"$IPv4_ADDRESSES\"" >> ${_logdir}/main.log
echo "IPv6_ADDRESSES=\"$IPv6_ADDRESSES\"" >> ${_logdir}/main.log
echo "IP_ADDRESSES=\"$IP_ADDRESSES\"" >> ${_logdir}/main.log
echo "SEPARATE_LISTEN_DIRECTIVES=$SEPARATE_LISTEN_DIRECTIVES" >> ${_logdir}/main.log
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 "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
fi
echo "WITH_MOD_PERL=$WITH_MOD_PERL" >> ${_logdir}/main.log
if $WITH_MOD_PERL ; then
echo "MOD_PERL_VERSION=$MOD_PERL_VERSION" >> ${_logdir}/main.log
fi
echo "" >> ${_logdir}/main.log
_pwd=`pwd`
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}.${_backup_date}
fi
fi
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}.${_backup_date}
fi
fi
_httpdconf=${PREFIX}/conf/httpd.conf
_rel_confextra_path=conf/extra
echo "PREFIX=$PREFIX" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "APXS=\"$PREFIX/bin/apxs\"" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "_logdir=$_logdir" >> ${_logdir}/main.log
echo "_builddir=$_builddir" >> ${_logdir}/main.log
echo "_builddir_fcgid=$_builddir_fcgid" >> ${_logdir}/main.log
echo "_httpdconf=$_httpdconf" >> ${_logdir}/main.log
echo "_rel_confextra_path=$_rel_confextra_path" >> ${_logdir}/main.log
echo "_backup_suffix=$_backup_suffix" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo ""
## - Disable crontab for user root
## -
_crontab_found=false
echononl "\tBackup crontab"
echo "" >> ${_logdir}/main.log
echo "## - Backup crontab" >> ${_logdir}/main.log
echo "## - " >> ${_logdir}/main.log
echo "crontab -u root -l > $_CRONTAB_BAKUP_FILE" >> ${_logdir}/main.log
crontab -u root -l >> $_CRONTAB_BAKUP_FILE 2>> ${_logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
_crontab_found=true
else
if [[ ! -s "$_CRONTAB_BAKUP_FILE" ]] ; then
echo_skipped
warn "No crontab for user 'root'found."
else
echo_failed
error "Backup crontab failed"
fi
fi
if $_crontab_found ; then
echononl "\tDisable crontab for user root"
echo "" >> ${_logdir}/main.log
echo "## - Disable crontab for user root" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "crontab -r -u root" >> ${_logdir}/main.log
crontab -r -u root >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
echo ""
## - Install dependency packages for \"apache2\"
## -
#echononl "\tInstalling dependency packages for \"apache2\""
#
#echo "" >> ${_logdir}/main.log
#echo "## - Install dependency packages for \"apache2\"" >> ${_logdir}/main.log
#echo "## -" >> ${_logdir}/main.log
#echo "DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep apache2" >> ${_logdir}/main.log
#
#DEBIAN_FRONTEND=noninteractive apt-get -q -y build-dep apache2 >> ${_logdir}/main.log 2>&1
#if [ "$?" = 0 ]; then
# echo_ok
#else
# echo_failed
# fatal "Installing dependency packages for \"apache2\" failed!"
#fi
## - get sources..
## -
echo "" >> ${_logdir}/main.log
echo "cd $_srcdir" >> ${_logdir}/main.log
cd $_srcdir
echononl "\tGet source httpd-${APACHE_VERSION}.tar.gz.."
if [ ! -f httpd-${APACHE_VERSION}.tar.gz ]; then
echo "" >> ${_logdir}/main.log
echo "## - Get source httpd-${APACHE_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget ftp://ftp.fu-berlin.de/unix/www/apache/httpd/httpd-${APACHE_VERSION}.tar.gz" >> ${_logdir}/main.log
wget ftp://ftp.fu-berlin.de/unix/www/apache/httpd/httpd-${APACHE_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
echononl "\tTry to get source httpd-${APACHE_VERSION}.tar.gz from \"archive.apache.org\" .."
echo "## - Get source httpd-${APACHE_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget https://archive.apache.org/dist/httpd/httpd-${APACHE_VERSION}.tar.gz" >> ${_logdir}/main.log
wget https://archive.apache.org/dist/httpd/httpd-${APACHE_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot Download httpd-${APACHE_VERSION}.tar.gz"
fi
fi
else
echo_skipped
fi
echononl "\tGet source apr-${APR_VERSION}.tar.gz.."
if $APR_INSTALLED ; then
echo_skipped
else
if [ ! -f apr-${APR_VERSION}.tar.gz ]; then
echo "" >> ${_logdir}/main.log
echo "## - Get source apr-${APR_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget ftp://ftp.fu-berlin.de/unix/www/apache/apr/apr-${APR_VERSION}.tar.gz" >> ${_logdir}/main.log
wget ftp://ftp.fu-berlin.de/unix/www/apache/apr/apr-${APR_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot Download apr-${APR_VERSION}.tar.gz"
fi
else
echo_skipped
fi
fi
echononl "\tGet source apr-util-${APR_UTIL_VERSION}.tar.gz.."
if $APR_UTIL_INSTALLED ; then
echo_skipped
else
if [ ! -f apr-util-${APR_UTIL_VERSION}.tar.gz ]; then
echo "" >> ${_logdir}/main.log
echo "## -Get source apr-util-${APR_UTIL_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget ftp://ftp.fu-berlin.de/unix/www/apache/apr/apr-util-${APR_UTIL_VERSION}.tar.gz" >> ${_logdir}/main.log
wget ftp://ftp.fu-berlin.de/unix/www/apache/apr/apr-util-${APR_UTIL_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot Download apr-util-${APR_UTIL_VERSION}.tar.gz"
fi
else
echo_skipped
fi
fi
echo
## - install apr and apr-util
if $APR_INSTALLED ; then
echononl "\tapr v $APR_VERSION is already installed.."
echo_ok
else
echo "" >> ${_logdir}/main.log
echo "cd $_srcdir" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_srcdir
## - Move (backup) apr source directory
## -
echononl "\tMove (backup) existing source directory apr-$APR_VERSION ..."
if [ -d "${_srcdir}/apr-$APR_VERSION" ];then
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.${_backup_date}" >> ${_logdir}/main.log
mv ${_srcdir}/apr-$APR_VERSION ${_srcdir}/apr-$APR_VERSION.${_backup_date}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) existing source directory \"apr-${APR_VERSION.}\" .."
fi
else
echo_skipped
fi
## - unpack apr
## -
echononl "\tUnpack apr-$APR_VERSION.tar.gz .."
echo "" >> ${_logdir}/main.log
echo "## - Unpack apr-$APR_VERSION.tar.gz .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "gunzip < ${_srcdir}/apr-$APR_VERSION.tar.gz | tar -xpf -" >> ${_logdir}/main.log
gunzip < ${_srcdir}/apr-$APR_VERSION.tar.gz | tar -xpf -
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack mod_fcgid-${MOD_FCGID_VERSION}.tar.gz"
fi
echo "" >> ${_logdir}/main.log
echo "chown -R root.root apr-$APR_VERSION" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
chown -R root.root apr-$APR_VERSION || fatal "Changing permissions of \"apr-$APR_VERSION\" failed"
## - build and install apr
## -
echo "" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "cd apr-$APR_VERSION" >> ${_logdir}/main.log
cd apr-$APR_VERSION
echo "" >> ${_logdir}/main.log
echo "## - Configure apr-${APR_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/apr-configure.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "LDFLAGS=\"-s\" ./configure --prefix=/usr/local/apr-$APR_VERSION > ${_logdir}/apr-configure.log 2>&1" >> ${_logdir}/main.log
echononl "\tConfigure apr-${APR_VERSION}.."
LDFLAGS="-s" ./configure --prefix=/usr/local/apr-$APR_VERSION > ${_logdir}/apr-configure.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot configure apr-${APR_VERSION}."
fi
echo "" >> ${_logdir}/main.log
echo "## - Compile apr-${APR_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/apr-make.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make > ${_logdir}/apr-make.log 2>&1" >> ${_logdir}/main.log
echononl "\tCompile apr-${APR_VERSION}.."
make > ${_logdir}/apr-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Compiling apr-${APR_VERSION} failed."
fi
echononl "\tMove (backup) existing install directory apr-${APR_VERSION}.."
if [ -d "/usr/local/apr-${APR_VERSION}" ];then
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}.${_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
echo_failed
fatal "Cannot move (backup) install directory \"/usr/local/apr-${APR_VERSION}\" .."
fi
else
echo_skipped
fi
echo "" >> ${_logdir}/main.log
echo "## - Install apr-${APR_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/apr-make_install.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/apr-make_install.log 2>&1" >> ${_logdir}/main.log
echononl "\tInstall apr-${APR_VERSION}.."
make install > ${_logdir}/apr-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Installing apr-${APR_VERSION} failed."
fi
if [ -h /usr/local/apr ]; then
echononl "\tRemove Symlink /usr/local/apr.."
echo "" >> ${_logdir}/main.log
echo "## - Remove Symlink /usr/local/apr.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "rm /usr/local/apr" >> ${_logdir}/main.log
rm /usr/local/apr >> ${_logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Removing Symlink /usr/local/apr failed."
fi
fi
echo "" >> ${_logdir}/main.log
echo "## - Symlink /usr/local/apr --> apr-${APR_VERSION}" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "ln -s apr-${APR_VERSION} /usr/local/apr" >> ${_logdir}/main.log
echononl "\tSymlink /usr/local/apr --> apr-${APR_VERSION}"
ln -s apr-${APR_VERSION} /usr/local/apr >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot symlink /usr/local/apr to apr-${APR_VERSION}."
fi
echo "" >> ${_logdir}/main.log
echo ""
fi
if $APR_UTIL_INSTALLED ; then
echononl "\tapr-util v $APR_UTIL_VERSION is already installed.."
echo_ok
else
echo "" >> ${_logdir}/main.log
echo "cd $_srcdir" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_srcdir
## - Move (backup) apr-util source directory
## -
echononl "\tMove (backup) existing source directory apr-util-$APR_UTIL_VERSION.."
if [ -d "${_srcdir}/apr-util-$APR_UTIL_VERSION" ];then
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.${_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
echo_failed
fatal "Cannot move (backup) existing source directory \"apr-util-$APR_UTIL_VERSIONN.}\" .."
fi
else
echo_skipped
fi
## - unpack apr-util
## -
echo "" >> ${_logdir}/main.log
echo "## - Unpack apr-util-$APR_UTIL_VERSION.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "gunzip < ${_srcdir}/apr-util-$APR_UTIL_VERSION.tar.gz | tar -xpf -" >> ${_logdir}/main.log
echononl "\tUnpack apr-util-$APR_UTIL_VERSION.tar.gz.."
gunzip < ${_srcdir}/apr-util-$APR_UTIL_VERSION.tar.gz | tar -xpf -
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack apr-util-$APR_UTIL_VERSION.tar.gz"
fi
echo "" >> ${_logdir}/main.log
echo "chown -R root.root apr-util-$APR_UTIL_VERSION" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
chown -R root.root apr-util-$APR_UTIL_VERSION || fatal "Changing permissions of \"apr-util-$APR_UTIL_VERSION\" failed."
## - build and install apr-util
## -
echo "" >> ${_logdir}/main.log
echo "cd apr-util-$APR_UTIL_VERSION" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd apr-util-$APR_UTIL_VERSION
cat <<EOF >> ${_logdir}/main.log
## - Configure apr-util-${APR_UTIL_VERSION}..
## -
## - See ${_logdir}/apr-util-configure.log for more details
## -
LDFLAGS="-s" \
./configure --prefix=/usr/local/apr-util-$APR_UTIL_VERSION \
--with-ldap \
--with-openssl \
--with-crypto \
--with-gdbm \
--with-apr=/usr/local/apr > ${_logdir}/apr-util-configure.log 2>&1
EOF
echononl "\tConfigure apr-util-${APR_UTIL_VERSION}.."
LDFLAGS="-s" \
./configure --prefix=/usr/local/apr-util-$APR_UTIL_VERSION \
--with-ldap \
--with-openssl \
--with-crypto \
--with-gdbm \
--with-apr=/usr/local/apr > ${_logdir}/apr-util-configure.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot configure apr-util-${APR_UTIL_VERSION}."
fi
echo "" >> ${_logdir}/main.log
echo "## - Compile apr-util-${APR_UTIL_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/apr-util-make.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make > ${_logdir}/apr-util-make.log 2>&1" >> ${_logdir}/main.log
echononl "\tCompile apr-util-${APR_UTIL_VERSION}.."
make > ${_logdir}/apr-util-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Compiling apr-util-${APR_UTIL_VERSION} failed."
fi
echononl "\tMove (backup) existing install directory apr-util-${APR_UTIL_VERSION}.."
if [ -d "/usr/local/apr-util-${APR_UTIL_VERSION}" ];then
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}.${_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
echo_failed
fatal "Cannot move (backup) install directory \"/usr/local/apr-util-${APR_UTIL_VERSION}\" .."
fi
else
echo_skipped
fi
echo "" >> ${_logdir}/main.log
echo "## - Install apr-util-${APR_UTIL_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/apr-util-make_install.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/apr-util-make_install.log 2>&1" >> ${_logdir}/main.log
echononl "\tInstall apr-util-${APR_UTIL_VERSION}.."
make install > ${_logdir}/apr-util-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Installing apr-util-${APR_UTIL_VERSION} failed."
fi
if [ -h /usr/local/apr-util ]; then
echononl "\tRemove Symlink /usr/local/apr-util.."
echo "" >> ${_logdir}/main.log
echo "## - Remove Symlink /usr/local/apr-util.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "rm /usr/local/apr-util" >> ${_logdir}/main.log
rm /usr/local/apr-util >> ${_logdir}/main.log
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Removing Symlink /usr/local/apr-util failed."
fi
fi
echo "" >> ${_logdir}/main.log
echo "## - Symlink /usr/local/apr-util --> apr-util-${APR_UTIL_VERSION}" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "ln -s apr-util-${APR_UTIL_VERSION} /usr/local/apr-util >> ${_logdir}/main.log 2>&1" >> ${_logdir}/main.log
ln -s apr-util-${APR_UTIL_VERSION} /usr/local/apr-util >> ${_logdir}/main.log 2>&1
echononl "\tSymlink /usr/local/apr-util --> apr-util-${APR_UTIL_VERSION}"
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot symlink /usr/local/apr-util to apr-util-${APR_UTIL_VERSION}."
fi
fi
echo
echo -e "\t---"
echo -e "\t--- Installation Apache ${APACHE_VERSION}"
echo -e "\t---"
echo""
echononl "\tMove (backup) existing source directory ..."
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.${_backup_date}" >> ${_logdir}/main.log
mv $_builddir $_builddir.${_backup_date} >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir}\" .."
fi
else
echo_skipped
fi
## - unpack apache
## -
cd $_srcdir
echo "" >> ${_logdir}/main.log
echo "## - Unpack httpd-$APACHE_VERSION.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "gunzip < ${_srcdir}/httpd-$APACHE_VERSION.tar.gz | tar -xpf -" >> ${_logdir}/main.log
echononl "\tUnpack httpd-$APACHE_VERSION.tar.gz.."
gunzip < ${_srcdir}/httpd-$APACHE_VERSION.tar.gz | tar -xpf - >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack httpd-$APACHE_VERSION.tar.gz"
fi
echo "" >> ${_logdir}/main.log
echo "chown -R root.root httpd-$APACHE_VERSION" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
chown -R root.root httpd-$APACHE_VERSION || fatal "Changing permissions of \"httpd-$APACHE_VERSION\" failed."
if [ "httpd-$APACHE_VERSION" != "`basename $_builddir`" ]; then
echo "" >> ${_logdir}/main.log
echo "## - Rename source directory to `basename $_builddir`.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mv httpd-$APACHE_VERSION ${_builddir} > ${_logdir}/main.log 2>&1" >> ${_logdir}/main.log
echononl "\tRename source directory to `basename $_builddir`.."
mv httpd-$APACHE_VERSION ${_builddir}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot rename httpd-$APACHE_VERSION to $_builddir"
fi
fi
echo "" >> ${_logdir}/main.log
echo "cd $_builddir" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_builddir || fatal "Changing Directory (cd) to \"${_builddir}\" failed"
## - LDFLAGS="-s" --> Remove all symbol table and relocation information from the executable.
## -
echo "" >> ${_logdir}/main.log
echo "## - Configure apache-${APACHE_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/httpd-configure.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echononl "\tConfigure apache-${APACHE_VERSION}.."
config_params="--prefix=$PREFIX \
--enable-ssl=static \
--enable-info=static \
--enable-rewrite=static \
--enable-cache=static \
--enable-cache-disk=static \
--enable-so=static \
--enable-cgid=static \
--enable-cgi=static \
--with-mpm=event \
--enable-suexec=static --with-suexec-caller=$HTTPD_USER --with-suexec-logfile=${APACHE_LOG_DIR}/suexec_log --with-suexec-docroot=$SUEXEC_DOC_ROOT --with-suexec-bin=$PREFIX/bin/suexec \
--enable-include=static \
--enable-xml2enc \
--enable-authnz-ldap \
--enable-proxy=static \
--enable-proxy-connect=static \
--enable-proxy-http=static \
--enable-proxy-fdpass=static \
--enable-proxy-fcgi=statuc \
--enable-proxy-wstunnel=static \
--enable-proxy-html=static \
--enable-slotmem-shm \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr-util/bin/apu-1-config"
if $WITH_MOD_PROXY_FCGI ; then
config_params="$config_params \
--enable-proxy-fcgi=static"
fi
cat << EOF >> ${_logdir}/main.log
LDFLAGS="-s" \
./configure $config_params
EOF
LDFLAGS="-s" \
./configure $config_params > ${_logdir}/httpd-configure.log 2>&1
#LDFLAGS="-s" \
# ./configure --prefix=$PREFIX \
# --with-ssl=/usr/local/openssl \
# --enable-ssl=static \
# --enable-info=static \
# --enable-rewrite=static \
# --enable-cache=static \
# --enable-cache-disk=static \
# --enable-so=static \
# --enable-cgid=static \
# --enable-cgi=static \
# --with-mpm=event \
# --enable-suexec=static --with-suexec-caller=$HTTPD_USER --with-suexec-logfile=${APACHE_LOG_DIR}/suexec_log --with-suexec-docroot=$SUEXEC_DOC_ROOT --with-suexec-bin=$PREFIX/bin/suexec \
# --enable-include=static \
# --with-apr=/usr/local/apr/bin/apr-1-config \
# --with-apr-util=/usr/local/apr-util/bin/apu-1-config \
# > ${_logdir}/httpd-configure.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Configuring apache-${APACHE_VERSION} failed."
fi
#--enable-dav \
#--enable-dav-fs \
#--enable-deflate \
#--enable-socache-memcache=static \
#--enable-asis \
#--enable-proxy \
#--enable-proxy-connect \
#--enable-proxy-ftp \
#--enable-proxy-http \
#--enable-proxy-balancer \
## --enable-authz-dbm \
## --enable-authn-dbm \
## --with-berkeley-db=/usr/local/BerkeleyDB.4.4.20 \
## --target=i686-pc-linux-gnu \
## --build=i686-pc-linux-gnu | tee ../httpd-$APACHE_VERSION-install.log
## --disable-nls \
## --with-included-apr \
## --with-dbm=db4 \
## --enable-mem-cache \
## --enable-headers \
## --with-berkeley-db=/usr \
echo "" >> ${_logdir}/main.log
echo "## - Compile apache-${APACHE_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/httpd-make.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make > ${_logdir}/httpd-make.log 2>&1" >> ${_logdir}/main.log
echononl "\tCompile apache-${APACHE_VERSION}.."
make > ${_logdir}/httpd-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Compiling apache-${APACHE_VERSION} failed."
fi
echononl "\tBackup existing installation directory.."
if [ -d "$PREFIX" ];then
echo "" >> ${_logdir}/main.log
echo "## - Backup existing installation directory.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
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
echo_failed
fatal "Cannot move (backup) existing install directory \"${_builddir}\" .."
fi
else
echo_skipped
fi
echononl "\tStop Apache Webservice (if running).."
if $START_AT_BOOTTIME && $APACHE_WEBSERVICE_RUNNING ; then
echo "" >> ${_logdir}/main.log
echo "## - Stop Apache Webservice.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
if $SYSTEMD_SUPPORTED ; then
echo "systemctl stop apache2" >> ${_logdir}/main.log
systemctl stop apache2 >> ${_logdir}/main.log 2>&1
else
echo "/etc/init.d/apache2 stop" >> ${_logdir}/main.log
/etc/init.d/apache2 stop >> ${_logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Apache Webservice failed!"
fi
PIDS="$(ps aux | grep -E "(bin/apache2 |bin/httpd )" | grep -v grep | awk '{print$2}')"
declare -i i=0
while [[ -n "${PIDS}" ]]; do
if [[ $i -eq 0 ]]; then
warn "Stopping Apache Webservice failed."
echononl "\tGoing to kill remaining httpd-processes .."
echo "" >> ${_logdir}/main.log
echo "## - Going to kill remaining httpd-processes" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
fi
if [[ $i -gt 10 ]]; then
echo_failed
erro "Killing remaining httpd-processes failed !"
break
fi
sleep 2
for _PID in $PIDS ; do
echo "kill -9 $_PID" >> ${_logdir}/main.log
kill -9 $_PID >> ${_logdir}/main.log 2>&1
done
PIDS="$(ps aux | grep -E "(bin/apache2 |bin/httpd )" | grep -v grep | awk '{print$2}')"
(( i++ ))
[[ $i -le 10 ]] && echo_ok
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
echo "## - Install apache-${APACHE_VERSION}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/httpd-make_install.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/httpd-make_install.log 2>&1" >> ${_logdir}/main.log
echononl "\tInstall apache-${APACHE_VERSION}.."
make install > ${_logdir}/httpd-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Installing apache-${APACHE_VERSION} failed."
echononl "\tTrying again..."
echo "## - Trying to install apache-${APACHE_VERSION} again.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/httpd-make_install_again.log for more details" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/httpd-make_install_again.log 2>&1" >> ${_logdir}/main.log
make install > ${_logdir}/httpd-make_install_again.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echo ""
## - do some post-installatin tasks..
## -
echo ""
echo -e "\t---"
echo -e "\t--- post installation tasks"
echo -e "\t---"
echo ""
if [ -f $_httpdconf ];then
cp -a $_httpdconf $_httpdconf.ORIG
if $subst_base_path ; then
## - set BasePath to httpd.conf
## -
echo ""
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Substitute \"$PREFIX\" with \"/usr/local/apache2\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -e \"s#$PREFIX#/usr/local/apache2#g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.confSubstitute \"$PREFIX\" with \"/usr/local/apache2\".."
sed -i$_backup_suffix -e "s#$PREFIX#/usr/local/apache2#g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - set BasePath to all conf files in conf/extra
## -
if [ -d $PREFIX/$_rel_confextra_path ]; then
cd $PREFIX/$_rel_confextra_path
_files=`ls *.conf`
for _file in $_files ;do
echo ""
echo "" >> ${_logdir}/main.log
echo "## - ${file}: Substitute \"$PREFIX\" with \"/usr/local/apache2\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -e \"s#$PREFIX#/usr/local/apache2#g\" $_file" >> ${_logdir}/main.log
echononl "\t${_file}: Substitute \"$PREFIX\" with \"/usr/local/apache2\""
sed -i$_backup_suffix -e "s#$PREFIX#/usr/local/apache2#g" $_file >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm -f $_file$_backup_suffix
else
echo_failed
fi
done
fi
fi
## - set User
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set User to \"$HTTPD_USER\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*User ).*)$&## \1\n\2${HTTPD_USER}&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set User to \"$HTTPD_USER\".."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*User ).*)$&## \1\n\2${HTTPD_USER}&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - set Group
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set Group to \"$HTTPD_GROUP\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*Group ).*)$&## \1\n\2${HTTPD_GROUP}&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set Group to \"$HTTPD_GROUP\".."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*Group ).*)$&## \1\n\2${HTTPD_GROUP}&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - set ServerAdmin
## -
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set ServerAdmin to \"$SERVER_ADMIN\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*)#?(ServerAdmin ).*)$&## \1\n\2\3${SERVER_ADMIN}&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set ServerAdmin to \"$SERVER_ADMIN\".."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*)#?(ServerAdmin ).*)$&## \1\n\2\3${SERVER_ADMIN}&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - Set ServerName
## -
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set ServerName to \"$SERVER_NAME\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*)#?(ServerName ).*)$&## \1\n\2\3${SERVER_NAME}&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set ServerName to \"$SERVER_NAME\".."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*)#?(ServerName ).*)$&## \1\n\2\3${SERVER_NAME}&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - Set DocumentRoot
## -
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set (global) DocumentRoot.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^([ ^t]*)(DocumentRoot )(.*)$&\1## \2\3\n\1\2\\\"${GLOBAL_DOC_ROOT}\\\"&g\" _httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set (global) DocumentRoot.."
sed -i$_backup_suffix -r \
-e "s&^([ ^t]*)(DocumentRoot )(.*)$&\1## \2\3\n\1\2\"${GLOBAL_DOC_ROOT}\"&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - Set DirectoryIndex
## -
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set (global) DirectoryIndex.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^([ ^t]*)(DirectoryIndex )(.*)$&\1## \2\3\n\1\2${DIRECTORY_INDEX}&g\" _httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set (global) DirectoryIndex.."
sed -i$_backup_suffix -r \
-e "s&^([ ^t]*)(DirectoryIndex )(.*)$&\1## \2\3\n\1\2${DIRECTORY_INDEX}&g" \
$_httpdconf
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
## - Set log-directory and concerning entries
## -
echo "" >> ${_logdir}/main.log
echo "## - Create $APACHE_LOG_DIR\" (if not exists).." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mkdir -p $APACHE_LOG_DIR" >> ${_logdir}/main.log
echononl "\tCreate $APACHE_LOG_DIR\" (if not exists).."
mkdir -p $APACHE_LOG_DIR >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Adjust ErrorLog entry.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*ErrorLog ).*)$&## \1\n\2${APACHE_LOG_DIR}/error_log&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Adjust ErrorLog entry.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*ErrorLog ).*)$&## \1\n\2${APACHE_LOG_DIR}/error_log&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Set CustomLog entry.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^([ ^t]*)(CustomLog )(.*)$&\1## \2\3\n\1\2${APACHE_LOG_DIR}/access_log combined&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Set CustomLog entry.."
sed -i$_backup_suffix -r \
-e "s&^([ ^t]*)(CustomLog )(.*)$&\1## \2\3\n\1\2${APACHE_LOG_DIR}/access_log combined&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm -f $_httpdconf$_backup_suffix
else
echo_failed
fi
else
echo_failed
fi
else
echo_failed
fi
## - Create Mutex Directory
## -
echo "" >> ${_logdir}/main.log
echo "## - Create $MUTEX_DIR\" (if not exists).." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mkdir -p $MUTEX_DIR" >> ${_logdir}/main.log
echononl "\tCreate $MUTEX_DIR\" (if not exists).."
if [[ ! -d "$MUTEX_DIR" ]]; then
mkdir -p $MUTEX_DIR >> ${_logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fi
else
echo_skipped
fi
echo "" >> ${_logdir}/main.log
echo "## - Change ownership of '$MUTEX_DIR' to '$HTTPD_USER'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "chown $HTTPD_USER $MUTEX_DIR" >> ${_logdir}/main.log
echononl "\tChange ownership of '$MUTEX_DIR' to '$HTTPD_USER'.."
if [[ "$(stat -c '%U' /var/log/apache2/ssl_mutex)" != "$HTTPD_USER" ]]; then
chown $HTTPD_USER $MUTEX_DIR >> ${_logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fi
else
echo_skipped
fi
fi
echo "" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - httpd.conf: Set ServerSignature / ServerTokens.." >> ${_logdir}/main.log
cat <<EOFLOG >> ${_logdir}/main.log
cat <<EOF >>$_httpdconf
ServerSignature Off
ServerTokens ProductOnly
EOF
EOFLOG
echononl "\thttpd.conf: Set ServerSignature / ServerTokens.."
cat <<EOF >>$_httpdconf
ServerSignature Off
ServerTokens ProductOnly
EOF
if [ "0" = $? ]; then
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - Create vhosts configuration directory $PREFIX/conf/vhosts.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mkdir -p $PREFIX/conf/vhosts" >> ${_logdir}/main.log
echononl "\tCreate vhosts configuration directory /conf/vhosts.."
mkdir -p $PREFIX/conf/vhosts >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - httpd.conf: \"include conf/vhosts/*.conf\".." >> ${_logdir}/main.log
cat <<EOFLOG >> ${_logdir}/main.log
cat <<EOF >>$_httpdconf
include conf/vhosts/*.conf
EOF
EOFLOG
echononl "\thttpd.conf: \"include conf/vhosts/*.conf\".."
cat <<EOF >>$_httpdconf
include conf/vhosts/*.conf
EOF
if [ "0" = $? ]; then
echo_ok
else
echo_failed
fi
## - Listen on certain ip(s) ?
## -
if [[ -n "$IP_ADDRESSES" ]] && $SEPARATE_LISTEN_DIRECTIVES ; then
_substitute=""
for _ip in $IP_ADDRESSES ; do
_substitute="$_substitute\nListen $_ip:${HTTPD_PORT}"
done
echo "" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
_substitute=""
for _ip in i\$IP_ADDRESSES ; do
_substitute="\$_substitute\nListen \$_ip:\${HTTPD_PORT}"
done
EOF
echo "" >> ${_logdir}/main.log
echo "## - Insert Listen directive(s) Port ${HTTPD_PORT} for given ip-addresses.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s#^(Listen 80.*)#\#\# \1\n\$_substitute#g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\tInsert Listen directive(s) Port ${HTTPD_PORT} for given ip-addresses"
sed -i$_backup_suffix -r -e "s#^(Listen 80.*)#\#\# \1\n$_substitute#g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
rm ${_httpdconf}$_backup_suffix
else
echo_failed
warn "Inserting Listen directive(s) Port ${HTTPD_PORT} failed"
fi
else
warn "No ip-addresses given. Omitting insertion of \"Listen\" directive(s) Port ${HTTPD_PORT} !"
fi
## ---
## --- SSL
## ---
echononl "\tCreate directory '$PREFIX/conf/ssl'.."
if [[ ! -d "$PREFIX/conf/ssl" ]]; then
echo "" >> ${_logdir}/main.log
echo "## - Create directory '$PREFIX/conf/ssl' .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mkdir \"$PREFIX/conf/ssl\"" >> ${_logdir}/main.log 2>&1
mkdir "$PREFIX/conf/ssl" >> ${_logdir}/main.log
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
warn "Creating directory '$PREFIX/conf/ssl' failed"
fi
else
echo_skipped
fi
echo "" >> ${_logdir}/main.log
echo "## - Generate a dhparam.pem file .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "openssl dhparam -dsaparam -out $PREFIX/conf/ssl/dhparam.pem 4096" >> ${_logdir}/main.log
echononl "\tGenerate a dhparam.pem file.."
openssl dhparam -dsaparam -out $PREFIX/conf/ssl/dhparam.pem 4096 >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
warn " Generating dhparam.pem file '$PREFIX/conf/ssl/dhparam.pem' failed"
fi
## - include httpd-ssl.conf
## -
_file=httpd-ssl.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ]; then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: include file \"$_file\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echononl "\thttpd.conf: include file \"$_file\".."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf > /dev/null 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - Backup file '${PREFIX}/${_rel_confextra_path}/${_file}'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tBackup file '${PREFIX}/${_rel_confextra_path}/${_file}'.."
cp -a "${PREFIX}/${_rel_confextra_path}/${_file}" "${PREFIX}/${_rel_confextra_path}/${_file}.ORIG" >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
fi
#notice=""
## - copy certification files if present..
_failed=false
_DEFAULT_SSL_CERT="${PREFIX}/conf/server-bundle.crt"
_DEFAULT_SSL_KEY="${PREFIX}/conf/server.key"
echo "" >> ${_logdir}/main.log
echo "## - Set Symlinks for default Server Key/Cert" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tSet Symlinks for default Server Key/Cert.."
if [ -f "/var/lib/dehydrated/certs/${SERVER_NAME}/fullchain.pem" -a -f "/var/lib/dehydrated/certs/${SERVER_NAME}/privkey.pem" ]; then
ln -s /var/lib/dehydrated/certs/${SERVER_NAME}/fullchain.pem $_DEFAULT_SSL_CERT
if [[ $? -gt 0 ]];then
_failed=true
fi
ln -s /var/lib/dehydrated/certs/${SERVER_NAME}/privkey.pem $_DEFAULT_SSL_KEY
if [[ $? -gt 0 ]];then
_failed=true
fi
if $_failed ; then
echo_failed
else
echo_ok
fi
elif [ -f $_SSL_SNAKEOIL_CERT -a -f $_SSL_SNAKEOIL_KEY ]; then
ln -s $_SSL_SNAKEOIL_CERT $_DEFAULT_SSL_CERT
if [[ $? -gt 0 ]];then
_failed=true
fi
ln -s $_SSL_SNAKEOIL_KEY $_DEFAULT_SSL_KEY
if [[ $? -gt 0 ]];then
_failed=true
fi
if $_failed ; then
echo_failed
else
echo_ok
fi
elif [ -f $_srcdir/server-bundle.crt -a -f $_srcdir/server.key ];then
cp $_srcdir/server-bundle.crt $_DEFAULT_SSL_CERT
if [[ $? -gt 0 ]];then
_failed=true
fi
cp $_srcdir/server.key $_DEFAULT_SSL_KEY
if [[ $? -gt 0 ]];then
_failed=true
fi
if $_failed ; then
echo_failed
else
echo_ok
fi
else
echo_skipped
warn "SSL Connections are enabled but no (default) certificates\n\t are present. So the webserver will not start."
fi
if [[ -n "$IP_ADDRESSES" ]] && $SEPARATE_LISTEN_DIRECTIVES ; then
_substitute_ssl=""
for _ip in $IP_ADDRESSES ; do
_substitute_ssl="$_substitute_ssl\nListen $_ip:${HTTPD_SSL_PORT}"
done
echo "" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
_substitute_ssl=""
for _ip in \$IP_ADDRESSES ; do
_substitute_ssl="\$_substitute_ssl\nListen \$_ip:\${HTTPD_SSL_PORT}"
done
EOF
echo "" >> ${_logdir}/main.log
echo "## - Insert Listen directive(s) Port ${HTTPD_SSL_PORT} for given ip-addresses" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s#^(Listen 443.*)#\#\# \1\n\$_substitute_ssl#g\" \\" >> ${_logdir}/main.log
echo " ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\tInsert Listen directive(s) Port ${HTTPD_SSL_PORT} for given ip-addresses"
sed -i$_backup_suffix -r -e "s#^(Listen 443.*)#\#\# \1\n$_substitute_ssl#g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
warn "Inserting Listen directive(s) Port ${HTTPD_SSL_PORT} failed"
fi
else
warn "No ip-addresses given. Omitting insertion of \"Listen\" directive(s) Port ${HTTPD_SSL_PORT} !"
fi # if [[ -n "$IP_ADDRESSES" ]] && $separate_listen_directives
## - Uncomment "LoadModule" for reqired additional modules..
## -
for module in log_config mod_setenvif socache_shmcb_module ; do
echo "" >> ${_logdir}/main.log
echo "## - Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\tUncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
## - Set Diffie Hellman Ephemeral Parameters
## -
echononl "\t$_file: Set Diffie Hellman Ephemeral Parameters.."
if ! grep -q SSLOpenSSLConfCmd ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix 2> /dev/null ; then
if [[ ! -f "${PREFIX}/conf/ssl/dhparam.pem" ]] ; then
echo_skipped
warn "Diffie Hellman Parameter file (${PREFIX}/conf/ssl/dhparam.pem') NOT found!"
else
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set Diffie Hellman Ephemeral Parameters.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
perl -i$_backup_suffix -n -p \\
-e "s&^(#\s*SSL\s+Cipher\s+Suite:.*)&# Diffie Hellman Ephemeral Parameters\n#\nSSLOpenSSLConfCmd DHParameters \"${PREFIX}/conf/ssl/dhparam.pem\"\n\n\1&" \\
${PREFIX}/${_rel_confextra_path}/${_file}
EOF
perl -i$_backup_suffix -n -p \
-e "s&^(#\s*SSL\s+Cipher\s+Suite:.*)&# Diffie Hellman Ephemeral Parameters\n#\nSSLOpenSSLConfCmd DHParameters \"${PREFIX}/conf/ssl/dhparam.pem\"\n\n\1&" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
if grep -q SSLOpenSSLConfCmd ${PREFIX}/${_rel_confextra_path}/${_file} 2> /dev/null ; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
else
echo_failed
fi
fi
else
echo_skipped
fi
## - Set SSLCipherSuite
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLCipherSuite.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*SSLCipherSuite ).*)$&## \1\n\2${_SSL_Cipher_Suite}&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLCipherSuite.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*SSLCipherSuite ).*)$&## \1\n\2${_SSL_Cipher_Suite}&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLCertificateFile
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLCertificateFile.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*SSLCertificateFile ).*)$&## \1\n\2\\\"${PREFIX}/conf/server-bundle.crt\\\"&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLCertificateFile.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*SSLCertificateFile ).*)$&## \1\n\2\"${PREFIX}/conf/server-bundle.crt\"&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLProxyCipherSuite
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLProxyCipherSuite.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*SSLProxyCipherSuite ).*)$&## \1\n\2${_SSL_Cipher_Suite}&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLProxyCipherSuite.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*SSLProxyCipherSuite ).*)$&## \1\n\2${_SSL_Cipher_Suite}&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLProtocol
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLProtocol.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*SSLProtocol ).*)$&## \1\n\2-all +TLSv1.2 +TLSv1.3&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLProtocol.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*SSLProtocol ).*)$&## \1\n\2-all +TLSv1.2 +TLSv1.3&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLProxyProtocol
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLProxyProtocol.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*SSLProxyProtocol ).*)$&## \1\n\2-all +TLSv1.2 +TLSv1.3&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLProxyProtocol.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*SSLProxyProtocol ).*)$&## \1\n\2-all +TLSv1.2 +TLSv1.3&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLHonorCipherOrder
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLHonorCipherOrder.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*#*[ ^t]*SSLHonorCipherOrder ).*)$&##\1\nSSLHonorCipherOrder on&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set SSLHonorCipherOrder.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*#*[ ^t]*SSLHonorCipherOrder ).*)$&##\1\nSSLHonorCipherOrder on&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set SSLCompression
## -
ssl_compression_comment="# SSLCompression
#
# Note:
# Enabling compression causes security issues in most setups (the so called CRIME attack)."
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set SSLCompression.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
perl -i$_backup_suffix -n -p \\
-e "s&^(\s*SSLHonorCipherOrder\s+.*)&\1\n\n${ssl_compression_comment}\nSSLCompression off&" \\
${PREFIX}/${_rel_confextra_path}/${_file}
EOF
echononl "\t$_file: Set SSLCompression.."
perl -i$_backup_suffix -n -p \
-e "s&^(\s*SSLHonorCipherOrder\s+.*)&\1\n\n${ssl_compression_comment}\nSSLCompression off&" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set ServerName
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set ServerName.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*ServerName ).*)$&## \1\n\2${SERVER_NAME}&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set ServerName.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*ServerName ).*)$&## \1\n\2${SERVER_NAME}&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set ServerAdmin
## -
echo "" >> ${_logdir}/main.log
echo "## -$_file: Set ServerAdmin.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*ServerAdmin ).*)$&## \1\n\2${SERVER_ADMIN}&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set ServerAdmin.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*ServerAdmin ).*)$&## \1\n\2${SERVER_ADMIN}&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set DocumentRoot
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set DocumentRoot.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*DocumentRoot ).*)$&## \1\n\2\\\"${GLOBAL_DOC_ROOT}\\\"&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set DocumentRoot.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*DocumentRoot ).*)$&## \1\n\2\"${GLOBAL_DOC_ROOT}\"&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
## - Set log entries
## -
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set ErrorLog.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*ErrorLog ).*)$&## \1\n\2\\\"${APACHE_LOG_DIR}/error_log\\\"&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file: Set ErrorLog.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*ErrorLog ).*)$&## \1\n\2\"${APACHE_LOG_DIR}/error_log\"&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - $_file. Set TransferLog.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^(([ ^t]*TransferLog ).*)$&## \1\n\2\\\"${APACHE_LOG_DIR}/access_log\\\"&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\t$_file. Set TransferLog.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*TransferLog ).*)$&## \1\n\2\"${APACHE_LOG_DIR}/access_log\"&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - $_file: Set CustomLog.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
sed -i$_backup_suffix -r \\
-e "s&^(([ ^t]*CustomLog ).*)$&## \1\n\2\"${APACHE_LOG_DIR}/ssl_request_log\" \\\\\&g" \\
${PREFIX}/${_rel_confextra_path}/${_file} > /dev/null 2>&1
EOF
echononl "\t$_file: Set CustomLog.."
sed -i$_backup_suffix -r \
-e "s&^(([ ^t]*CustomLog ).*)$&## \1\n\2\"${APACHE_LOG_DIR}/ssl_request_log\" \\\&g" \
${PREFIX}/${_rel_confextra_path}/${_file} >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
else
echo_failed
fi
else
warn "Cannot enable SSL. \"$_file\" not found."
fi
## - include conf files from conf/extra
## -
_file=httpd-default.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ];then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Include $_file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Include $_file.."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
fi
fi
_file=httpd-info.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ];then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Include $_file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Include $_file.."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - Backup file '${PREFIX}/${_rel_confextra_path}/${_file}'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tBackup file '${PREFIX}/${_rel_confextra_path}/${_file}'.."
cp -a "${PREFIX}/${_rel_confextra_path}/${_file}" "${PREFIX}/${_rel_confextra_path}/${_file}.ORIG" >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
fi
_localhost="127.0.0.0/8"
[ "X" != "X$HTTPD_INFO_ADDRESSES" ] && _localhost="$_localhost $HTTPD_INFO_ADDRESSES"
echo "" >> ${_logdir}/main.log
echo "## - Setup \"$_file\" to allow urls \"server-status\"" >> ${_logdir}/main.log
echo "## - and \"server-info\" from localhost.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^([ ^t]*Require[ ^t]?ip).*$&\1 $_localhost&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echo -e "\tSetup \"$_file\" to allow urls \"server-status\""
echo -n -e "\t and server-info from localhost.."
sed -i$_backup_suffix -r \
-e "s&^([ ^t]*Require[ ^t]?ip).*$&\1 $_localhost&g" \
${PREFIX}/${_rel_confextra_path}/${_file} > /dev/null 2>&1
if [ "0" = "$?" ];then
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
echo_ok
else
echo_failed
fi
## - Set ExtendedStatus On
## -
echo "" >> ${_logdir}/main.log
echo "## - Setup \"$_file\": set \"ExtendedStatus On\"" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&^([ ^t]*#*[ ^t]*ExtendedStatus[ ^t]?[Oo].+)$&#\1\nExtendedStatus On&g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
echononl "\tSetup \"$_file\": set \"ExtendedStatus On\""
sed -i$_backup_suffix -r \
-e "s&^([ ^t]*#*[ ^t]*ExtendedStatus[ ^t]?[Oo].+)$&#\1\nExtendedStatus On&g" \
${PREFIX}/${_rel_confextra_path}/${_file} > /dev/null 2>&1
if [ "0" = "$?" ];then
rm ${PREFIX}/${_rel_confextra_path}/${_file}$_backup_suffix
echo_ok
else
echo_failed
fi
## - Uncomment "LoadModule" for needed additional modules..
## -
for module in mod_authz_core mod_authz_host mod_info mod_status ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
fi
_file=httpd-languages.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ];then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Include $_file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Include $_file.."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - Backup file '${PREFIX}/${_rel_confextra_path}/${_file}'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tBackup file '${PREFIX}/${_rel_confextra_path}/${_file}'.."
cp -a "${PREFIX}/${_rel_confextra_path}/${_file}" "${PREFIX}/${_rel_confextra_path}/${_file}.ORIG" >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
fi
## - Uncomment "LoadModule" for needed additional modules..
## -
for module in mod_mime mod_negotiation ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
## - Uncomment "LoadModule" for needed additional modules..
## -
## - New in version 2.4.23 (needed for proxy functionality)
## -
for module in mod_slotmem_shm ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
fi
_file=httpd-multilang-errordoc.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ];then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Include $_file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Include $_file.."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
fi
echo "" >> ${_logdir}/main.log
echo "## - Backup file '${PREFIX}/${_rel_confextra_path}/${_file}'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tBackup file '${PREFIX}/${_rel_confextra_path}/${_file}'.."
cp -a "${PREFIX}/${_rel_confextra_path}/${_file}" "${PREFIX}/${_rel_confextra_path}/${_file}.ORIG" >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
fi
## - Uncomment "LoadModule" for needed additional modules..
## -
for module in mod_alias mod_authz_core mod_authz_host mod_include mod_negotiation ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
## - Set "LanguagePriority"
_failed=false
echononl "\t${_file}: Set LanguagePriority"
echo "" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - ${_file}: Set LanguagePriority" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^(\s*)(LanguagePriority.*)de\ *(.*)$/\1\2\3/g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
sed -i -r -e "s/^(\s*)(LanguagePriority.*)de\ *(.*)$/\1\2\3/g" ${PREFIX}/${_rel_confextra_path}/${_file}
if [ "$?" != "0" ]; then
_failed=true
fi
echo "sed -i -r -e \"s/^(\s*)(LanguagePriority)(.*)$/\1\2 de\3/g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
sed -i -r -e "s/^(\s*)(LanguagePriority)(.*)$/\1\2 de\3/g" ${PREFIX}/${_rel_confextra_path}/${_file}
if [ "$?" != "0" ]; then
_failed=true
fi
if ! $_failed ; then
echo_ok
else
echo_failed
warn "Setting LanguagePriority in file \"${_file}\" failed.."
fi
fi
_file=httpd-mpm.conf
if [ -f ${PREFIX}/${_rel_confextra_path}/${_file} ];then
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Include $_file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i$_backup_suffix -r -e \"s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Include $_file.."
sed -i$_backup_suffix -r \
-e "s&[ ^t]*#([ ^t]*#*[ ^t]*)*(Include $_rel_confextra_path/$_file).*$&\2&g" \
$_httpdconf >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
rm $_httpdconf$_backup_suffix
echo_ok
else
echo_failed
warn "Including file \"${_file}\" failed.."
fi
echo "" >> ${_logdir}/main.log
echo "## - Backup file '${PREFIX}/${_rel_confextra_path}/${_file}'.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tBackup file '${PREFIX}/${_rel_confextra_path}/${_file}'.."
cp -a "${PREFIX}/${_rel_confextra_path}/${_file}" "${PREFIX}/${_rel_confextra_path}/${_file}.ORIG" >> ${_logdir}/main.log 2>&1
if [ "0" = "$?" ];then
echo_ok
else
echo_failed
fi
## - Set MaxConnectionsPerChild
## -
echononl "\t${_file}: Set MaxConnectionsPerChild"
echo "" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - ${_file}: Set MaxConnectionsPerChild" >> ${_logdir}/main.log
_key="MaxConnectionsPerChild"
_val="5000"
echo "sed -i -r -e \"s/^(\s*)($_key)(.*)$/\1\2 $_val/g\" ${PREFIX}/${_rel_confextra_path}/${_file}" >> ${_logdir}/main.log
sed -i -r -e "s/^(\s*)($_key)(.*)$/\1\2 $_val/g" ${PREFIX}/${_rel_confextra_path}/${_file}
if [ "$?" != "0" ]; then
_failed=true
fi
if ! $_failed ; then
echo_ok
else
echo_failed
warn "Setting MaxConnectionsPerChild in file \"${_file}\" failed.."
fi
fi
## - Enable Module mod_expires
## -
## - Uncomment "LoadModule" for mod_expires
module=mod_expires
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
## - Enable Module xml2enc_module (needed for proxy_html_module
## -
## - Uncomment "LoadModule" for xml2enc_module
module=xml2enc_module
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
## - Uncomment "LoadModule" for deflate_module dav_module dav_fs_module
## -
for module in deflate_module dav_module dav_fs_module ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
## - Uncomment "LoadModule" for http2_module
## -
module=http2_module
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
## - Uncomment "LoadModule" for LDAP support
## -
for module in authnz_ldap_module ldap_module ; do
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Uncomment LoadModule $module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "sed -i -r -e \"s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g\" $_httpdconf" >> ${_logdir}/main.log
echononl "\thttpd.conf: Uncomment LoadModule $module.."
sed -i -r -e "s/^\s*#\s*(LoadModule)(.*$module.*)$/\1\2/g" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Including \"LoadModule $module\" failed.."
fi
done
if $WITH_MOD_FCGID ; then
## - Install Apache Module mod_fcgid
## -
echo
echo
echo -e "\t---"
echo -e "\t--- Install mod_fcgid $MOD_FCGID_VERSION --"
echo -e "\t---"
echo
echo "" >> ${_logdir}/main.log
echo "cd $_srcdir" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_srcdir
echononl "\tGet source mod_fcgid-${MOD_FCGID_VERSION}.tar.gz.."
if [ ! -f mod_fcgid-${MOD_FCGID_VERSION}.tar.gz ]; then
echo "" >> ${_logdir}/main.log
echo "## - Get source mod_fcgid-${MOD_FCGID_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget ftp://ftp.fu-berlin.de/unix/www/apache/httpd/mod_fcgid/mod_fcgid-${MOD_FCGID_VERSION}.tar.gz" >> ${_logdir}/main.log
wget ftp://ftp.fu-berlin.de/unix/www/apache/httpd/mod_fcgid/mod_fcgid-${MOD_FCGID_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot Download mod_fcgid-${MOD_FCGID_VERSION}"
fi
else
echo_skipped
fi
echononl "\tMove (backup) existing source directory ..."
if [ -d "$_builddir_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.${_backup_date}" >> ${_logdir}/main.log
mv $_builddir_fcgid $_builddir_fcgid.${_backup_date} >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir_fcgid}\" .."
fi
else
echo_skipped
fi
if [ -d "${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}" ]; then
echo "" >> ${_logdir}/main.log
echo "## - Backup directory ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.." >> ${_logdir}/main.log
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}.${_backup_date}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir_fcgid}\" .."
fi
fi
## - Unpack mod_fcgid
## -
echo "" >> ${_logdir}/main.log
echo "## - Unpack mod_fcgid-${MOD_FCGID_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "gunzip < ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.tar.gz | tar -xpf -" >> ${_logdir}/main.log
echononl "\tUnpack mod_fcgid-${MOD_FCGID_VERSION}.tar.gz.."
gunzip < ${_srcdir}/mod_fcgid-${MOD_FCGID_VERSION}.tar.gz | tar -xpf - >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack mod_fcgid-${MOD_FCGID_VERSION}.tar.gz"
fi
echo "" >> ${_logdir}/main.log
echo "chown -R root.root mod_fcgid-${MOD_FCGID_VERSION}" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
chown -R root.root mod_fcgid-${MOD_FCGID_VERSION} || fatal "Changing permissions of \"mod_fcgid-${MOD_FCGID_VERSION}\" failed"
echo "" >> ${_logdir}/main.log
echo "## - Rename mod_fcgid-${MOD_FCGID_VERSION} to `basename $_builddir_fcgid` .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mv mod_fcgid-${MOD_FCGID_VERSION} $_builddir_fcgid" >> ${_logdir}/main.log
echononl "\tRename mod_fcgid-${MOD_FCGID_VERSION} to `basename $_builddir_fcgid` .."
mv mod_fcgid-${MOD_FCGID_VERSION} $_builddir_fcgid
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot rename mod_fcgid-${MOD_FCGID_VERSION} to $_builddir_fcgid"
fi
echo "" >> ${_logdir}/main.log
echo "cd $_builddir_fcgid" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_builddir_fcgid || fatal "Changing Directory (cd) to \"${_builddir_fcgid}\" failed"
## - Build and install mod_fcgid
## -
[ -f "$APXS" ] || fatal "Cannot find \"$APXS\""
echo "" >> ${_logdir}/main.log
echo "## - Configure (configure.apxs) mod_fcgid.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_fcgid-configure.apxs.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "APXS=$APXS ./configure.apxs > ${_logdir}/mod_fcgid-configure.apxs.log 2>&1" >> ${_logdir}/main.log
echononl "\tConfigure (configure.apxs) mod_fcgid .."
APXS=$APXS ./configure.apxs > ${_logdir}/mod_fcgid-configure.apxs.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot configure (configure.apxs) mod_fcgid. See ${_logdir}/mod_fcgid-configure.apxs.log"
fi
echo "" >> ${_logdir}/main.log
echo "## - Build (make) mod_fcgid.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_fcgid-make.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make > ${_logdir}/mod_fcgid-make.log 2>&1" >> ${_logdir}/main.log
echononl "\tBuild (make) mod_fcgid.."
make > ${_logdir}/mod_fcgid-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot build (make) mod_fcgid. See ${_logdir}/mod_fcgid-make.log."
fi
echo "" >> ${_logdir}/main.log
echo "## - Install (make install) mod_fcgid .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_fcgid-make_install.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/mod_fcgid-make_install.log 2>&1" >> ${_logdir}/main.log
echononl "\tInstall (make install) mod_fcgid .."
make install > ${_logdir}/mod_fcgid-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot install (make install) mod_fcgid. See ${_logdir}/mod_fcgid-make_install.log"
fi
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Adjust mod_fcgid module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
perl -i.bak -n -p -e "s#^(\s*LoadModule\s+fcgid_module.+)#\1\n<IfModule mod_fcgid.c>\n\n \# in Abstimmung mit PHP variablen\n \# upload_max_filesize = 128M\n \# post_max_size = 512M\n FcgidMaxRequestLen 536870912\n\n \# By default, PHP FastCGI processes exit after handling 500 requests,\n \# and they may exit after this module has already connected to the\n \# application and sent the next request. When that occurs, an error\n \# will be logged and 500 Internal Server Error will be returned to\n \# the client. This PHP behavior can be disabled by setting\n \# PHP_FCGI_MAX_REQUESTS to 0, but that can be a problem if the PHP\n \# application leaks resources. Alternatively, PHP_FCGI_MAX_REQUESTS\n \# can be set to a much higher value than the default to reduce the\n \# frequency of this problem. FcgidMaxRequestsPerProcess can be set to\n \# a value less than or equal to PHP_FCGI_MAX_REQUESTS to resolve the\n \# roblem.\n FcgidMaxRequestsPerProcess 500\n\n \# in Abstimmung mit PHP Variablen\n \# max_execution_time = 180\n \#\n \# Default: 40\n \#\n \#FcgidIOTimeout 181\n FcgidIOTimeout 600\n FcgidIdleTimeout 600\n FcgidProcessLifeTime 600\n FcgidConnectTimeout 600\n\n</IfModule>#" \$_httpdconf
EOF
echononl "\thttpd.conf: Adjust mod_fcgid module.."
perl -i.bak -n -p -e "s#^(\s*LoadModule\s+fcgid_module.+)#\1\n<IfModule mod_fcgid.c>\n\n \# in Abstimmung mit PHP variablen\n \# upload_max_filesize = 128M\n \# post_max_size = 512M\n FcgidMaxRequestLen 536870912\n\n \# By default, PHP FastCGI processes exit after handling 500 requests,\n \# and they may exit after this module has already connected to the\n \# application and sent the next request. When that occurs, an error\n \# will be logged and 500 Internal Server Error will be returned to\n \# the client. This PHP behavior can be disabled by setting\n \# PHP_FCGI_MAX_REQUESTS to 0, but that can be a problem if the PHP\n \# application leaks resources. Alternatively, PHP_FCGI_MAX_REQUESTS\n \# can be set to a much higher value than the default to reduce the\n \# frequency of this problem. FcgidMaxRequestsPerProcess can be set to\n \# a value less than or equal to PHP_FCGI_MAX_REQUESTS to resolve the\n \# roblem.\n FcgidMaxRequestsPerProcess 500\n\n \# in Abstimmung mit PHP Variablen\n \# max_execution_time = 180\n \#\n \# Default: 40\n \#\n \#FcgidIOTimeout 181\n FcgidIOTimeout 600\n FcgidIdleTimeout 600\n FcgidProcessLifeTime 600\n FcgidConnectTimeout 600\n\n</IfModule>#" $_httpdconf
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Adjusting mod_fcgid (file: /usr/local/apache2/conf/httpd.conf) failed"
fi
fi
if $WITH_MOD_PERL ; then
## - Install Apache Module mod_perl
## -
echo
echo
echo -e "\t---"
echo -e "\t--- Install mod_perl $MOD_PERL_VERSION --"
echo -e "\t---"
echo
echo "" >> ${_logdir}/main.log
echo "cd $_srcdir" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_srcdir
echononl "\tGet source mod_perl-${MOD_PERL_VERSION}.tar.gz.."
if [ ! -f mod_perl-${MOD_PERL_VERSION}.tar.gz ]; then
echo "" >> ${_logdir}/main.log
echo "## - Get source mod_perl-${MOD_PERL_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "wget https://www.apache.org/dist/perl/mod_perl-${MOD_PERL_VERSION}.tar.gz" >> ${_logdir}/main.log
wget https://www.apache.org/dist/perl/mod_perl-${MOD_PERL_VERSION}.tar.gz >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot Download mod_perl-${MOD_PERL_VERSION}"
fi
else
echo_skipped
fi
echononl "\tMove (backup) existing source directory ..."
if [ -d "$_builddir_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.${_backup_date}" >> ${_logdir}/main.log
mv $_builddir_perl $_builddir_perl.${_backup_date} >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir_perl}\" .."
fi
else
echo_skipped
fi
if [ -d "${_srcdir}/mod_perl-${MOD_PERL_VERSION}" ]; then
echo "" >> ${_logdir}/main.log
echo "## - Backup directory ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.." >> ${_logdir}/main.log
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}.${_backup_date}
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir_perl}\" .."
fi
fi
## - Unpack mod_perl
## -
echo "" >> ${_logdir}/main.log
echo "## - Unpack mod_perl-${MOD_PERL_VERSION}.tar.gz.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "gunzip < ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.tar.gz | tar -xpf -" >> ${_logdir}/main.log
echononl "\tUnpack mod_perl-${MOD_PERL_VERSION}.tar.gz.."
gunzip < ${_srcdir}/mod_perl-${MOD_PERL_VERSION}.tar.gz | tar -xpf - >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack mod_perl-${MOD_PERL_VERSION}.tar.gz"
fi
echo "" >> ${_logdir}/main.log
echo "chown -R root.root mod_perl-${MOD_PERL_VERSION}" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
chown -R root.root mod_perl-${MOD_PERL_VERSION} || fatal "Changing permissions of \"mod_perl-${MOD_PERL_VERSION}\" failed"
echo "" >> ${_logdir}/main.log
echo "## - Rename mod_perl-${MOD_PERL_VERSION} to `basename $_builddir_perl` .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mv mod_perl-${MOD_PERL_VERSION} $_builddir_perl" >> ${_logdir}/main.log
echononl "\tRename mod_perl-${MOD_PERL_VERSION} to `basename $_builddir_perl` .."
mv mod_perl-${MOD_PERL_VERSION} $_builddir_perl
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot rename mod_perl-${MOD_PERL_VERSION} to $_builddir_perl"
fi
echo "" >> ${_logdir}/main.log
echo "cd $_builddir_perl" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
cd $_builddir_perl || fatal "Changing Directory (cd) to \"${_builddir_perl}\" failed"
## - Build and install mod_perl
## -
[ -f "$APXS" ] || fatal "Cannot find \"$APXS\""
echo "" >> ${_logdir}/main.log
echo "## - Configure mod_perl.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_perl-configure.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "perl Makefile.PL MP_AP_PREFIX=$PREFIX > ${_logdir}/mod_perl-configure.log 2>&1" >> ${_logdir}/main.log
echononl "\tConfigure mod_perl .."
perl Makefile.PL MP_AP_PREFIX=$PREFIX > ${_logdir}/mod_perl-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot configure (configure.apxs) mod_perl. See ${_logdir}/mod_perl-configure.apxs.log"
fi
echo "" >> ${_logdir}/main.log
echo "## - Build (make) mod_perl.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_perl-make.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make > ${_logdir}/mod_perl-make.log 2>&1" >> ${_logdir}/main.log
echononl "\tBuild (make) mod_perl.."
make > ${_logdir}/mod_perl-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot build (make) mod_perl. See ${_logdir}/mod_perl-make.log."
fi
echo "" >> ${_logdir}/main.log
echo "## - Install (make install) mod_perl .." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - See ${_logdir}/mod_perl-make_install.log" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "make install > ${_logdir}/mod_perl-make_install.log 2>&1" >> ${_logdir}/main.log
echononl "\tInstall (make install) mod_perl .."
make install > ${_logdir}/mod_perl-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot install (make install) mod_perl. See ${_logdir}/mod_perl-make_install.log"
fi
echo "" >> ${_logdir}/main.log
echo "## - httpd.conf: Load perl module.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
## - Linenumber last occurrence of "LoadModule .."
_lineNumber=`perl -ne '{$n=$. if /^LoadModule/} END {print "$n\n"}' $_httpdconf`
sed -i "$_lineNumber s/^\(\s*LoadModule\s.*$\)/LoadModule perl_module modules\/mod_perl.so\n\1/g" $_httpdconf
EOF
echononl "\thttpd.conf: Load perl module.."
## - Linenumber of last occurrence of "LoadModule .." line
_lineNumber=`perl -ne '{$n=$. if /^LoadModule/} END {print "$n\n"}' $_httpdconf`
#sed -i "$_lineNumber s/^\(\s*LoadModule\s.*$\)/LoadModule perl_module modules\/mod_perl.so\n\1/g" $_httpdconf >> ${_logdir}/main.log 2>&1
perl -pi -e "s/^(\s*LoadModule\s.*$)/LoadModule perl_module modules\/mod_perl.so\n\1/ if $. == $_lineNumber" $_httpdconf >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Loading perl module (file: /usr/local/apache2/conf/httpd.conf) failed"
fi
fi # if $WITH_MOD_PERL
## - Some final tasks
## -
echo
echo
echo -e "\t---"
echo -e "\t--- Some final tasks --"
echo -e "\t---"
echo
if $WITH_MOD_PHP ; then
# - If PHP version $PHP_VERSION is already installed
# -
if [[ -d "/usr/local/php-${PHP_VERSION}-httpd-${APACHE_VERSION}" ]] \
&& [[ -d "/usr/local/src/php/php-${PHP_VERSION}_httpd-${APACHE_VERSION}" ]]; then
echo "" >> ${_logdir}/main.log
echo "## - Change into directory /usr/local/src/php/${PHP_VERSION}_${APACHE_VERSION}" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "cd \"/usr/local/src/php/php-${PHP_VERSION}_httpd-${APACHE_VERSION}\"" >> ${_logdir}/main.log
cd "/usr/local/src/php/php-${PHP_VERSION}_httpd-${APACHE_VERSION}" >> ${_logdir}/main.log
if [[ $? -eq 0 ]]; then
echo "" >> ${_logdir}/main.log
echo "## - make install for PHP Version ${PHP_VERSION}" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\t'make install' for PHP Version ${PHP_VERSION}"
make install > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
error "make install for PHP Version ${PHP_VERSION} failed"
fi
fi
PHP_MAJOR_VERSION="$(echo $PHP_VERSION | cut -d '.' -f1)"
echo "" >> ${_logdir}/main.log
echo "## - Adjust httpd.conf for handling mod_php.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
cat <<EOF >> ${_logdir}/main.log
sed -i -r -e "s&(^\s*LoadModule php${PHP_MAJOR_VERSION}_module.*$)&\1\n<IfModule mod_php${PHP_MAJOR_VERSION}.c>\n AddType application/x-httpd-php .php\n AddType application/x-httpd-php-source .phps\n</IfModule>&" ${PREFIX}/conf/httpd.conf
EOF
echononl "\tAdjust httpd.conf for handling mod_php.."
sed -i -r \
-e "s&(^\s*LoadModule php${PHP_MAJOR_VERSION}_module.*$)&\1\n<IfModule mod_php${PHP_MAJOR_VERSION}.c>\n AddType application/x-httpd-php .php\n AddType application/x-httpd-php-source .phps\n</IfModule>&" ${PREFIX}/conf/httpd.conf
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fatal "Loading perl module (file: /usr/local/apache2/conf/httpd.conf) failed"
fi
echo ""
fi
fi
if $SYMLINK_INSTALL_DIR ; then
echononl "\tRemove Symlink /usr/local/apache2.."
if [[ -h "/usr/local/apache2" ]]; then
echo "" >> ${_logdir}/main.log
echo "## - Remove Symlink /usr/local/apache2" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
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 "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 "## -" >> ${_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
echo_ok
else
echo_failed
warn "Setting symlink /usr/local/apache2 failed"
fi
fi
if $INIT_SCRIPT_SUPPORTED ; then
## - 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
echononl "\tAdd Block for run-time dependencies to 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
# Required-Start: \\\$local_fs \\\$remote_fs \\\$network \\\$syslog \\\$named
# Required-Stop: \\\$local_fs \\\$remote_fs \\\$network \\\$syslog \\\$named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop apache2 web server
### END INIT INFO
EOF" >> ${_logdir}/main.log
cat << EOF >$PREFIX/bin/apachectl
#!/bin/sh
### BEGIN INIT INFO
# Provides: apache2
# Required-Start: \$local_fs \$remote_fs \$network \$syslog \$named
# Required-Stop: \$local_fs \$remote_fs \$network \$syslog \$named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# 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
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
echo "## - apachectl: Set STATUSURL=\"$STATUS_URL\".." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "perl -i -n -p -e \"s#^(\s*STATUSURL=.*)#STATUSURL=\\\"$STATUS_URL\\\"#\" $PREFIX/bin/apachectl" > /dev/null 2<&1
echononl "\tapachectl: Set STATUSURL=\"$STATUS_URL\".."
perl -i -n -p -e "s#^(\s*STATUSURL=.*)#STATUSURL=\"$STATUS_URL\"#" $PREFIX/bin/apachectl > /dev/null 2<&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Setting STATUSURL in script apachectl failed!"
fi
if $INIT_SCRIPT_SUPPORTED ; then
echo "" >> ${_logdir}/main.log
echo "## - Set Symlink /etc/init.d/apache2.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
#echo "ln -s $PREFIX/bin/apachectl /etc/init.d/apache2" >> ${_logdir}/main.log
echo "ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache2" >> ${_logdir}/main.log
echononl "\tSet Symlink /etc/init.d/apache2.."
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache2 >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Setting symlink /usr/local/apache2 failed."
fi
echononl "\tSet umask to $UMASK in \"envvars\" .."
if $SET_UMASK ; then
cat <<EOF >> ${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
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=false
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=false
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
echo "" >> ${_logdir}/main.log
echo "## - Replace '$PREFIX' with '/usr/local/apache2' in service file.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "perl -i -n -p -e \"s#$PREFIX#/usr/local/apache2#g\" /etc/systemd/system/apache2.service" >> ${_logdir}/main.log
echo -e "\tReplace '$PREFIX' with"
echononl "\t '/usr/local/apache2' in service file.."
perl -i -n -p -e "s#$PREFIX#/usr/local/apache2#g" /etc/systemd/system/apache2.service >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Replacing '$PREFIX' with '/usr/local/apache2' in service file failed."
fi
fi
echononl "\tSet umask to $UMASK in \"envvars\" .."
if $SET_UMASK ; then
cat <<EOF >> ${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
echononl "\tReload systemd.."
if $SYSTEMD_SUPPORTED ; then
systemctl daemon-reload > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Reloading systemd.. failed!"
fi
else
echo_skipped
fi
## - Make apache start at boottime
## -
echo "" >> ${_logdir}/main.log
echononl "\tMake apache start at boottime"
echo "## - Make apache start at boottime" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
if $SYSTEMD_SUPPORTED ; then
echo "systemctl enable apache2" >> ${_logdir}/main.log
systemctl enable apache2 >> ${_logdir}/main.log 2>&1
else
echo "update-rc.d apache2 defaults" >> ${_logdir}/main.log
update-rc.d apache2 defaults >> ${_logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Making apache2 start at boottime failed."
fi
fi
echo ""
## - special for debian. set manpath entries
## -
if [ -f /etc/manpath.config ];then
echo "" >> ${_logdir}/main.log
echo "## - Set manpath entries in /etc/manpath.config" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tSet manpath entries in /etc/manpath.config"
if ! grep /usr/local/apache2/man /etc/manpath.config > /dev/null 2<&1 ; then
echo "echo >> /etc/manpath.config" >> ${_logdir}/main.log
echo "echo \"MANDATORY_MANPATH /usr/local/apache2/man /var/cache/man\" >> /etc/manpath.config" >> ${_logdir}/main.log
echo "echo \"MANPATH_MAP /usr/local/apache2/bin /usr/local/apache2/man\" >> /etc/manpath.config" >> ${_logdir}/main.log
echo "echo \"MANDB_MAP /usr/local/apache2/man /var/cache/man\" >> /etc/manpath.config" >> ${_logdir}/main.log
echo >> /etc/manpath.config
echo "MANDATORY_MANPATH /usr/local/apache2/man /var/cache/man" >> /etc/manpath.config
echo "MANPATH_MAP /usr/local/apache2/bin /usr/local/apache2/man" >> /etc/manpath.config
echo "MANDB_MAP /usr/local/apache2/man /var/cache/man" >> /etc/manpath.config
echo_ok
else
echo_skipped
fi
elif [ -f /etc/man.conf];then
echo "" >> ${_logdir}/main.log
echo "## - Set manpath entries in /etc/man.conf" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tSet manpath entries in /etc/man.conf"
if ! grep /opt/apache2/man /etc/man.conf > /dev/null 2<&1 ; then
echo >> /etc/man.conf
echo "MANPATH /opt/apache2/man /var/cache/man" >> /etc/man.conf
echo "MANPATH_MAP /opt/apache2/bin /opt/apache2/man" >> /etc/man.conf
echo_ok
else
echo_skipped
fi
fi
## - Add /usr/local/apache/bin to the systems PATH variable
## -
_checkdir=`dirname $PREFIX`/apache2/bin
if [ -f /etc/profile ]; then
echo "" >> ${_logdir}/main.log
echo "## - Add /usr/local/apache/bin to the systems PATH variable.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echononl "\tAdd /usr/local/apache/bin to the systems PATH variable.."
if ! grep -e "$_checkdir" /etc/profile > /dev/null 2<&1 ; then
echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \\\"\\\\\$check_dir\\\" ];then\n PATH=\\\\\${check_dir}:\\\\\$PATH\nfi\n\n\1#\" /etc/profile > /dev/null 2<&1" >> ${_logdir}/main.log
perl -i -n -p -e "s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \"\\\$check_dir\" ];then\n PATH=\\\${check_dir}:\\\$PATH\nfi\n\n\1#" /etc/profile > /dev/null 2<&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding /usr/local/apache/bin to the systems PATH variable failed."
fi
else
echo_skipped
fi
fi
## - Add additional SSL configuration (HSTS) file: 000-additional-ssl-settings.conf
## -
echo "" >> ${_logdir}/main.log
echo "## - Add additional SSL configuration (HSTS) file: 000-additional-ssl-settings.conf.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tAdd additional SSL configuration (HSTS) file: 000-additional-ssl-settings.conf.."
cat <<EOF > ${PREFIX}/conf/vhosts/000-additional-ssl-settings.conf
<IfModule mod_headers.c>
# - HTTP Strict Transport Security (HSTS)
# -
# - HSTS tells a browser that the website should only be accessed through
# - a secure connection. The HSTS header will be remembered by a standard
# compliant browser for max-age seconds.
# -
# - Remember this settings for 1 year
# -
Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding config file 000-logformat.conf failed."
fi
## - Add default vhost configuration file 000-default.conf
## -
echo "" >> ${_logdir}/main.log
echo "## - Add default vhost configuration file 000-default.conf.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tAdd default vhost configuration file 000-default.conf.."
cat <<EOF > ${PREFIX}/conf/vhosts/000-default.conf
## - initial konfiguration -- ##
## - ipv4: $IPv4_FIRST
EOF
if [ -n "$IPv6_FIRST" ];then
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
## - ipv6: $IPv6_FIRST
EOF
fi
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
## - Configures mutex mechanism and lock file directory for all or specified mutexes.
## - Specify 'default' as the second argument to change the settings for all mutexes.
## -
Mutex file:/var/log/apache2/ssl_mutex default
SSLCompression off
SSLStrictSNIVHostCheck off
DirectoryIndex index.html index.htm index.php index.php5
<Directory "${BASE_WEBSPACE_DIR}">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
## - 127.0.0.1 (used by apachectl status) -- #
<VirtualHost 127.0.0.1:80>
ServerName localhost.localdomain
ServerAlias localhost
DocumentRoot "$GLOBAL_DOC_ROOT"
EOF
if [[ ${#_php_socket_arr[@]} -gt 0 ]] ; then
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
## - Make PHP-FPM status page and PHP-FPM ping available
## -
EOF
for _val in ${_php_socket_arr[@]} ; do
IFS=':' read -a _val_arr <<< "${_val}"
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
<FilesMatch "^(status-${_val_arr[0]}|ping-${_val_arr[0]})">
SetHandler "proxy:unix:${_val_arr[1]}|fcgi://127.0.0.1"
</FilesMatch>
EOF
done
else
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
## - Make PHP-FPM status page and PHP-FPM ping available
## -
#<FilesMatch "^(status-<PHP-FPM-VERSION>|ping-<PHP-FPM-VERSION>)$">
# SetHandler "proxy:unix:<PHP-FPM-SOCKET>|fcgi://127.0.0.1"
#</FilesMatch>
EOF
fi
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
CustomLog /var/log/apache2/localhost.log combined
ErrorLog /var/log/apache2/localhost.error
</VirtualHost>
EOF
_default_ipv4=false
_default_ipv6=false
if [[ -n "${IPv4_FIRST}" ]]; then
_default_ipv4=true
fi
if [[ -n "${IPv6_FIRST}" ]]; then
_default_ipv6=true
fi
_vhost_default_80="<VirtualHost"
_vhost_default_443="<VirtualHost"
#if $_default_ipv4 && $_default_ipv6 ; then
# for _ipv4 in $IPv4_ADDRESSESa; do
# _vhost_default_80="$_vhost_default_80 $IPv4_ADDRESSES:80"
# _vhost_default_443="$_vhost_default_443 $IPv4_ADDRESSES:443"
# done
# for _ipv6 in $IPv6_ADDRESSES ; do
# _vhost_default_80="$_vhost_default_80 [${_ipv6}]:80"
# _vhost_default_443="$_vhost_default_80 [${_ipv6}]:443"
# done
#elif $_default_ipv4 ; then
# for _ipv4 in $IPv4_ADDRESSESa; do
# _vhost_default_80="$_vhost_default_80 $IPv4_ADDRESSES:80"
# _vhost_default_443="$_vhost_default_443 $IPv4_ADDRESSES:443"
# done
#elif $_default_ipv6 ; then
# for _ipv6 in $IPv6_ADDRESSES ; do
# _vhost_default_80="$_vhost_default_80 [${_ipv6}]:80"
# _vhost_default_443="$_vhost_default_443 [${_ipv6}]:443"
# done
#fi
if $_default_ipv4 ; then
for _ipv4 in $IPv4_ADDRESSES; do
[[ "$_ipv4" = "127.0.0.1" ]] && continue
_vhost_default_80="$_vhost_default_80 $_ipv4:80"
_vhost_default_443="$_vhost_default_443 $_ipv4:443"
done
fi
if $_default_ipv6 ; then
for _ipv6 in $IPv6_ADDRESSES ; do
_vhost_default_80="$_vhost_default_80 [${_ipv6}]:80"
_vhost_default_443="$_vhost_default_443 [${_ipv6}]:443"
done
fi
_vhost_default_80="$_vhost_default_80>"
_vhost_default_443="$_vhost_default_443>"
if $_default_ipv4 || $_default_ipv6 ; then
cat <<EOF >> ${PREFIX}/conf/vhosts/000-default.conf
$_vhost_default_80
ServerName dummy.${_DOMAIN}.$_TLD
RewriteEngine On
RewriteCond %{HTTP_HOST} ^autoconfig\. [NC]
RewriteRule ^/(.*) http://autoconfig.${_DOMAIN}.${_TLD}/\$1 [L,R=301,NE]
#RewriteCond %{HTTP_HOST} !^autoconfig\. [NC]
#RewriteRule ^/(.*) http://www.${_DOMAIN}.${_TLD} [L,R=301,NE]
DocumentRoot "$GLOBAL_DOC_ROOT"
CustomLog /var/log/apache2/dummy.${_DOMAIN}.${_TLD}.log combined
ErrorLog /var/log/apache2/dummy.${_DOMAIN}.${_TLD}.error
</VirtualHost>
$_vhost_default_443
ServerName dummy.${_DOMAIN}.$_TLD
DocumentRoot "$GLOBAL_DOC_ROOT"
# ==========
# - HTTP security Headers
# ==========
# - X-Frame-Options
# -
# - The X-Frame-Options header (RFC), or XFO header, protects your visitors
# - against clickjacking attacks. An attacker can load up an iframe on their
# - site and set your site as the source, it's quite easy:
# -
# - <iframe src="https://scotthelme.co.uk"></iframe>
# -
# - Using some crafty CSS they can hide your site in the background and create some
# - genuine looking overlays. When your visitors click on what they think is a harmless
# - link, they're actually clicking on links on your website in the background. That
# - might not seem so bad until we realise that the browser will execute those requests
# - in the context of the user, which could include them being logged in and authenticated
# - to your site!
# -
# - Troy Hunt has a great blog on 'Clickjack attack the hidden threat right in front :
# - of you':
# -
# - http://www.troyhunt.com/2013/05/clickjack-attack-hidden-threat-right-in.html
# -
# - Valid values include DENY meaning your site can't be framed, SAMEORIGIN which allows
# - you to frame your own site or ALLOW-FROM https://example.com/ which lets you specify
# -sites that are permitted to frame your own site.
# -
Header always set X-Frame-Options "SAMEORIGIN"
# - X-Xss-Protection
# -
# - This header is used to configure the built in reflective XSS protection found
# - in Internet Explorer, Chrome and Safari (Webkit). Valid settings for the header
# - are 0, which disables the protection, 1 which enables the protection
# - and 1; mode=block which tells the browser to block the response if it
# - detects an attack rather than sanitising the script.
# -
Header always set X-Xss-Protection "1; mode=block"
# - X-Content-Type-Options
# -
# - Nice and easy to configure, this header only has one valid value, nosniff.
# - It prevents Google Chrome and Internet Explorer from trying to mime-sniff
# - the content-type of a response away from the one being declared by the server.
# - It reduces exposure to drive-by downloads and the risks of user uploaded content
# - that, with clever naming, could be treated as a different content-type, like
# - an executable.
# -
Header always set X-Content-Type-Options "nosniff"
# - Content Security Policy
# -
# - The CSP header allows you to define a whitelist of approved sources of content
# - for your site. By restricting the assets that a browser can load for your site,
# - like js and css, CSP can act as an effective countermeasure to XSS attacks. I
# - have covered CSP in a lot more detail in my blog Content Security Policy - An
# - Introduction (https://scotthelme.co.uk/content-security-policy-an-introduction/).
# -
# - Here is a basic policy to enforce TLS on all assets and prevent
# - mixed content warnings.
# -
# - Allow Google Analytics, Google AJAX CDN and Same Origin
# - script-src 'self' www.google-analytics.com ajax.googleapis.com;
# -
# - Emmbedding Google Fonts
# - style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
# -
# - Allow YouTube Videos (iframe embedded)
# - frame-src 'self' https://www.youtube.com
# -
#Header always set Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval' ; object-src 'none'"
Header always set Content-Security-Policy "default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' ; img-src 'self' data: https: ; connect-src 'self'; font-src 'self'; object-src 'self'; media-src 'self' ; frame-src 'self'; worker-src 'self'; form-action 'self'; base-uri 'self'; frame-ancestors 'self'; upgrade-insecure-requests"
# - Referrer-Policy
# -
# - The HTTP referer (originally a misspelling of referrer[1]) is an HTTP header
# - field that identifies the address of the webpage (i.e. the URI or IRI) that
# - linked to the resource being requested. By checking the referrer, the new
# - webpage can see where the request originated.
# -
Header set Referrer-Policy "strict-origin-when-cross-origin"
# - HTTP Strict Transport Security (HSTS)
# -
# - HSTS tells a browser that the website should only be accessed through
# - a secure connection. The HSTS header will be remembered by a standard
# compliant browser for max-age seconds.
# -
# - Remember this settings for 1 year
# -
Header always set Strict-Transport-Security "max-age=31536000"
SSLEngine on
## - don't support weak ciphers
SSLHonorCipherOrder On
SSLCompression Off
SSLProtocol ALL -SSLv2 -SSLv3
SSLCertificateFile /usr/local/apache2/conf/server-bundle.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
CustomLog /var/log/apache2/dummy.${_DOMAIN}.${_TLD}.log combined
ErrorLog /var/log/apache2/dummy.${_DOMAIN}.${_TLD}.error
</VirtualHost>
EOF
fi
if [ -d "${PREFIX}/conf/vhosts/0" ] ; then
echo "" >> ${PREFIX}/conf/vhosts/000-default.conf
echo "Include conf/vhosts/0/*.conf" >> ${PREFIX}/conf/vhosts/000-default.conf
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding vhost configfile 0000-default.conf failed."
fi
## - Add configuration for custom log format file: 000-deflate.conf
## -
echo "## - Add configuration to enable compression: 000-deflate.conf.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tAdd configuration to enable compression: 000-deflate.conf.."
cat << EOF > ${PREFIX}/conf/vhosts/000-deflate.conf
# ---
# - Enable output compression
# ---
<IfModule mod_headers.c>
# Serve gzip compressed CSS and JS files if they exist
# and the client accepts gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.(css|js)" "\$1\.\$2\.gz" [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header append Content-Encoding gzip
# Force proxies to cache gzipped &
# non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# You can't compress what is already compressed
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:avi|mov|mp3|mp4|rm|flv|swf|mp?g)\$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
</IfModule>
<IfModule mod_deflate.c>
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '%v "%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
</IfModule>
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding config file 000-deflate.conf failed."
fi
## - Add configuration for custom log format file: 000-logformat.conf
## -
echo "## - Add configuration for custom log format file: 000-logformat.conf.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tAdd configuration for custom log format file: 000-logformat.conf.."
cat << EOF > ${PREFIX}/conf/vhosts/000-logformat.conf
## - %a remote IP-address
## - %v ServerName of requested site
## - %{%T %Y-%m-%d}t date time - custom
## - %t date time - apache default
## - %{User-Agent}i user agent
## - %U requested URL
## - %r First line of request.
## - %>s real status code
## - \$T The time taken to serve the request, in seconds
## -
LogFormat "%a %v %p %t %r %>s \"%{User-Agent}i\" %T" base_requests
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding config file 000-logformat.conf failed."
fi
echo "" >> ${_logdir}/main.log
echo "## - Create directory ${GLOBAL_DOC_ROOT}.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mkdir -p ${GLOBAL_DOC_ROOT}" >> ${_logdir}/main.log
echononl "\tCreate ${GLOBAL_DOC_ROOT}.."
mkdir -p $GLOBAL_DOC_ROOT >> ${_logdir}/main.log 2>&1
if [ "0" = $? ]; then
echo_ok
else
echo_failed
fi
## - Create ${GLOBAL_DOC_ROOT}/index.html (Error 404 page)
## -
echo "" >> ${_logdir}/main.log
echo "## - Create ${GLOBAL_DOC_ROOT}/index.html (Error 404 page).." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tCreate ${GLOBAL_DOC_ROOT}/index.html (Error 404 page).."
echo "cat << EOF > ${GLOBAL_DOC_ROOT}/index.html" >> ${_logdir}/main.log
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTTP Error 404 / Http Fehler 404</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background: #eee;
font: normal normal 16px/140% Arial, Helvetica, Trebuchet MS, Geneva, sans-serif;
word-wrap: break-word;
}
h1 {
font-size: 30px;
font-weight: bold;
line-height: 100%;
}
h2 {
font-size: 18px;
font-weight: bold;
line-height: 100%;
}
.Container {
background: #fff;
width: 825px;
}
.Content {
background: #fff;
font-size: 12px;
height: 400px;
line-height: 16px;
padding: 10px 20px;
}
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div class="Container">
<div class="Logo"></div>
<div class="Content">
<h1>HTTP Error 404</h1>
<h2>The site you have requested was not found on this Server</h2>
<p>Please check your spelling and try again.</p>
<p>Thank You very much!</p>
<h1>HTTP Fehler 404</h1>
<h2>Die von Ihnen aufgerufene Seite gibt es leider nicht - Sorry</h2>
<p>Bitte pr&uuml;fen Sie die Adresse und versuchen es nochmals.</p>
<p>Vielen Dank f&uuml;r Ihr Verst&auml;ndnis!</p>
</div><!-- .Content -->
</div><!-- .Container -->
</body>
</html>
EOF
' >> ${_logdir}/main.log
cat << EOF > ${GLOBAL_DOC_ROOT}/index.html
<!doctype html>
<html>
<head>
<title>HTTP Error 404 / Http Fehler 404</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background: #eee;
font: normal normal 16px/140% Arial, Helvetica, Trebuchet MS, Geneva, sans-serif;
word-wrap: break-word;
}
h1 {
font-size: 30px;
font-weight: bold;
line-height: 100%;
}
h2 {
font-size: 18px;
font-weight: bold;
line-height: 100%;
}
.Container {
background: #fff;
width: 825px;
}
.Content {
background: #fff;
font-size: 12px;
height: 400px;
line-height: 16px;
padding: 10px 20px;
}
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div class="Container">
<div class="Logo"></div>
<div class="Content">
<h1>HTTP Error 404</h1>
<h2>The site you have requestet was not found on this Server</h2>
<p>Please check your spelling and try again.</p>
<p>Thank You very much!</p>
<h1>HTTP Fehler 404</h1>
<h2>Die von Ihnen aufgerufene Seite gibt es leider nicht - Sorry</h2>
<p>Bitte pr&uuml;fen Sie die Adresse und versuchen es nochmals.</p>
<p>Vielen Dank f&uuml;r Ihr Verst&auml;ndnis!</p>
</div><!-- .Content -->
</div><!-- .Container -->
</body>
</html>
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Creating ${GLOBAL_DOC_ROOT}/index.html (Error 404 page) failed."
fi
echo "" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "## - Configure logrotation.." >> ${_logdir}/main.log
echononl "\tConfigure logrotation...."
if [ ! -f "/etc/logrotate.d/apache2" ]; then
cat <<EOF > /etc/logrotate.d/apache2
/var/log/apache2/*log
/var/log/apache2/*error
/var/www/*/logs/*log
/var/www/*/logs/*error {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
postrotate
if ls /var/www/*/logs/php_errors.log > /dev/null 2>&1 ; then
chown ${HTTPD_USER}:${HTTPD_GROUP} /var/www/*/logs/php_errors.log
fi
if [ -f "/var/log/apache2/php_errors.log" ] ; then
chown ${HTTPD_USER}:${HTTPD_GROUP} /var/log/apache2/php_errors.log
fi
if [ -x "/usr/local/apache2/bin/apachectl" ]; then
APACHECTL="/usr/local/apache2/bin/apachectl"
else
APACHECTL="\$(which apachectl)"
fi
if [ -z "\$APACHECTL" ] ; then
if [ -f "/etc/init.d/apache2" ]; then
/etc/init.d/apache2 reload > /dev/null
else
echo "Reloading apache service failed!"
fi
else
\$APACHECTL graceful > /dev/null
fi
endscript
}
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
else
echo_skipped
fi
# - Try to restote vhost configuration from (current) installation
# -
echononl "\tTry to restore vhost configurations from current installation.."
if [[ -n "$_httpd_current_version" ]]; then
_failed=false
_done=false
echo "" >> ${_logdir}/main.log
echo "## - Try to restore vhost configurations from (current) installation.." >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
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-default ]]; 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
else
echo_skipped
fi # if [[ -n "$_httpd_current_version" ]]
# ---
# - Start apache webservice
# ---
echo "" >> ${_logdir}/main.log
echo "" >> ${_logdir}/main.log
echo "## - Start Apache Webserver" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo ""
echononl "\tStarting Apache Webserver.."
if $SYSTEMD_SUPPORTED ; then
echo "systemctl start apache2" >> ${_logdir}/main.log
systemctl start apache2 >> ${_logdir}/main.log 2>&1
else
echo "/etc/init.d/apache2 start" >> ${_logdir}/main.log
/etc/init.d/apache2 start >> ${_logdir}/main.log 2>&1
fi
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Starting Apache Webservice failed!."
fi
# ---
# - Reenable crontab for user root
# ---
echo
echononl "\tReenable crontab for user root .."
echo "" >> ${_logdir}/main.log
echo "Reenable crontab for user root" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "crontab -u root $_CRONTAB_BAKUP_FILE" >> ${_logdir}/main.log
crontab -u root $_CRONTAB_BAKUP_FILE >> ${_logdir}/main.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "\tRemove crontab backup file .."
echo "" >> ${_logdir}/main.log
echo "## - Remove crontab backup file" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "rm $_CRONTAB_BAKUP_FILE" >> ${_logdir}/main.log
rm -f $_CRONTAB_BAKUP_FILE
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
## -----
## - Rename /etc/mysql/my.cnf if MySQL is not installed from debian package system
## -----
if [[ -d "/usr/local/mysql" ]]; then
if [[ -f "/etc/mysql/my.cnf" ]] && [[ ! -h "/etc/mysql/my.cnf" ]]; then
echononl "\tRename '/etc/mysql/my.cnf' to '/etc/mysql/my.cnf.DEBIAN' .."
echo "" >> ${_logdir}/main.log
echo "## - Rename '/etc/mysql/my.cnf' to '/etc/mysql/my.cnf.DEBIAN'" >> ${_logdir}/main.log
echo "## -" >> ${_logdir}/main.log
echo "mv \"/etc/mysql/my.cnf\" \"/etc/mysql/my.cnf.DEBIAN\"" >> ${_logdir}/main.log
mv "/etc/mysql/my.cnf" "/etc/mysql/my.cnf.DEBIAN" > ${_logdir}/main.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fi
fi
fi
cd $pwd
echo
clean_up 0