|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +# This script is to build apache conf files for Django apps |
| 4 | +# Version: 1.0 Prod |
| 5 | +# Author: Benjamin P. Trachtenberg |
| 6 | +# Contact: e_ben_75-python@yahoo.com |
| 7 | + |
| 8 | +declare -r apachedirname="/etc/apache2/sites-available" |
| 9 | +apacheconfname="" |
| 10 | +declare -r djangodirname="/DjangoSites" |
| 11 | + |
| 12 | +# Check for DjangoSites Directory |
| 13 | +if [[ ! -d $djangodirname ]]; then |
| 14 | + echo "No DjangoSites Directory Found!" |
| 15 | + exit 1 |
| 16 | +fi |
| 17 | + |
| 18 | +# Check for Apache sites-available directory |
| 19 | +if [[ ! -d $apachedirname ]]; then |
| 20 | + echo "No Apache sites-available Directory Found!" |
| 21 | + exit 1 |
| 22 | +fi |
| 23 | + |
| 24 | +if [[ -f "/etc/apache2/sites-enabled/000-default.conf" ]]; then |
| 25 | + a2dissite 000-default.conf > /dev/null |
| 26 | +fi |
| 27 | + |
| 28 | +for directory in $(ls $djangodirname); do |
| 29 | + if [[ -d $djangodirname/$directory ]]; then |
| 30 | + apacheconfname="${directory,,}.conf" |
| 31 | + if [[ ! -f "$apachedirname/$apacheconfname" ]]; then |
| 32 | + echo "Creating apache config $apachedirname/$apacheconfname" |
| 33 | + echo "<VirtualHost *:80>" >> $apachedirname/$apacheconfname |
| 34 | + |
| 35 | + if [[ $(ls -d $djangodirname/*/ | wc -l) = 1 && $SITE_SERVER_NAME ]]; then |
| 36 | + echo " ServerName $SITE_SERVER_NAME" >> $apachedirname/$apacheconfname |
| 37 | + |
| 38 | + else |
| 39 | + echo " # ServerName www.example.com" >> $apachedirname/$apacheconfname |
| 40 | + |
| 41 | + fi |
| 42 | + |
| 43 | + if [[ $(ls -d $djangodirname/*/ | wc -l) = 1 && $SITE_SERVER_ADMIN ]]; then |
| 44 | + echo " ServerAdmin $SITE_SERVER_ADMIN" >> $apachedirname/$apacheconfname |
| 45 | + |
| 46 | + else |
| 47 | + echo " ServerAdmin webmaster@localhost" >> $apachedirname/$apacheconfname |
| 48 | + |
| 49 | + fi |
| 50 | + |
| 51 | + echo "" >> $apachedirname/$apacheconfname |
| 52 | + echo " Alias /media/ /DjangoSites/$directory/media/" >> $apachedirname/$apacheconfname |
| 53 | + echo "" >> $apachedirname/$apacheconfname |
| 54 | + echo " <Directory /DjangoSites/$directory/media>" >> $apachedirname/$apacheconfname |
| 55 | + echo " Order deny,allow" >> $apachedirname/$apacheconfname |
| 56 | + echo " Require all granted" >> $apachedirname/$apacheconfname |
| 57 | + echo " </Directory>" >> $apachedirname/$apacheconfname |
| 58 | + echo "" >> $apachedirname/$apacheconfname |
| 59 | + echo " Alias /static/ /DjangoSites/$directory/static/site/" >> $apachedirname/$apacheconfname |
| 60 | + echo "" >> $apachedirname/$apacheconfname |
| 61 | + echo " <Directory /DjangoSites/$directory/static/site>" >> $apachedirname/$apacheconfname |
| 62 | + echo " Order deny,allow" >> $apachedirname/$apacheconfname |
| 63 | + echo " Require all granted" >> $apachedirname/$apacheconfname |
| 64 | + echo " </Directory>" >> $apachedirname/$apacheconfname |
| 65 | + echo "" >> $apachedirname/$apacheconfname |
| 66 | + echo " WSGIScriptAlias / /DjangoSites/$directory/apache/django.wsgi process-group=$directory" >> $apachedirname/$apacheconfname |
| 67 | + echo " WSGIDaemonProcess $directory" >> $apachedirname/$apacheconfname |
| 68 | + echo " WSGIProcessGroup $directory" >> $apachedirname/$apacheconfname |
| 69 | + echo "" >> $apachedirname/$apacheconfname |
| 70 | + echo " <Directory /DjangoSites/$directory/apache>" >> $apachedirname/$apacheconfname |
| 71 | + echo " Order deny,allow" >> $apachedirname/$apacheconfname |
| 72 | + echo " Require all granted" >> $apachedirname/$apacheconfname |
| 73 | + echo " </Directory>" >> $apachedirname/$apacheconfname |
| 74 | + echo "" >> $apachedirname/$apacheconfname |
| 75 | + echo " # Available loglevels: trace8, ..., trace1, debug, info, notice, warn," >> $apachedirname/$apacheconfname |
| 76 | + echo " # error, crit, alert, emerg." >> $apachedirname/$apacheconfname |
| 77 | + echo " # It is also possible to configure the loglevel for particular" >> $apachedirname/$apacheconfname |
| 78 | + echo " # modules, e.g." >> $apachedirname/$apacheconfname |
| 79 | + echo " LogLevel info" >> $apachedirname/$apacheconfname |
| 80 | + echo "" >> $apachedirname/$apacheconfname |
| 81 | + echo " ErrorLog ${APACHE_LOG_DIR}/error.log" >> $apachedirname/$apacheconfname |
| 82 | + echo " CustomLog ${APACHE_LOG_DIR}/access.log combined" >> $apachedirname/$apacheconfname |
| 83 | + echo "" >> $apachedirname/$apacheconfname |
| 84 | + echo "</VirtualHost>" >> $apachedirname/$apacheconfname |
| 85 | + echo "" >> $apachedirname/$apacheconfname |
| 86 | + echo "# vim: syntax=apache ts=4 sw=4 sts=4 sr noet" >> $apachedirname/$apacheconfname |
| 87 | + |
| 88 | + a2ensite $apacheconfname > /dev/null |
| 89 | + |
| 90 | + else |
| 91 | + echo "Can not create apache config $apachedirname/$apacheconfname" |
| 92 | + echo "It already exists remove it and run the script again" |
| 93 | + |
| 94 | + fi |
| 95 | + fi |
| 96 | +done |
0 commit comments