Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
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

4
203.599 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые