2011-12-31 11 views
29

Acabamos de recibir nuevos servidores para nuestro nuevo sistema y quiero saber qué debo hacer para que mi nuevo código sea lo más eficiente posible y cómo organizarlo.php code organization

Quiero una buena solución, así que no tengo que volver a organizarla en un año a partir de ahora (por ejemplo) y quiero las mejores prácticas y técnicas para asegurarme de que mi código sobreviva el tiempo suficiente para evitar su rediseño luego. inútil marco aquí

Aquí está mi nuevo env:

  • 8 servidores web LAMP (apache2, PHP 5.3.5, ciento OS 5) - (E5645 Xeon, memoria RAM 32 g, bandas de 10 1T 15k) - 1 equilibrador de carga para manejarlos
  • 12 de base de datos MySQL Server 5.5 (igual al anterior) con la replicación (4 master, 8 esclavos)
  • 1 servidor sVN (antiguo servidor que utilice)

Mi idea era para reflejarlos (los servidores web) y ellos empujan el código del SVN a todos los servidores. ¿Es esto bueno?

+2

es el servidor SVN en la misma red que los servidores web? o ¿has svn alojado en un dominio diferente que no te pertenece? –

+0

el servidor svn está en el mismo rango de direcciones IP así que sí en la misma red que los servidores pero no se puede acceder desde fuera de –

Respuesta

36

Puede centralizar su código en una carpeta común (ya sea crear un script que copie todo el código en los 8 servidores o use NFS).

Este código centralizado puede estar en uno o más repositorios en su SVN. Entonces cuando presionas, solo empujas lo que necesitas empujar.

Por ejemplo, puede crear 1 repositorio para sus propias bibliotecas de PHP (clase de base de datos, xml, imap, etc ...). En una estructura simple y cuando se llama a estos archivos sólo tiene que hacer:

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

De esta manera, usted sabe todos sus archivos requeridos en el mismo lugar y muy fácil de mantener. Especialmente si su código requiere archivos requeridos que requieren archivos.

Puede crear tantos repositorios como desee y repetir esto si no desea mezclar archivos, por ejemplo, de terceros (Smarty, phpmailer) con el código que cree.

La otra cosa es, no reinventar la rueda. Hay muchos códigos buenos que probablemente hagan lo que ya deben hacer. Como enviar correo electrónico (phpmailer o cualquier otro) o sistema de plantilla (Smarty o cualquier otro). De esta manera, el mismo tiempo de desarrollo y, si está disponible, una actualización, simplemente descargue, copie (confirme si lo tiene en un repositorio) y presione.

Script VS NFS.

Crear una secuencia de comandos para empujar todo su código en 8 servidores web es fácil de realizar. La desventaja de esto es que necesita asegurarse de que todas las carpetas y todos los archivos que tiene en cada servidor sean idénticos para evitar errores. Además, si hay un retraso en su red o la caída de la conexión durante el envío, algún servidor no tendrá el mismo código. De nuevo, más errores. Esto es un poco más rápido de ejecutar en comparación con la solución NFS.

Crea un NFS soluciona el problema anterior ya que solo usas 1 ubicación, pero si esa ubicación se desactiva, todos tus servidores no se ejecutarán correctamente. Entonces, cuando presionas el código, presionas solo 1 lugar y todos los demás servidores automáticamente tienen el código nuevo. Algo que también debe saber, esto será un poco más lento que si el código está directamente en el disco duro.

Aquí es un script de ejemplo que puede utilizar:

Puede crear un script .sh que copiar el código de su repositorio (por ejemplo, el código que desprotegió desde el repositorio) a todos los servidores de la siguiente manera:

// 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 

hacen de este script ejecutable y ejecutarlo:

./pushcode.sh 

para asegurarse copia el código correctamente sin preguntar al usuario siempre, tendrá que bypass the ssh login.

Aquí hay uno bueno te pueden gustar: https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss

+0

gracias por esto, muy útil. Creo que iré con el guión uno para empezar, al principio parece más fácil, ¿alguna recomendación sobre el guión? ¿Cómo puedo hacerlo? –

+0

He actualizado mi respuesta –

+0

muchas gracias por su ayuda –