У Василия Наумкина есть отличная инструкция по настройке сервера для 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)

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Вы можете авторизоваться на сайте через:
    YandexGoogleVkontakte
    /*Поиск...*/

    /*Последние комментарии*/
    Вадик Демидов 14 августа 2014, 12:01
    Реализация простой корзины на Django 1
    Alex Vakhitov 29 января 2014, 06:07
    Немного о ЖКХ 2
    Alex Vakhitov 29 января 2014, 06:03
    Создание собственной модели User в Django 11
    Alex Vakhitov 28 января 2014, 13:51
    Установка NGINX-RTMP 2
    Alexandr Fukalov 09 декабря 2013, 13:17
    Установка GitLab и Redmine на Ubuntu 12.04 15
    Alex Vakhitov 20 июня 2013, 20:29
    Шаблона Foundation для ModX 2
    /*Подписка*/

    добавить на Яндекс

    /*Twitter*/
    /*Реклама*/