ePages 6.17 provides a new WebInterface. Major changes compared to ePages 6.16 or earlier are:

  • WebInterface configuration moved from WebInterface.conf to ServerConfig.xml

  • ASPoolDB moved from SQLite ($EPAGES_CONFIG/ASPool.db) to MySQL (/var/lib/mysql/aspooldb)

  • New service ASPoolDBCacheServer (distributes the workload to one or more RequestRouters)

  • Apache configuration moved from /etc/httpd to /etc/apache2-epages

Windows is not supported anymore.

ePages WebInterface

WebInterface Executables

The WebInterface was rewritten, following executables are new / changed by the patch:

  • ASPoolDBCacheServer/ASPoolDBCacheServer (new)

  • RequestRouter/RequestRouter

  • Service/epagesService

  • WebAdapter/lib64/FCGIAdapter-2.2.8.so

  • WebAdapter/FCGIAdapter-2.2.8.so

  • Cartridges/DE_EPAGES/Core/bin/TestServerConfig (new)

  • Cartridges/DE_EPAGES/Core/bin/ASPoolDBCacheClient (new)

  • Cartridges/DE_EPAGES/Core/bin/TestWebInterfaceConf (new)

Following executables won’t be used anymore:

  • WebAdapter/libWIApacheSSL-2.2.8.so

  • WebAdapter/FCGIAdapterSSL-2.2.8.so

  • WebAdapter/libWIApache-2.2.8.so

  • WebAdapter/libWICommon.so

  • WebAdapter/lib64/libWIApacheSSL-2.2.8.so

  • WebAdapter/lib64/FCGIAdapterSSL-2.2.8.so

  • WebAdapter/lib64/libWIApache-2.2.8.so

  • WebAdapter/lib64/libWICommon.so

FCGIAdapter-2.2.8.so now contains all functionality which formerly was splitted into those now obsolete libraries.

Starting/Stopping ePages Services

WebInterface services are started/stopped by:

application server
  • /etc/init.d/epages6 start_service

  • /etc/init.d/epages6 stop_service

request router
  • /etc/init.d/epages6 start_rr

  • /etc/init.d/epages6 stop_rr

ascache server
  • /etc/init.d/epages6 start_asc

  • /etc/init.d/epages6 stop_asc

web server
  • /etc/init.d/epages6 start_httpd

  • /etc/init.d/epages6 stop_httpd

WebInterface.conf

The new executables are configured by ServerConfig.xml, located in Shared/Config/. [GLOBAL] and [URLRewrite] are the only sections of WebInterface.conf which are still used.

For detailed information on WebInterface.conf see document ePages 6.17+ WebInterface.conf.

ServerConfig.xml

ServerConfig.xml is used to setup Request Router, ASPoolDB Cache Server and Application Server addresses.

For detailed information on WebInterface.conf see document ePages 6.17+ ServerConfig.xml.

WebInterface Request Processing

For detailed information see document ePages 6.17+ WebInterface Request Processing.

ASPoolDB MySQL Database

The ASPoolDB is now MySQL. The ASPoolDB connection is defined in Shared/Config/Database.d/ASPoolDB.conf:

[Connection]
active=1
datasource=dbi:mysql
StoreType=ASPoolDB
login=usr_aspooldb
passwd=epages
Database=aspooldb

The database is (typically) stored in /var/lib/mysql/aspooldb.

Cartridges/Cartridges.xml defines the ePages cartridges which are installed in ASPoolDB:

<DatabaseType Name="ASPoolDB" >
  <Cartridge Package="DE_EPAGES::Core" />
  <Cartridge Package="DE_EPAGES::XML" />
  <Cartridge Package="DE_EPAGES::TLE" />
  <Cartridge Package="DE_EPAGES::DataCache" />
  <Cartridge Package="DE_EPAGES::Database" />
  <Cartridge Package="DE_EPAGES::WebInterface" />
  <Cartridge Package="DE_EPAGES::Trigger" />
  <Cartridge Package="DE_EPAGES::WebInterfacePoolDB" />
