#!/bin/bash # Source: http://ubuntuforums.org/showthread.php?t=2106950 #Check for root true="true"true="true" ROOT_UID=0 overwrite="" if [ "$UID" -ne "$ROOT_UID" ]; then echo "Must be run as root, use sudo." exit 0 fi clear echo " # # # # # # # # #### #### ##### # # # # # # # # # # ####### # # #### # # # # # # # # # # # # # # # # # # # # # #### #### # ##### # # ###### ##### # # ##### # # # # # # # ##### ##### # # # # # # # # # # ##### # # # # # # # ##### ###### # #### # " echo "" echo "" echo "" echo "" echo "Hit [ENTER] to continue ................." read enter; clear # Lets ask some questions echo "Enter a domain server Alias (e.g. bart.home):"; read domain; clear echo "Enter a Virtual Host Name (e.g. [http://dummy] dummy would be" echo "your host name or [http://dummy.local] - dummy.local would be your host name )" read vhname clear # Create the file in /etc/apache2/sites-available touch /etc/apache2/sites-available/${vhname} # setup a folder for the Error logs mkdir /var/www/domains/${vhname} # Check to see if you having a working folder in the document root echo "Do you have a folder for the website http://${vhname} in \"/var/www\" already? (y/n)" read Question # Lets check the logic for the answer to the line above if [[ "${Question}" == "no" ]] || [[ "${Question}" == "n" ]]; then echo "What would you like to call the folder (no spaces or unusual characters) in /var/www:"; read NewFolder; clear # Create the new folder mkdir /var/www/${NewFolder} # Make sure we have the right permissions echo "To enable the correct folder permissions please enter the user (example: user):"; read user; clear echo "Now enter the group (this could be \"nogroup\" example user:group):"; read group; clear chmod -R 0644 /var/www/${NewFolder} chown -R ${user}:${group} /var/www/${NewFolder} # Insert the VirtualHost block into the file created /etc/apache2/sites-available echo " #${vhname}.${domain} ServerName ${vhname} ServerAlias ${vhname}.${domain} ServerAdmin admin@${vhname} DocumentRoot /var/www/${NewFolder}/ AllowOverride all Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/www/domains/${vhname}/apache.error.log CustomLog /var/www/domains/${vhname}/apache.access.log common " >> /etc/apache2/sites-available/${vhname} # If you have a folder already then do this elif [[ "${Question}" == "yes" ]] || [[ "${Question}" == "y" ]]; then echo "Please confirm and type the name of your folder in /var/www ?" read ExistingFolder clear # Insert the VirtualHost block echo " ### ${vhname}.${domain} ServerName ${vhname} ServerAlias ${vhname}.${domain} ServerAdmin admin@${vhname} DocumentRoot /var/www/${ExistingFolder}/ AllowOverride all Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/www/domains/${vhname}/apache.error.log CustomLog /var/www/domains/${vhname}/apache.access.log common " >> /etc/apache2/sites-available/${vhname} fi function progress(){ echo -n "Testing configuration Please wait..." sleep 5 while true do echo -n "." sleep 10 done } function dotest(){ apache2ctl configtest echo "" sleep 5 clear } # Start it in the background progress & # Save PID ME=$! # Start the test dotest # Kill process kill $ME &>/dev/null clear echo -n "...done." sudo ln -s /etc/apache2/sites-available/${vhname} /etc/apache2/sites-enabled/${vhname} clear echo "Would you like me to restart the server? (y/n)" read qServer if [[ "${qServer}" == "yes" ]] || [[ "${qServer}" == "y" ]]; then apache2ctl restart echo "Apache Setup complete" elif [[ "${qServer}" == "no" ]] || [[ "${qServer}" == "n" ]]; then echo "" fi clear echo "Lets setup the domain in the BIND9 server, hit [ENTER] to continue....." read any clear echo "Enter the ServerName (ns1 or ns2 etc):"; read server; clear echo "Is the name of the zone file the same as the Domain Name? (y/n)" read q if [[ "${q}" == "no" ]] || [[ "${q}" == "n" ]]; then echo "Enter the name of the name of the domain, example:format (bart.home):" read servdomain echo "${vhname} IN CNAME ${server}" >> /etc/bind/zones/${servdomain}".db" echo "" elif [[ "${q}" == "yes" ]] || [[ "${q}" == "y" ]]; then echo "${vhname} IN CNAME ${server}" >> /etc/bind/zones/${domain}".db" fi echo "Would you like to restart the BIND9 service? (y/n)" read q clear if [[ "${q}" == "yes" ]] || [[ "${q}" == "y" ]]; then /etc/init.d/bind9 restart echo "" echo " #### ###### ##### # # ##### # # # # # # # #### ##### # # # # # # # # # # ##### # # # # # # # #### ###### # #### # #### #### # # ##### # ###### ##### ###### # # # # ## ## # # # # # # # # # # ## # # # # ##### # ##### # # # # # ##### # # # # # # # # # # # # # # # #### #### # # # ###### ###### # ###### " elif [[ "${q}" == "no" ]] || [[ "${q}" == "n" ]]; then echo "Once you have completed your configuration remember to restart the BIND9 service!" fi