организация кода php

мы только что получили новые серверы для нашей новой системы, и я хочу знать, что я должен сделать, чтобы мой новый код как можно более эффективным, и как его организовать.

Я хочу хорошее решение, поэтому мне не нужно переорганизовывать его через 1 год (например), и я хочу, чтобы лучшие практики и методы, чтобы убедиться, что мой код выживет достаточно долго, чтобы избежать его пересмотра позже. здесь рамки

вот мой новый env:

  • 8 web серверы LAMP (apache2, php 5.3.5, cent os 5) - (xeon E5645, 32g ram, raid 10 1T 15k) - 1 балансировщик нагрузки для управления ими
  • 12 серверов базы данных mysql 5.5 (так же, как и выше) с репликацией (4 master, 8 slaves)
  • 1 svn сервер (старый сервер мы используем)

моя идея состояла в том, чтобы отразить их (веб-серверы), и они толкают код из SVN на все серверы. Это хорошо?

1 ответов


вы можете централизовать свой код в одной общей папке (либо создать скрипт, который копирует весь код на 8 серверов, либо использовать NFS).

этот централизованный код может находиться в одном или нескольких репозиториях вашего SVN. Поэтому, когда вы нажимаете, вы нажимаете только то, что вам нужно.

например, вы можете создать 1 репозиторий для собственных библиотек PHP (класс базы данных, xml, imap и т. д...). В простой структуре и когда вы вызываете эти файлы, вы просто do:

require('/web/lib/DatabaseMySQL.class.php');

таким образом, вы знаете все необходимые файлы в том же месте и очень просты в обслуживании. Особенно, если ваш код требует файлов требует файлов.

вы можете создать столько репозитория, сколько хотите, и повторить это, если вы не хотите смешивать файлы - например, сторонние (Smarty, phpmailer) с созданным вами кодом.

другое дело, не изобретайте колесо. Есть много хорошего кода, который, вероятно, делает то, что тебе уже нужно это сделать. Например, отправка электронной почты (phpmailer или любые другие) или системы шаблонов (Smarty или любые другие). Таким образом, вы то же время разработки и когда обновление, если оно доступно, вы просто загружаете, копируете (фиксируете, если оно у вас есть в репозитории) и нажимаете.

скрипт 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