-
-
Save benzntech/3eb509630724f8b6b7730bb0b788bf45 to your computer and use it in GitHub Desktop.
Create vHost Ubuntu Lamp-Server (bash and python)
This file contains hidden or 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 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage
Install:
curl https://gist.github.com/fideloper/2710970/raw/5d7efd74628a1e3261707056604c99d7747fe37d/vhost.sh > vhost
chmod guo+x vhost
sudo mv vhost /usr/local/bin
Use:
# See Help Menu
vhost -h
Create virtual host for "myproject.local"
sudo vhost -d /var/www/myproject -s myproject.local