Подтвердить что ты не робот

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

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

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

Здесь мой новый env:

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

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

4b9b3361

Ответ 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