</DatabaseType>

ePages Apache

Formerly, ePages specific configuration of the Apache web server was included in the standard configuration (typically) in /etc/httpd. An existing ePages specific /etc/httpd is backed up to /etc/httpd.backup-DATE (where DATE is %Y.%m.%d-%H.%M.%S, e.g. 2014.09.11-14.30.38) when updating RPM package epages-webconf (by the patch).

Apache Run Script

Now, ePages uses it’s own Apache instance. ePages Apache is started by the run script /etc/init.d/apache2-epages. The run script is used when executing /etc/init.d/epages6 start_httpd or /etc/init.d/epages6 stop_httpd.

/etc/init.d/apache2-epages executes /usr/sbin/apache2ctl-epages.

apache2ctl-epages starts Apache with the configuration in /etc/apache2-epages/.

Apache Configuration Files

Apache configuration files of the ePages instance are stored in /etc/apache2-epages/.

/etc/apache2-epages/include.txt shows all configuration files and how they are included, see section /etc/apache2-epages/include.txt.

/etc/apache2-epages/extra/httpd_main.conf:Listen ${APACHE_PORT}

The variables are defined in /etc/apache2-epages/envvars as VAR= like:

/etc/apache2-epages/envvars:APACHE_PORT=80

If you need to change the Apache configuration just change envvars, not .conf files (if possible). Unchanged .conf files will be patched by ePages, changed .conf files can’t be patched.

If you update ePages to 6.17 and if you customized /etc/httpd formerly, don’t forget to include those changes into the new /etc/apache2-epages configuration files. The old configuration you’ll find in the backup /etc/httpd.backup-DATE.

Apache environment variables might be changed in /etc/apache2-epages/envvars, although it is not necessary. Each environment variable is described in detail there, see section /etc/apache2-epages/envvars.

Note: After changing /etc/apache2-epages/envvars, ePages Apache must be restarted in order to changes take effect. Reload (kill -HUP) is not sufficient.

/etc/apache2-epages/envvars

#!/bin/bash
# envvars - default environment variables for apache2ctl

# this won't be correct after changing uid
unset HOME

ETC_DEFAULT=$(readlink -f /etc/default/epages6)
[[ -f $ETC_DEFAULT ]] || { ls -l /etc/default/epages6 $ETC_DEFAULT; exit 1; }

. /etc/default/epages6

SCRIPTNAME=apache2-epages

export APACHE_RUN_USER APACHE_RUN_GROUP APACHE_MODS_DIR APACHE_WEBADAPTER_DIR
export APACHE_MONITOR_DIR APACHE_WEBSECURE_DIR APACHE_DOCUMENT_ROOT
export APACHE_SERVER_ROOT APACHE_PERL5LIB APACHE_LD_LIBRARY_PATH
export APACHE_PID_FILE APACHE_RUN_DIR APACHE_CACHE_DIR EPAGES_SSL_PROXY
export APACHE_LOCK_DIR APACHE_LOG_DIR APACHE_ULIMIT_MAX_FILES APACHE_ARGUMENTS
export APACHE_HTTPD APACHE_ADMIN_MAIL APACHE_INSTANCE APACHE_LIB64 APACHE_VER
export APACHE_PORT APACHE_SSL_PORT APACHE_J_PORT APACHE_J_HOST
export APACHE_SERVER_NAME APACHE_SHORTURL_EXCEPT APACHE_RPAF_PROXIES
export APACHE_DOS_WHITELIST APACHE_BASE_ALLOW APACHE_MONITOR_ALLOW
export APACHE_STATUS_ALLOW APACHE_EXPORT_ALLOW APACHE_REWRITEMAP_ALLOW

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
APACHE_RUN_USER=${EPAGES_WEBUSER%:*}
APACHE_RUN_GROUP=${EPAGES_WEBGROUP%:*}

