одновременно обновлять сотни сайтов на одном сервере

Я работаю над выделенным сервером Hostgator, где есть сотни сайтов, которые имеют сходство в файловой структуре и файлах .php, общих для каждого сайта.

Я хотел бы иметь возможность работать только с одним сайтом («модельным» сайтом), а затем синхронизировать эти изменения со всеми другими сайтами. Я согласен на то, чтобы это происходило автоматически или полувручную (с помощью скрипта или команды). Одним из требований является то, что, поскольку несколько сайтов отличаются друг от друга, их необходимо исключить из этой синхронизации. Что такое некоторые методы для достижения этого? Вот что я до сих пор думал...

  • RSync : rsync на это способен? Я никогда не использовал его, но слышал, что он отлично подходит для копирования файлов с одного сервера на другой.

  • SSH: Мне не очень удобно работать с командами оболочки, но я могу представить, что это определенно «правильное» место для внесения таких изменений. (не уверен, как зацикливаться и вносить изменения во все каталоги, ЗА ИСКЛЮЧЕНИЕМ нескольких разных)

  • PHP : Если возможно, я хотел бы иметь возможность сделать это с PHP, за исключением того, что мой сервер использует SuPHP для безопасности, и я не могу обойти требуемые разрешения. Возможно, я смогу переключиться на fcgi... (также открыт для предложений по этому поводу)

Моя файловая структура выглядит следующим образом:

    /home/model/
    /home/site1/
    /home/site2/
    /home/site3/
    /home/exception/
    /home/site5/
    /home/site6/
    /home/exception/

person filip    schedule 02.12.2010    source источник


Ответы (1)


Команды Bash более удобны и, как правило, проще,
в них сочетаются rysnc и символические ссылки ln.

В двух словах,

ln -s /home/model/ /home/site1 
ln -s /home/model/ /home/site2
ln -s /home/model/ /home/site3

таким образом, он будет программно связывать site1, site2, site3 с моделью

что такое символическая ссылка?
http://en.wikipedia.org/wiki/Symbolic_link

После этого вам просто нужно синхронизировать ваши изменения в модели каталога,
и изменения будут немедленно применены к site1, site2, site3
(поскольку все каталоги являются символической ссылкой на модель)

что касается site5, site6, так как есть разница, scp лучше подходит к обуви.

person ajreal    schedule 02.12.2010
comment
ах, очень крутой подход @ajreal. Однако проблема с символическими ссылками заключается в том, что сайты не полностью идентичны, все они имеют одинаковую структуру, однако многие файлы уникальны. То, что я действительно ищу, - это способ легко добавить каталог на каждый сайт или обновить несколько файлов на всех сайтах. Сейчас смотрю на scp. - person filip; 02.12.2010
comment
Символические ссылки +1 определенно лучше, чем фактическая синхронизация файлов. - person Ish; 02.12.2010
comment
@Ish Kumar, может быть, я неправильно понимаю символические ссылки, но если у меня есть все символические ссылки каталогов /site1/, /site2/ на /model/, как мне хранить уникальные файлы в этих каталогах с символическими ссылками? С другой стороны, если я создаю символические ссылки только на общие файлы и каталоги, как мне, например, добавить каталог на каждый сайт? Спасибо - person filip; 02.12.2010
comment
@filip, вы должны связать site1/common/ -> model/common и сохранить site1/unique_files как физические файлы. Так что в будущем, если вам когда-нибудь понадобится обновить общие файлы, просто отредактируйте модель/общий - person Ish; 02.12.2010
comment
Спасибо @Ish Kumar, это имеет смысл, однако на данный момент это может быть сложно реализовать. Интересно, есть ли у кого другие предложения - person filip; 02.12.2010