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