vp-webdev
6 лет назадАвтоконфигуратор для Apache и Nginx средствами Python
Сегодня продолжим писать автоконфигуратор для серверов.
Реализуем выбор сервера Apache или Nginx и приведем код в порядок.
Первым делом, я разделил скрипт на функции проверки файлов, ниже опишу зачем, чтения файлов и конфигурации.
Начнем
Первым делом мы получаем данные от пользователя - тип сервер и имя домена:
server = input('Выберите сервер: 1 Apache, 2 Nginx: ')
domain = input('Введите домен сайта: ')
Потом проверяем какой это сервер, есть ли конфиги для конкретных cms и если есть, то предложим выбрать или делаем общий конфиг, подставив необходимые данные.
if int(server) == 1:
if len(check_file('apache')) == 0:
config_file(read_file('apache', 'apache'), domain)
else:
configs = input('У нас есть несколько кофигов на Apache Выберите, пожалуйста: '+','.join(check_file('apache')))
config_file(read_file(configs, 'apache'), domain)
else:
if len(check_file('nginx')) == 0:
config_file(read_file('nginx', 'nginx'), domain)
else:
configs = input('У нас есть несколько кофигов на Nginx Выберите, пожалуйста: '+','.join(check_file('nginx'))+' ')
config_file(read_file(configs, 'nginx'), domain)
Теперь опишу функции:
def check_file(dir):
files = os.listdir(os.getcwd() + '/' + dir)
configs = []
for file in files:
if dir != file.split('.txt')[0]:
configs.append(file.split('.txt')[0])
return configs
Далее смотрим что лежит в папке. Если лежат конфиги кроме общих, то запишем в список.
def read_file(server, type):
f = open(os.getcwd() + '/' + type + '/'+ server + '.txt', 'r')
data = f.read()
f.close()
return data
Здесь мы "читаем" шаблон конфига и формируем новый конфиг. Конфиг записывается в файл.
def config_file(data, domain):
data = data.replace('%domain%', domain)
new_file = open(domain + '.conf', 'w')
new_file.write(data)
new_file.close()
Полный листинг.
Листинг Apache (общий)
Листинг Nginx (Yii)
Материал подготовлен автором @zheev