Fix Apache site config handling on Fedora
Allow enable/disable_apache_sites() on Fedora to gracefully fail if the
config is not present. This is primarily an issue when the config from
a previous run is not completely cleaned out (unstack.sh vs clean.sh).
Make APACHE_CONFIG_DIR fully qualified and overrideable in local.conf.
Also fix Horizon's handling of its Apache config file to be removed
in clean.sh.
Change-Id: I78a5de579dd3b02fa2e4e7e00ac0aabe71b531ad
diff --git a/lib/apache b/lib/apache
index 55083e7..baf0fbc 100644
--- a/lib/apache
+++ b/lib/apache
@@ -31,13 +31,13 @@
# Set up apache name and configuration directory
if is_ubuntu; then
APACHE_NAME=apache2
- APACHE_CONF_DIR=sites-available
+ APACHE_CONF_DIR=${APACHE_CONF_DIR:-/etc/$APACHE_NAME/sites-available}
elif is_fedora; then
APACHE_NAME=httpd
- APACHE_CONF_DIR=conf.d
+ APACHE_CONF_DIR=${APACHE_CONF_DIR:-/etc/$APACHE_NAME/conf.d}
elif is_suse; then
APACHE_NAME=apache2
- APACHE_CONF_DIR=vhosts.d
+ APACHE_CONF_DIR=${APACHE_CONF_DIR:-/etc/$APACHE_NAME/vhosts.d}
fi
# Functions
@@ -108,14 +108,14 @@
local apache_version=$(sudo /usr/sbin/apache2ctl -v | awk '/Server version/ {print $3}' | cut -f2 -d/)
if [[ "$apache_version" =~ ^2\.2\. ]]; then
# Ubuntu 12.04 - Apache 2.2
- echo /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}
+ echo $APACHE_CONF_DIR/${site}
else
# Ubuntu 14.04 - Apache 2.4
- echo /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}.conf
+ echo $APACHE_CONF_DIR/${site}.conf
fi
elif is_fedora; then
# fedora conf.d is only imported if it ends with .conf so this is approx the same
- local enabled_site_file="/etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}.conf"
+ local enabled_site_file="$APACHE_CONF_DIR/${site}.conf"
if [ -f $enabled_site_file ]; then
echo ${enabled_site_file}
else
@@ -130,8 +130,11 @@
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}.conf.disabled /etc/$APACHE_NAME/$APACHE_CONF_DIR/${site}.conf
+ local enabled_site_file="$APACHE_CONF_DIR/${site}.conf"
+ # Do nothing if site already enabled or no site config exists
+ if [[ -f ${enabled_site_file}.disabled ]] && [[ ! -f ${enabled_site_file} ]]; then
+ sudo mv ${enabled_site_file}.disabled ${enabled_site_file}
+ fi
fi
}
@@ -141,7 +144,11 @@
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}.conf.disabled
+ local enabled_site_file="$APACHE_CONF_DIR/${site}.conf"
+ # Do nothing if no site config exists
+ if [[ -f ${enabled_site_file} ]]; then
+ sudo mv ${enabled_site_file} ${enabled_site_file}.disabled
+ fi
fi
}