bbatsche.PHP

Rol de Ansible para Sitios PHP

Estado de Construcción Licencia Ansible Galaxy Versión de Lanzamiento Descargas

Este rol de Ansible instalará una versión específica de PHP en tu servidor y configurará un sitio en Nginx que ejecute PHP. El rol utiliza Phpenv para gestionar las diferentes versiones de PHP. Debe poder instalar cualquier versión de PHP desde 5.2 hasta 7.2 (aunque si estás instalando PHP 5.2, es posible que necesites reconsiderar seriamente tus elecciones de vida ;-).

Requisitos

Phpenv requiere que Git esté instalado en tu servidor, pero, ¿qué servidor no tiene Git hoy en día?

Este rol aprovecha los ACLs del sistema de archivos de Linux y un grupo llamado "web-admin" para otorgar acceso a directorios específicos. Puedes configurar estos pasos manualmente o instalar el rol bbatsche.Base.

Además, para instalar este rol en Ubuntu Xenial se requiere que la versión de Ansible sea 2.2 o superior. Ansible 2.1 sigue siendo compatible con Ubuntu Trusty.

Variables del Rol

  • domain — Dominio del sitio a crear
  • dynamic_php — Si Nginx debe reescribir todas las solicitudes en tu sitio a través de index.php. Esto se usa para la mayoría de los frameworks modernos. El valor predeterminado es no.
  • max_upload_size — Tamaño máximo de carga en MB. El valor predeterminado es "10".
  • php_max_file_uploads — Número máximo de archivos que se pueden cargar simultáneamente. El valor predeterminado es 20.
  • timezone — Zona horaria que debe configurarse en PHP. El valor predeterminado es "Etc/UTC".
  • mysql_socket — Ruta al socket predeterminado de MySQL para usar al conectarse a localhost.
  • install_mariadb — Instalar las bibliotecas del cliente de MariaDB, en lugar de las bibliotecas predeterminadas de MySQL. El valor predeterminado es no.
  • php_session_save_handler — Manejador para guardar sesiones. Se puede usar para guardar datos de sesión en Redis, por ejemplo. El valor predeterminado es "files".
  • php_session_path — Ruta para almacenar datos de sesión. El valor predeterminado es "{{ phpenv_root }}/versions/{{ php_version }}/var/run/session".
  • php_realpath_cache_size — Tamaño de la caché utilizada para buscar las rutas reales de archivos y directorios. El valor predeterminado es "256k".
  • php_realpath_cache_ttl — Tiempo que se almacenan las entradas en la caché de rutas reales. El valor predeterminado es 600.
  • php_max_execution_time — Tiempo máximo que se permite a PHP trabajar (excluyendo llamadas a recursos externos como el sistema de archivos). El valor predeterminado es 30.
  • php_default_socket_timeout — Tiempo de espera al esperar datos de un socket. El valor predeterminado es 60.
  • php_memory_limit — Cantidad máxima de memoria que PHP puede asignar para un único proceso. El valor predeterminado es "128M".
  • php_version — Versión de PHP a instalar con Phpenv.
  • phpenv_config_options — Lista de opciones para pasar al comando de configuración de PHP (además de los valores predeterminados ya incluidos con Phpenv). Predeterminado: consulta defaults/main.yml.
  • phpenv_config_options_removed — Lista de opciones a eliminar de la lista estándar de Phpenv. El valor predeterminado es solo --with-tidy.
  • pecl_extensions — Lista de extensiones adicionales a instalar desde PECL. Cada valor debe tener un name y una version.
  • composer_packages — Lista de paquetes de composer a instalar globalmente. Cada valor debe tener un name y una propiedad version.
  • phpenv_version — Versión de Phpenv a instalar. El valor predeterminado es un SHA de Git: "0852611".
  • phpenv_composer_version — Versión del Complemento Composer para Phpenv a instalar. El valor predeterminado es un SHA de Git: "1a6611d".
  • php_build_version — Versión de PHP Build a instalar. El valor predeterminado es un SHA de Git: "5d166fe".
  • xdebug_version — Versión de Xdebug a instalar. El valor predeterminado es "2.5.5".
  • copy_phpinfo — Si se debe copiar una página phpinfo() al nuevo sitio. El valor predeterminado es no.
  • copy_index_php — Si se debe copiar un archivo base index.php al nuevo sitio. El valor predeterminado es no.
  • disabled_function — Lista de funciones a desactivar cuando PHP se ejecuta desde la web.
  • open_basedir — Lista de rutas adicionales que este dominio debe poder leer y escribir. Esta lista siempre contendrá la raíz del dominio, el directorio "var" de la versión actual de PHP (para el almacenamiento de sesiones) y el directorio temporal del dominio.
  • http_root — Directorio bajo el cual se crearán todos los sitios. El valor predeterminado es "/srv/http".
  • phpenv_root — Donde se instalará Phpenv y sus archivos de soporte. El valor predeterminado es "/usr/local/phpenv".

Variables de Ajuste de FPM

PHP FPM se configura para ejecutar en uno de los dos modos dependiendo de env_name. En entornos de desarrollo, PHP FPM se ejecutará en modo "ondemand" para minimizar el número de procesos generados y estar ociosos en un entorno de desarrollo de bajos recursos. En otros entornos, FPM se ejecutará en modo "dinámico" para que los procesos hijos ya estén disponibles para manejar solicitudes y no necesiten ser generados. Al ejecutarse en modo dinámico, hay varias formas de ajustar el uso de recursos de FPM:

  • fpm_mb_per_child — Cantidad promedio de memoria que un proceso hijo consumirá para este dominio. El valor predeterminado es "30".
  • fpm_mem_percent — Cantidad máxima de memoria total que se permite consumir a FPM. El valor predeterminado es "80".
  • fpm_max_children — Número máximo de procesos hijos permitidos para este dominio. El valor predeterminado se calcula basado en fpm_mem_percent y fpm_mb_per_child.
  • fpm_start_percent — ¿Qué porcentaje de los hijos máximos de FPM deben ser iniciados cuando se crea inicialmente el dominio? El valor predeterminado es "20" con un mínimo de 2 servidores en total.
  • fpm_start_servers — Número de servidores a iniciar cuando se crea el dominio. El valor predeterminado se calcula en base a fpm_start_percent.
  • fpm_max_spare_percent — Porcentaje de los hijos máximos de FPM que deben mantenerse activos como servidores de reserva cuando la carga comienza a disminuir. El valor predeterminado es "80".
  • fpm_max_spare_servers — Número de servidores de reserva que deben mantenerse activos después de un pico y a medida que la carga comienza a decaer. El valor predeterminado se calcula en base a fpm_max_spare_percent.

Esto te permite ajustar el uso de recursos basado en un porcentaje de la memoria total o con valores estáticos, dependiendo de tu caso de uso.

Variables de Ajuste de Opcache

Las siguientes variables se pueden utilizar para ajustar Opcache y potencialmente mejorar el rendimiento de la aplicación.

  • opcache_enable_cli — El valor predeterminado es 0.
  • opcache_memory_consumption — El valor predeterminado es 128.
  • opcache_internal_strings_buffer — El valor predeterminado es 16.
  • opcache_max_accelerated_files — El valor predeterminado es 6000.
  • opcache_max_wasted_percentage — El valor predeterminado es 5.
  • opcache_validate_timestamps — El valor predeterminado es 1.
  • opcache_revalidate_freq — Establecer en 0 si el entorno es de desarrollo. De lo contrario, el valor predeterminado es 300.
  • opcache_fast_shutdown — El valor predeterminado es 0. Potencialmente arriesgado si se habilita.

Dependencias

Este rol depende de bbatsche.Nginx. Debes instalar ese rol primero usando:

ansible-galaxy install bbatsche.Nginx

Ejemplo de Playbook

- hosts: servidores
  roles:
  - role: bbatsche.Phpenv
    domain: mi-sitio-php.test
    php_version: 7.1.12
    composer_packages:
    - name: phpunit/phpunit
      version: ^6.4
    pecl_extensions:
    - name: yaml
      version: 2.0.2
    - name: imagick
      version: 3.4.3

Licencia

MIT

Pruebas

Incluido con este rol hay un conjunto de especificaciones para probar cada tarea individualmente o en su conjunto. Para ejecutar estas pruebas, primero necesitarás tener Vagrant y VirtualBox instalados. Los archivos de especificaciones están escritos utilizando Serverspec por lo que necesitarás Ruby y Bundler.

Para ejecutar el conjunto completo de especificaciones:

$ gem install bundler
$ bundle install
$ rake

El conjunto de especificaciones se dirigirá a Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04) y Bionic Beaver (18.04).

Para ver las tareas de rake disponibles (y especificaciones):

$ rake -T

Estas especificaciones no están hechas para probar la idempotencia. Están destinadas a verificar que las tareas especificadas realicen sus pasos esperados. La idempotencia se prueba de manera independiente a través de pruebas de integración.

Acerca del proyecto

Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM

Instalar
ansible-galaxy install bbatsche.PHP
Licencia
mit
Descargas
281
Propietario