Вы можете централизовать свой код в одной общей папке (либо создать сценарий, который копирует весь код на 8 серверов, либо использовать NFS ).
Этот централизованный код может находиться в однойили более хранилище в вашем SVN.Поэтому, когда вы нажимаете, вы нажимаете только то, что вам нужно.
Например, вы можете создать 1 репозиторий для своих собственных библиотек PHP (класс базы данных, xml, imap и т. Д.).В простой структуре и при вызове этих файлов вы просто делаете:
require('/web/lib/DatabaseMySQL.class.php');
Таким образом, вы знаете все необходимые файлы в одном месте и очень просты в обслуживании.Особенно, если ваш код требует обязательных файлов, которые требуют файлов.
Вы можете создать столько хранилищ, сколько захотите, и повторить это, если не хотите смешивать файлы - например, сторонние (Smarty, phpmailer) с кодом, который вы создаете.
Другое дело, не изобретайте велосипед.Существует множество хороших программ, которые, вероятно, делают то, что вам уже нужно.Как отправка электронной почты (phpmailer или любые другие) или системы шаблонов (Smarty или любые другие).Таким образом, вы получаете то же время разработки, и когда обновление доступно, вы просто загружаете, копируете (фиксируете, если оно есть в хранилище) и нажимаете.
Script VS NFS .
Создать скрипт для загрузки всего вашего кода на 8 веб-серверах очень просто.Обратной стороной этого является то, что вы должны убедиться, что все папки и все файлы, которые у вас есть на каждом сервере, идентичны, чтобы избежать ошибок.Кроме того, если в вашей сети произошла задержка или разрыв соединения во время отправки, у какого-либо сервера не будет того же кода.Опять больше ошибок.Это немного быстрее для запуска по сравнению с решением NFS .
Создание NFS устраняет проблему, указанную выше, так как вы используете только 1 местоположение, но если это расположение отбрасывает всеваши серверы не будут работать правильно.Таким образом, когда вы нажимаете код, вы нажимаете только на 1 место, и все другие серверы автоматически получают новый код.Что-то, что вам также нужно знать, это будет немного медленнее, чем если бы код находился прямо на жестком диске.
Вот пример сценария, который вы можете использовать:
Вы можете создать .shСценарий, который будет копировать код из вашего хранилища (например, код, который вы извлекли из хранилища) на все серверы следующим образом:
// file: pushcode.sh
#!/bin/bash
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server1:/path/to/code
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server2:/path/to/code
сделать этот сценарий исполняемым и запустить его:
./pushcode.sh
Чтобы убедиться, что код копируется правильно, не запрашивая пароль каждый раз, вам придется обойти логин ssh .
Вот хороший вариант, который вам может понравиться: https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss