¿Deberíamos tener un grupo para muchos sitios web en Apache+PHP-FPM?

¿Deberíamos tener un grupo para muchos sitios web en Apache+PHP-FPM?

Si hay muchos sitios web pequeños (alrededor de 300) que se ejecutan con poco tráfico web, ¿deberían todos usar el mismo grupo o sería mejor tener un grupo separado para cada uno de ellos?

Supongamos que los sitios web son confiables y que aquí no se consideran los beneficios de tener un usuario/grupo separado en el grupo (por ejemplo, un mejor control de acceso/permisos).

Respuesta1

Por lo general, prefiero usar un grupo por sitio web (pero tal vez no aquí, lea todo).

La razón principal de esto es que permite la configuración de PHP por sitio web. Y estas configuraciones pueden variar según las necesidades de los sitios web, pero también para una mejor separación de los recursos del sitio web. Como por ejemplo con directorios temporales alterados o open_basedir_settings:

(...)
env[TMP] = /path/to/client/var/tmp
env[TMPDIR] = /path/to/client/var/tmp
env[TEMP] = /path/to/client/var/tmp
env[DOCUMENT_ROOT] = /path/to/client/www
php_admin_value[open_basedir] = ".:/path/to/client/www:/path/to/client/var/tmp:/path/to/client/var/log"
php_admin_value[upload_tmp_dir]="/path/to/client/var/tmp"
(...)

También podrías utilizar elchrootmodo para php-fpm pero eso es más complejo. Y en este caso, con un grupo chroot, tal vez sería más fácil usar solo un grupo para todos los clientes (por lo tanto, un chroot compartido, lo cual no es muy bueno de hecho). Esto se debe a que cosas como apc son compartidas por todos los grupos, y eso significa que al usar varios grupos con chroot podría terminar con varios archivos con las mismas rutas en diferentes grupos, y apc solo almacenaría una versión en caché del archivo. De hecho, en el caso de apc+chroot, la mejor solución sería ejecutar varias instancias de php-fpm, con un grupo por instancia. No es algo fácil para 300 sitios web.

Luego puede administrar cuántos procesos php se pueden usar para cada sitio web con la pm.[static/dynamic]configuración del grupo. Tenga en cuenta que para 300 sitios web pequeñosesto podría convertirse en un problema, si una gran cantidad de estos sitios web no están activos, una gran parte de su memoria será utilizada por procesos grupales que no hacen nada.

En su caso, el tráfico es bajo y los sitios web son livianos, por lo que tener más de 300 (como mínimo) procesos de grupo ejecutándose en su caja, sin hacer nada, es unaexagerar. Y en su caso específico, creo que en su lugar usaría una cantidad baja de grupos (¿tal vez pueda agrupar algunos sitios web, por aplicaciones? ¿Por versiones? ¿Por necesidades?), haciendo que cada grupo pueda ejecutar varios sitios web. O tal vez solo uno, intentaría usar grupos de sitios web para aplicarles algunas restricciones open_basedir, pero si todos realmente son iguales, podría ejecutar solo un grupo.

información relacionada