Linux - Apache - Create virtualhost.sh
#!/bin/bash
#
# ------------------------------------------------------------
# Author: Enrico Boldori
# Description: Apache VirtualHost creation script
#
# Script function:
# This script helps in creating an Apache VirtualHost.
# The DocumentRoot is set to ${VHOST}/current/public to help
# when deploying a Deployer-based PHP project.
# ------------------------------------------------------------
if [ $# -ne 1 ]
then
echo "Usage: $0 vHostName"
exit 1
fi
VHOST=$1
VHOST_FILENAME="/etc/apache2/sites-available/${VHOST}.conf"
SERVERADMIN="admin@domain.tld"
# Se il file di configurazione è già esistente termino lo script
if [ -e ${VHOST_FILENAME} ]
then
echo "Il file ${VHOST_FILENAME} esiste, NON lo sovrascrivo."
exit 1
fi
# Se la cartella del VirtualHost sotto /var/www esiste, termino lo script
if [ -d /var/www/${VHOST} ]
then
echo "La cartella /var/www/${VHOST} esiste, operazione annullata."
exit 1
fi
# Devo creare il file di configurazione di apache sotto la cartella /etc/apache2/sites-available
cat >> ${VHOST_FILENAME} <<EOT
<VirtualHost *:80>
ServerAdmin ${SERVERADMIN}
DocumentRoot /var/www/${VHOST}/current/public
ServerName ${VHOST}
ErrorLog \${APACHE_LOG_DIR}/error_${VHOST}.log
CustomLog \${APACHE_LOG_DIR}/access_${VHOST}.log vhost_combined
# E_ALL
php_value error_reporting -1
php_value display_errors 0
php_value log_errors 1
php_admin_value open_basedir /tmp/:/var/tmp/:/var/www/${VHOST}/
</VirtualHost>
EOT
# Creo la cartella dove risiederanno i files del VirtualHost
mkdir -p /var/www/${VHOST}/
# Ne imposto il proprietario a root
chown root:root /var/www/${VHOST} -R
# Imposto i permessi corretti
find /var/www/${VHOST} -type d -exec chmod 755 {} \;
find /var/www/${VHOST} -type f -exec chmod 644 {} \;
# Abilito il VirtualHost
a2ensite ${VHOST}.conf
# Ricarico il servizio di Apache
service apache2 reload
echo "Apache2 reloaded"