Сегодня продолжим писать автоконфигуратор для серверов.
Реализуем выбор сервера 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
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
litrbooh, neo, mir, midnight, ruslandis, tasha, tristamoff, vadbars, rusalka, amikphoto, olga-olga, semasping, cergey-p, ladyzarulem, arystarch, aivanouski, oksana0407, lenutsa, vpervye1, yurchello, amelina.elena, lushaya, soroka, hellen-g, victorskaz, kertar, dim447, ifingramota, oksi-m, liseykina, zhenek, magformers, kanalex, kr-alexey, katarinka, cryptovisitor, katherina, andrzhej, anandasurya, borgerry, vitalist
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас: