Enrico Boldori / Wiki

« Go back ⤓ Download

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"