-
Notifications
You must be signed in to change notification settings - Fork 1
/
apache-site-conf.py
141 lines (117 loc) · 4.81 KB
/
apache-site-conf.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/env python3
import os
import subprocess as sub
__author__ = 'Benjamin P. Trachtenberg'
__copyright__ = "Copyright (c) 2017, Benjamin P. Trachtenberg"
__credits__ = None
__license__ = 'The MIT License (MIT)'
__status__ = 'prod'
__version_info__ = (1, 0, 1, __status__)
__version__ = '.'.join(map(str, __version_info__))
__maintainer__ = 'Benjamin P. Trachtenberg'
__email__ = 'e_ben_75-python@yahoo.com'
def create_conf(folder_name, dir_count):
"""
Function to create apache conf files for loaded sites
Currently only non-SSL Sites
:param
folder_name: The folder name of the site
dir_count: Count of dirs
:return:
"""
temp_list = list()
temp_list.append('<VirtualHost *:80>')
if os.environ.get('SITE_SERVER_NAME') and dir_count == 1:
temp_list.append(' ServerName %s' % (os.environ.get('SITE_SERVER_NAME'),))
else:
temp_list.append(' # ServerName www.example.com')
if os.environ.get('SITE_SERVER_ADMIN') and dir_count == 1:
temp_list.append(' ServerAdmin %s' % (os.environ.get('SITE_SERVER_ADMIN'),))
else:
temp_list.append(' ServerAdmin webmaster@localhost')
temp_list.append('')
temp_list.append(' Alias /media/ /DjangoSites/%s/media/' % (folder_name,))
temp_list.append('')
temp_list.append(' <Directory /DjangoSites/%s/media>' % (folder_name,))
temp_list.append(' Order deny,allow')
temp_list.append(' Require all granted')
temp_list.append(' </Directory>')
temp_list.append('')
temp_list.append(' Alias /static/ /DjangoSites/%s/static/site/' % (folder_name,))
temp_list.append('')
temp_list.append(' <Directory /DjangoSites/%s/static/site>' % (folder_name,))
temp_list.append(' Order deny,allow')
temp_list.append(' Require all granted')
temp_list.append(' </Directory>')
temp_list.append('')
temp_list.append(' WSGIScriptAlias / /DjangoSites/%s/apache/django.wsgi process-group=%s' % (folder_name,
folder_name))
temp_list.append(' WSGIDaemonProcess %s' % (folder_name,))
temp_list.append(' WSGIProcessGroup %s' % (folder_name,))
temp_list.append('')
temp_list.append(' <Directory /DjangoSites/%s/apache>' % (folder_name,))
temp_list.append(' Order deny,allow')
temp_list.append(' Require all granted')
temp_list.append(' </Directory>')
temp_list.append('')
temp_list.append(' # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,')
temp_list.append(' # error, crit, alert, emerg.')
temp_list.append(' # It is also possible to configure the loglevel for particular')
temp_list.append(' # modules, e.g.')
temp_list.append(' LogLevel info')
temp_list.append('')
temp_list.append(' ErrorLog ${APACHE_LOG_DIR}/error.log')
temp_list.append(' CustomLog ${APACHE_LOG_DIR}/access.log combined')
temp_list.append('')
temp_list.append('</VirtualHost>')
temp_list.append('')
temp_list.append('# vim: syntax=apache ts=4 sw=4 sts=4 sr noet')
def output_file(orig_list, file_name):
"""
Function to output the file
:param orig_list:
:param file_name:
:return: file_name
"""
file_name = '%s.conf' % ('-'.join(file_name.split()).lower(), )
def add_line_break(list_line):
"""
Create a line break at the end of a string
Args:
list_line: string
Returns: A string with a line break
"""
list_line = ('%s\n' % (list_line,))
return list_line
write_file = open('/etc/apache2/sites-available/%s' % (file_name, ), "a")
for orig_list_line in orig_list:
write_file.write(add_line_break(str(orig_list_line)))
write_file.close()
return file_name
site_to_enable = output_file(temp_list, folder_name)
sub.call('a2ensite %s > /dev/null' % (site_to_enable,), stderr=sub.STDOUT, shell=True)
def count_dir():
"""
Function to count how many dirs in a dir
:return:
An integer of how many dirs
"""
temp_list_count = list()
for item_name in os.listdir(os.getcwd()):
if os.path.isdir(item_name):
temp_list_count.append(item_name)
return len(temp_list_count)
def main():
"""
Main script function
:return: None
"""
dir_count = count_dir()
if os.environ.get('SITE_DIRECTORY_NAME'):
create_conf(os.environ.get('SITE_DIRECTORY_NAME'), 1)
else:
for item_name in os.listdir(os.getcwd()):
if os.path.isdir(item_name):
create_conf(item_name, dir_count)
sub.call('a2dissite 000-default.conf > /dev/null', stderr=sub.STDOUT, shell=True)
main()