-
-
Save ammonkc/6034134 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/python | |
from sys import argv | |
from os.path import exists | |
from os import makedirs | |
from os import symlink | |
import getopt | |
# | |
# Show Usage, Output to STDERR | |
# | |
def show_usage(): | |
print """ | |
Create a new vHost in Ubuntu Server | |
Assumes /etc/apache2/sites-available and /etc/apache2/sites-enabled setup used | |
-d DocumentRoot - i.e. /var/www/yoursite | |
-h Help - Show this menu. | |
-s ServerName - i.e. example.com or sub.example.com | |
""" | |
exit(1) | |
# | |
# Output vHost skeleton, fill with userinput | |
# To be outputted into new file | |
# | |
def create_vhost(documentroot, servername): | |
out = """<VirtualHost *:80> | |
ServerAdmin webmaster@localhost | |
ServerName %s | |
DocumentRoot %s | |
<Directory %s> | |
Options -Indexes FollowSymLinks MultiViews | |
AllowOverride All | |
Order allow,deny | |
allow from all | |
</Directory> | |
ErrorLog ${APACHE_LOG_DIR}/%s-error.log | |
# Possible values include: debug, info, notice, warn, error, crit, | |
# alert, emerg. | |
LogLevel warn | |
CustomLog ${APACHE_LOG_DIR}/%s-access.log combined | |
</VirtualHost>""" % (servername, documentroot, documentroot, servername, servername) | |
return out | |
#Parse flags, fancy python way. Long options also! | |
try: | |
opts, args = getopt.getopt(argv[1:], "hd:s:", ["help", "document-root=", 'server-name=']) | |
except getopt.GetoptError, err: | |
print str(err) | |
show_usage() | |
#Sanity check - make sure there are arguments | |
if opts.__len__() == 0: | |
show_usage() | |
documentRoot = None | |
serverName = None | |
#Get values from flags | |
for option, value in opts: | |
if option in ('-h', '--help'): | |
show_usage() | |
elif option in ('-d', '--document-root'): | |
documentRoot = value | |
elif option in ('-s', '--server-name'): | |
serverName = value | |
else: | |
print "Unknown parameter used" | |
show_usage() | |
if exists(documentRoot) == False: | |
makedirs(documentRoot, 0755) | |
#chown USER:USER $DocumentRoot #POSSIBLE IMPLEMENTATION, new flag -u ? | |
#from pwd import getpwnam -> inspect: getpwnam('someuser') | |
if exists('%s/%s.conf' % (documentRoot, serverName)): | |
print 'vHost already exists. Aborting' | |
show_usage() | |
else: | |
target = open('/etc/apache2/sites-available/%s.conf' % serverName, 'w') | |
target.write(create_vhost(documentRoot, serverName)) | |
target.close() | |
srcLink = '/etc/apache2/sites-available/%s.conf' % serverName | |
destLink = '/etc/apache2/sites-enabled/%s.conf' % serverName | |
symlink(srcLink, destLink) | |
#service apache2 reload #Optional implementation -> from os import system -> os.system('service apache2 reload') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
# May need to run this as sudo! | |
# I have it in /usr/local/bin and run command 'vhost' from anywhere, using sudo. | |
# | |
# Show Usage, Output to STDERR | |
# | |
function show_usage { | |
cat <<- _EOF_ | |
Create a new vHost in Ubuntu Server | |
Assumes /etc/apache2/sites-available and /etc/apache2/sites-enabled setup used | |
-d DocumentRoot - i.e. /var/www/yoursite | |
-h Help - Show this menu. | |
-s ServerName - i.e. example.com or sub.example.com | |
_EOF_ | |
exit 1 | |
} | |
# | |
# Output vHost skeleton, fill with userinput | |
# To be outputted into new file | |
# | |
function create_vhost { | |
cat <<- _EOF_ | |
<VirtualHost *:80> | |
ServerAdmin webmaster@localhost | |
ServerName $ServerName | |
DocumentRoot $DocumentRoot | |
<Directory $DocumentRoot> | |
Options -Indexes FollowSymLinks MultiViews | |
AllowOverride All | |
Order allow,deny | |
allow from all | |
</Directory> | |
ErrorLog \${APACHE_LOG_DIR}/$ServerName-error.log | |
# Possible values include: debug, info, notice, warn, error, crit, | |
# alert, emerg. | |
LogLevel warn | |
CustomLog \${APACHE_LOG_DIR}/$ServerName-access.log combined | |
</VirtualHost> | |
_EOF_ | |
} | |
#Sanity Check - are there two arguments with 2 values? | |
if [ $# -ne 4 ]; then | |
show_usage | |
fi | |
#Parse flags | |
while getopts "d:s:" OPTION; do | |
case $OPTION in | |
h) | |
show_usage | |
;; | |
d) | |
DocumentRoot=$OPTARG | |
;; | |
s) | |
ServerName=$OPTARG | |
;; | |
*) | |
show_usage | |
;; | |
esac | |
done | |
if [ ! -d $DocumentRoot ]; then | |
mkdir -p $DocumentRoot | |
#chown USER:USER $DocumentRoot #POSSIBLE IMPLEMENTATION, new flag -u ? | |
fi | |
if [ -f "$DocumentRoot/$ServerName.conf" ]; then | |
echo 'vHost already exists. Aborting' | |
show_usage | |
else | |
create_vhost > /etc/apache2/sites-available/${ServerName}.conf | |
ln -s /etc/apache2/sites-available/${ServerName}.conf /etc/apache2/sites-enabled/${ServerName}.conf | |
#service apache2 reload #Optional implementation | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment