Установка и обновление MODX Revolution через консоль
На днях увидел очень интересное видео от Aaron Belafonte @abelafonte.
Это его собственный скрипт для установки MODX-а через консоль. Плюс в том, что вам даже архив MODX-а не нужен. Просто создаете на выполнение баш-скрит (вот его код), запускаете его, отвечаете на несколько вопросов и все. Скрипт сам скачает последнюю версию MODX-а, сам распакует, сам установит и т.п. Я попробовал, все работает. Только вот такой момент: по умолчанию он предлагает установить в новую папку по имени архива MODX-а, к примеру modx-2.2.8-pl. То есть установит не в текущую папку (как вы наверняка того пожелали бы), а во вложенную. Соответственно на том шаге, где спросит про папку (4-ый шаг), укажите точку. Where should this be extracted? [modx-2.2.8-pl/]. Тогда установит в текущую папку.
А еще после себя оставляет пару временных папок, их можно удалить.
С вашей подачи решил попробовать digitalocean. До этого пользовался не дорогим шаред хостингом. Пока полностью доволен сменой.
Сервер настраивал по статье bezumkin'а на хабре. habrahabr.ru/post/139461/
В конце статьи есть ссылка на скрипт установки (так же есть обновление и удаление) сайта, которые создает пользователя, папку для сайта, конфиг для nginx, базу, скачивает последний modx, генерирует пароли для mysql и sftp.
Я в начале поставил ispconfig, но сейчас понял, что этими скриптами проще. При закачке файлов по sftp не возникает проблем с правами/владельцем. Пакет сделанный с modxcloud через vapor стал без проблем.
При закачке файлов по sftp не возникает проблем с правами/владельцем.
Вот про этот момент можно чуть подробней? От чьего имени работает веб-сервер, и от чьего имени вы по sftp работаете и есть ли какая-то автоматическая смена прав на файлы или типа того? И я так понимаю, идет связка nginx+fastcgi? Апач не используется? И все сайты не изолированы друг от друга? То есть если зайти в админку одного сайта, то через него можно добраться до любого другого сайта? (то есть не используется open_basedir или типа того? Про это я писал здесь.)
Пакет сделанный с modxcloud через vapor стал без проблем.
Использовали этот Vapor? И использовали входящий в него import.php, или просто устанавливали как обычный пакет через менеджер пакетов?
Работает nginx+php5-fpm. Апач не используется. В статье написано «запуск разных сайтов от разных юзеров». nginx работает под www-data. php-fpm под индивидуальным пользователем для каждого сайта. По sftp работаю так же под пользователем — владельцем папки с сайтом, т.е. для заливки файлов на разные сайты использую разные логины. Папка с сайтом — это домашняя папка пользователя. В sshd_config прописано ChrootDirectory.
Vapor этот. Устанавливал через управление пакетами. Сессия как обычно отвалилась, но все стало как надо. Делал несколько раз. Ни единого разрыва.
Это не позволяет подняться выше по ssh, но если на сайтах права 775 и 664, то это позволит их просматривать от имени других пользователей. То есть сайт один взломали, и можно пролистать файлы других сайтов. И пусть нет возможности что-то туда записать, зато можно прочитать config-файл и увидеть логины/пароли в БД, а далее просто создается юзер для целевого сайта и спокойно входим в админку.
Сессия как обычно отвалилась, но все стало как надо.
Смотрите в вапоре скрипт import.php С его помощью можно запускать импорт через ssh. vapor/import.php package=core/packages/package.transport.zip (само собой имя своего пакета).
Здесь не будет проблем с сессиями и т.п., так как они не требуются. Можно будет увеличить время выполнения и накатить даже очень большой снапшот.
А попробуйте завести источник файлов в MODX-е с указанием абсолютного пути на корневую директорию всех сайтов, или сразу до папки другого сайта. Я говорил здесь как это делается.
Права для «все остальные» и т.п. — это дело уже самой операционной системы. Если не жалко, пришли в личку логины и пароли в админки двух сайтов на одном сервере, я посмотрю что у тебя там и как, и скажу точно изолированы они или нет.