# lib/apache # Functions to control configuration and operation of apache web server # Dependencies: # # - ``functions`` file # -``STACK_USER`` must be defined # lib/apache exports the following functions: # # - is_apache_enabled_service # - install_apache_wsgi # - config_apache_wsgi # - enable_apache_site # - disable_apache_site # - start_apache_server # - stop_apache_server # - restart_apache_server # Save trace setting XTRACE=$(set +o | grep xtrace) set +o xtrace # Allow overriding the default Apache user and group, default to # current user and his default group. APACHE_USER=${APACHE_USER:-$STACK_USER} APACHE_GROUP=${APACHE_GROUP:-$(id -gn $APACHE_USER)} # Set up apache name and configuration directory if is_ubuntu; then APACHE_NAME=apache2 APACHE_CONF_DIR=sites-available elif is_fedora; then APACHE_NAME=httpd APACHE_CONF_DIR=conf.d elif is_suse; then APACHE_NAME=apache2 APACHE_CONF_DIR=vhosts.d fi # Functions # --------- # is_apache_enabled_service() checks if the service(s) specified as arguments are # apache enabled by the user in ``APACHE_ENABLED_SERVICES`` as web front end. # # Multiple services specified as arguments are ``OR``'ed together; the test # is a short-circuit boolean, i.e it returns on the first match. # # Uses global ``APACHE_ENABLED_SERVICES`` # APACHE_ENABLED_SERVICES service [service ...] function is_apache_enabled_service() { services=$@ for service in ${services}; do [[ ,${APACHE_ENABLED_SERVICES}, =~ ,${service}, ]] && return 0 done return 1 } # install_apache_wsgi() - Install Apache server and wsgi module function install_apache_wsgi() { # Apache installation, because we mark it NOPRIME if is_ubuntu; then # Install apache2, which is NOPRIME'd install_package apache2 libapache2-mod-wsgi # WSGI isn't enabled by default, enable it sudo a2enmod wsgi elif is_fedora; then sudo rm -f /etc/httpd/conf.d/000-* install_package httpd mod_wsgi elif is_suse; then install_package apache2 apache2-mod_wsgi # WSGI isn't enabled by default, enable it sudo a2enmod wsgi else exit_distro_not_supported "apache installation" fi } # enable_apache_site() - Enable a particular apache site function enable_apache_site() { local site=$@ if is_ubuntu; then sudo a2ensite ${site} elif is_fedora; then # fedora conf.d is only imported if it ends with .conf so this is approx the same sudo mv /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site} /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}.conf fi } # disable_apache_site() - Disable a particular apache site function disable_apache_site() { local site=$@ if is_ubuntu; then sudo a2dissite ${site} elif is_fedora; then sudo mv /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}.conf /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site} fi } # start_apache_server() - Start running apache server function start_apache_server() { start_service $APACHE_NAME } # stop_apache_server() - Stop running apache server function stop_apache_server() { if [ -n "$APACHE_NAME" ]; then stop_service $APACHE_NAME else exit_distro_not_supported "apache configuration" fi } # restart_apache_server function restart_apache_server() { restart_service $APACHE_NAME } # Restore xtrace $XTRACE # Tell emacs to use shell-script-mode ## Local variables: ## mode: shell-script ## End: