У Василия Наумкина есть отличная инструкция по настройке сервера для MODX, и к ней прилагаются скрипты установки, обновления и удаления сайта. Все работает отлично и радует глаз, но мне надоедала одна вещь, что для того чтобы что-то сделать необходимо зайти на сервер, и вот я сделал для себя решение этой проблемы
Для этого я использовал библиотеку Fabric, это настоящий комбайн для развертывания приложений и работы по ssh написанный на Python
И в итоге я получил возможность создавать новые сайт, обновлять и удалять их со своего компьютера не заходя на сервер, и также проводить автоматический перенос, pull новых коммитов из git и еще много приятных мелочей
Теперь я расскажу как установить все это счастье себе. Я описываю весь процесс для Linux/Mac на этих система Python стоит по умолчанию и все что нужно это установить нужные пакеты, ну начнем:
easy_install pip pip install Fabric
В общем это все что нужно, теперь осталось только написать скрипт для работы с сервером. Для этого нудно создать файл fabfile.py
mkdir ~/server && cd server touch fabfile.py
Я приложу простейший вариант в котором нужно заменить лишь пути для скриптов автоустановки и логин пароль от сервера
# -*- coding: utf-8 -*- from fabric.api import * from fabric.colors import green, red from contextlib import contextmanager as _contextmanager env.hosts = ['[email protected]'] # здесь нужно ввести свой логин (ваш профиль должен быть в группе sudo) и ip адрес сервера env.password = 'EbIpL6tqcLX' # пароль к вашему аккаунту # функция для создания нового сайта def add(): print(green(u'Создание сайта....')) try: sudo('sh /home/user/modx/addsite.sh') # нужно изменить путь до скрипта install except: pass # функция для удаления сайта def remove(): print(green(u'Удаление сайта....')) try: sudo('sh /home/user/modx/remove.sh') # нужно изменить путь до скрипта remove except: pass # функция для обновления сайта def update(): print(green(u'Обновление сайта....')) try: sudo('sh /home/user/modx/update.sh') # нужно изменить путь до скрипта update except: pass # перезагрузка сервера def reboot(): print(green(u'Перезагрузка сервера...')) sudo('reboot') # перезагрузка nginx def nginxrestart(): print(green(u'Перезапуск nginx...')) sudo('service nginx restart') #показать сгенерированные доступы для сайта def info(name=None): if name: command = 'cat /var/www/%s/pass.txt' % name run(command) else: print(red(u"Введите правильное имя"))
Остался вопрос как этим пользоваться
cd ~/server # нужно перейти в директорию со скриптом fab add # добавляем новый сайт fab update # обновляем сайт fab nginxrestart # перезапускаем nginx fab info:test # смотрим данные для сайта test fab remove #удаляем сайт
Как мне кажется здесь все понятно, в директории со скриптом мы можем работать с командой fab <имя_функции>
Другие посты
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии (0)