How to a2ensite and a2dissite?
a2ensite
etc. are commands available in Debian-based systems and that are not available in RH-based distributions.
What they do is to manage symbolic links from configuration file parts in /etc/apache2/sites-available
and mods-available
to /etc/apache2/sites-enabled
and so on. E.g. if you have a vhost defined in a config file /etc/apache2/sites-avaible/example.com
, a2ensite example.com
would create a symlink to this file in /etc/apache2/sites-enabled
and reload the apache config. The main Apache config file contains lines that include every file in /etc/apache2/sites-enabled
and thus, they get incorporated into the runtime config.
It's quite easy to mimic this structure in RHEL. Add two directories in /etc/httpd/
named sites-enabled
and sites-available
and add your vhosts into files in sites-available
. After that, add a line
include ../sites-enabled
to /etc/httpd/conf/httpd.conf
. You can now create symlinks to sites-enabled
and then reload the config with service httpd reload
or apachectl
.
As an add-on to Sven's excellent answer, two scripts that mimic the behaviour of a2ensite and a2dissite. The original ensite.sh can be found on Github
a2ensite.sh
#!bin/bash
# Enable a site, just like the a2ensite command.
SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";
if [ $1 ]; then
if [ -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
echo "Site ${1} was already enabled!";
elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
echo "You don't have permission to do this. Try to run the command as root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
echo "Enabling site ${1}...";
ln -s $SITES_AVAILABLE_CONFIG_DIR/$1 $SITES_ENABLED_CONFIG_DIR/$1
echo "done!"
else
echo "Site not found!"
fi
else
echo "Please, inform the name of the site to be enabled."
fi
a2dissite.sh
#!bin/bash
# Disable a site, just like a2dissite command, from Apache2.
SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";
if [ $1 ]; then
if [ ! -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
echo "Site ${1} was already disabled!";
elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
echo "You don't have permission to do this. Try to run the command as root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
echo "Disabling site ${1}...";
unlink $SITES_ENABLED_CONFIG_DIR/$1
echo "done!"
else
echo "Site not found!"
fi
else
echo "Please, inform the name of the site to be enabled."
fi