APACHE_MODS_DIR=$(httpd_modules_path)
APACHE_WEBADAPTER_DIR=$EPAGES/WebAdapter
APACHE_LIB64=/lib$(httpd_64)
APACHE_VER=$(wi_ver)
APACHE_MONITOR_DIR=$EPAGES_SHARED/Monitor
APACHE_WEBSECURE_DIR=${EPAGES_WEBSECURE:-$EPAGES/Shared/WebSecure}
APACHE_DOCUMENT_ROOT=$EPAGES_WEBROOT
APACHE_SERVER_ROOT=/etc/$SCRIPTNAME
APACHE_PERL5LIB=$(epages_perl5lib)
APACHE_LD_LIBRARY_PATH=$(epages_libs)

APACHE_PID_FILE=/var/run/$SCRIPTNAME.pid
APACHE_RUN_DIR=/var/run/$SCRIPTNAME
APACHE_CACHE_DIR=/var/cache/$SCRIPTNAME
APACHE_LOCK_DIR=/var/lock/$SCRIPTNAME

# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
APACHE_LOG_DIR=/var/log/$SCRIPTNAME

## The locale used by some modules like mod_dav
export LANG=C

## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#APACHE_LYNX='www-browser -dump'

## If you need a higher file descriptor limit adjust the following line (default is 8192):
APACHE_ULIMIT_MAX_FILES=${MAX_NOFD:+"ulimit -n $MAX_NOFD"}

## If you would like to pass arguments to the web server, add them below
APACHE_ARGUMENTS=$HTTPD_OPTS

## path to apache executable
APACHE_HTTPD=$(native_httpd_exe)

## e-mail of apache admin
APACHE_ADMIN_MAIL=root@localhost

## name of the provider name who runs the web site
APACHE_INSTANCE=${EPAGES_AMPROJECT:-${SCRIPTNAME#apache2-}}

## http(s) ports
APACHE_PORT=80
APACHE_SSL_PORT=443
APACHE_LOCAL_PORT=
APACHE_LOCAL_SSLPORT=

## epagesj connection
APACHE_J_PORT=${EPAGESJ_PORT:-8088}
APACHE_J_HOST=${EPAGESJ_HOST:-localhost}
[[ $APACHE_J_HOST != ${APACHE_J_HOST#*:} &&
   $APACHE_J_HOST = ${APACHE_J_HOST#[} ]] && APACHE_J_HOST="[$APACHE_J_HOST]" # IPv6

# Name used in http://APACHE_SERVER_NAME/
APACHE_SERVER_NAME=$(get_host_name WS)
EPAGES_SSL_PROXY=

# Do not rewrite short URL for following hosts.
# - If set, extra/httpd_mod_rewrite_shorturl_hosts.conf is
#   automatically updated each time apache is started.
APACHE_SHORTURL_EXCEPT=$(resolve_host_info WS)

# Deny access for all hosts but following list
# when website is closed.
# - If set, extra/httpd_limit_except.conf is automatically
#   updated each time apache runs with -DSITECLOSED.
APACHE_CLOSED_EXCEPT=$(resolve_host_info WS)

# List of RPAFproxy_ips, used by mod_rpaf.
# - Works only if -DRPAF is set in APACHE_ARGUMENTS.
# - Do not use mod_rpaf on SuSE operating systems!
APACHE_RPAF_PROXIES='127.0.0.1'

# Allow access from specific hosts if denial-of-service attack,
# used by mod_evasive.
# - If set, extra/httpd_mod_evasive_whitelist.conf is
#   automatically updated each time apache is started.
# - Works only if -DEVASIVE is set in APACHE_ARGUMENTS.
# - Do not use mod_evasive on 32-bit hosts or SuSE operating systems!
APACHE_DOS_WHITELIST='127.*'

# Allow access to any restricted page from specific hosts:
APACHE_BASE_ALLOW="127.0.0.1 localhost $(resolve_host_info WS)"

# Allow access to /Monitor/spy.pl additionally
# (beside APACHE_BASE_ALLOW) from specific hosts:
APACHE_MONITOR_ALLOW=
# Allow access to /server-info and /server-status additionally
# (beside APACHE_BASE_ALLOW) from specific hosts:
# - Works only if -DINFO is set in APACHE_ARGUMENTS.
APACHE_STATUS_ALLOW=
# Allow access to /WebSecure/ShopExport/ additionally
# (beside APACHE_BASE_ALLOW) from specific hosts:
APACHE_EXPORT_ALLOW=
# Allow access to /WebSecure/RewriteMap/ additionally
# (beside APACHE_BASE_ALLOW) from specific hosts:
APACHE_REWRITEMAP_ALLOW=

# load system specific environment
# the path to the local environment variable file
APACHE_ENVVARS_LOCAL=${APACHE_ENVVARS_LOCAL:-"$APACHE_SERVER_ROOT/envvars.local"}

# pick up any necessary environment variables
ENVVARS_LOCAL=$(readlink -f $APACHE_ENVVARS_LOCAL)
[[ ! -f $ENVVARS_LOCAL ]] || . $APACHE_ENVVARS_LOCAL

/etc/apache2-epages/include.txt

httpd.conf
 \_ extra/httpd_main.conf
     \_ extra/zzz-epages-httpd.conf
     |   \_ extra/httpd_rpaf_module.conf
     |   \_ extra/zzz-epages-allow.conf
     |   \_ extra/httpd_monitor_allow_additional.conf
     |   \_ extra/httpd_addhandler_additional.conf
     \_ extra/pagespeed.conf
     \_ extra/httpd-mpm.conf
     \_ extra/httpd-info.conf
     |   \_ extra/zzz-epages-allow.conf
     |   \_ extra/zzz-info-allow.conf
     \_ extra/httpd-default.conf
     \_ extra/zzz-epages-ssl.conf
     \_ extra/httpd-vhosts.conf
     |   \_ extra/httpd-vhosts_name.conf
     |   \_ extra/httpd-vhosts_default.conf
     |   |   \_ extra/httpd_mod_rewrite.conf
     |   |   |   \_ extra/httpd_loginredirect.conf
     |   |   |   \_ extra/httpd_mod_rewrite_provider.conf
     |   |   |   \_ extra/httpd_mod_rewrite_forbidden.conf
     |   |   |       \_ extra/httpd_mod_rewrite_forbidden_additional.conf
     |   |   |   \_ extra/httpd_limit.conf
     |   |   |       \_ extra/httpd_limit_except.conf
     |   |   |   \_ extra/httpd_mod_rewrite_shorturl_hosts.conf
     |   |   |   \_ extra/httpd_mod_rewrite_shorturl_cond_additional.conf
     |   |   |   \_ extra/httpd_mod_rewrite_suggest.conf
     |   |   |   \_ extra/httpd_mod_rewrite_restapi.conf
     |   |   \_ extra/httpd_log_json.conf
     |   |   \_ extra/httpd_logssl_json.conf
     |   |   \_ extra/httpd_logssl.conf
     |   \_ extra/httpd-vhosts_additional.d/*.conf
     |       \_ extra/httpd-vhosts_additional.d/empty.conf
     |       \_ extra/httpd-vhosts_additional.d/host.conf.example
     |           \_ extra/httpd_mod_rewrite_sslonly.conf
     |           \_ extra/httpd_logssl.conf
     |           \_ extra/httpd_mod_rewrite_sslproxy.conf
     |               \_ extra/httpd_mod_rewrite_suggest.conf
     \_ extra/httpd_mod_evasive.conf
     |   \_ extra/httpd_mod_evasive_whitelist.conf
     |   \_ extra/httpd_mod_evasive_additional.conf
     \_ extra/httpd_mod_reqtimeout.conf
     \_ extra/zzz-epages-websecure.conf
         \_ extra/zzz-epages-allow.conf
         \_ extra/zzz-epages-websecure.d/*.conf
             \_ extra/zzz-epages-websecure.d/rewritemap.conf
                 \_ extra/zzz-epages-allow.conf
                 \_ extra/zzz-epages-websecure.d/shopexport.conf
                     \_ extra/zzz-epages-allow.conf
                     \_ extra/zzz-epages-shopexport_allow.conf