jebovic.php
php
Instala y configura php-fpm para pilas lamp y lemp, agrega tus propias configuraciones de pools y personaliza toda la configuración de php.ini desde variables yaml.
Bonus: añade extensiones para blackfire y newrelic APM.
Este rol es parte de mi proyecto OPS, sigue este enlace para verlo en acción. OPS proporciona muchas cosas, como un archivo vagrant para máquinas virtuales de desarrollo, playbooks para la orquestación de roles, archivos de inventario, ejemplos para la configuración de roles, archivo de configuración de ansible y mucho más.
Compatibilidad
Probado y aprobado en:
- Debian jessie (8+)
- Ubuntu Trusty (14.04 LTS)
- Ubuntu Xenial (16.04 LTS)
Variables del Rol
# usar repositorio personalizado
php_use_custom_repository: yes
php_custom_repositories_key_url: https://www.dotdeb.org/dotdeb.gpg
php_custom_repositories:
- deb http://packages.dotdeb.org jessie all
- deb-src http://packages.dotdeb.org jessie all
# Elegir paquetes a instalar
php_packages:
- php7.0-fpm
- php7.0-cli
- php7.0-common
- php7.0-dev
- php7.0-opcache
- php7.0-mbstring
- php7.0-memcached
- php7.0-mysql
- php7.0-redis
- php7.0-curl
- php7.0-json
- php7.0-xsl
- php7.0-xml
- php7.0-mongodb
- php7.0-imagick
# Define tus propios pools
php_pools:
www:
user: "www-data"
group: "www-data"
listen: "/var/run/php-fpm.sock"
listen.owner: "www-data"
listen.group: "www-data"
listen.allowed_clients: "127.0.0.1"
pm: "dynamic"
pm.max_children: "5"
pm.start_servers: "2"
pm.min_spare_servers: "1"
pm.max_spare_servers: "3"
pm.process_idle_timeout: "30s"
pm.max_requests: "500"
# Configuraciones personalizadas de php.ini
php_ini_custom:
opcache:
opcache.blacklist_filename: "{{ php_fpm_root_dir }}/fpm/opcache.blacklist"
newrelic:
newrelic.enabled: "true"
newrelic.license: "REPLACE IT WITH YOUR KEY"
newrelic.logfile: "/var/log/newrelic/php_agent.log"
newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.port: "/tmp/.newrelic.sock"
newrelic.daemon.location: "/usr/bin/newrelic-daemon"
newrelic.daemon.collector_host: "collector.newrelic.com"
newrelic.analytics_events.enabled: "true"
# Lista negra de Opcache
php_opcache_blacklist: []
# Configuración básica de Php FPM
php_fpm_root_dir: /etc/php/7.0
php_fpm_daemon: php7.0-fpm
php_fpm_pid: /run/php-fpm.pid
php_fpm_error_log: /var/log/php-fpm.log
php_fpm_syslog_facility: daemon
php_fpm_syslog_ident: php-fpm
php_fpm_log_level: notice
php_fpm_emergency_restart_threshold: 0
php_fpm_emergency_restart_interval: 0
php_fpm_process_control_timeout: 0
php_fpm_process_max: 128
php_fpm_process_priority: -19
php_fpm_daemonize: yes
php_fpm_rlimit_files: 1024
php_fpm_rlimit_core: 0
php_fpm_events_mechanism: epoll
php_fpm_systemd_interval: 10
php_fpm_pools_include: "{{ php_fpm_root_dir }}/fpm/pool.d/*.conf"
# Habilitar extras
php_blackfire_enabled: true
php_composer_enabled: true
php_newrelic_enabled: true
# Configuración de Blackfire.io
php_blackfire_daemon: blackfire-agent
php_blackfire_test_mode: false
php_blackfire_key_url: https://packagecloud.io/gpg.key
php_blackfire_package_url: http://packages.blackfire.io/debian
php_blackfire_directory: /etc/blackfire
php_blackfire_packages:
- blackfire-agent
- blackfire-php
# Configuración del agente de Blackfire
php_blackfire_cert: # Establece los certificados codificados en PEM
php_blackfire_collector: https://blackfire.io # Establece la URL del recopilador de datos de Blackfire
php_blackfire_http_proxy: # Establece el proxy http a usar
php_blackfire_https_proxy: # Establece el proxy https a usar
php_blackfire_log_file: stderr # Establece la ruta del archivo de registro. Usa stderr para registrar en stderr
php_blackfire_log_level: 1 # nivel de verbosidad del registro (4: depuración, 3: información, 2: advertencia, 1: error)
php_blackfire_server_id: "REPLACE_IT_WITH_YOUR_KEY" # Establece el id del servidor usado para autenticar con la API de Blackfire
php_blackfire_server_token: "REPLACE_IT_WITH_YOUR_KEY" # Establece el token del servidor usado para autenticar con la API de Blackfire. No es seguro configurarlo desde la línea de comandos
php_blackfire_socket: "unix:///var/run/blackfire/agent.sock" # Establece el socket desde el cual el agente leerá los rastros. El valor posible puede ser un socket unix o una dirección TCP
php_blackfire_spec: # Establece la ruta al archivo de especificaciones json
# Configuración de Composer
php_composer_download_url: https://getcomposer.org/installer
php_composer_path: /usr/local/bin/composer
php_composer_version: ''
# Configuración de Newrelic APM
php_newrelic_apt_key_url: https://download.newrelic.com/548C16BF.gpg
php_newrelic_apt_url: http://apt.newrelic.com/debian/
php_newrelic_packages:
- newrelic-php5
Ejemplo de Playbook
- hosts: servers
roles:
- { role: jebovic.php }
Ejemplo: configuración
# Define tus propios pools
php_pools:
my_pool:
user: "me"
group: "me"
listen: "/var/run/php-fpm.sock"
listen.owner: "www-data"
listen.group: "www-data"
listen.allowed_clients: "127.0.0.1"
pm: "dynamic"
pm.max_children: "10"
pm.start_servers: "4"
pm.min_spare_servers: "2"
pm.max_spare_servers: "6"
pm.process_idle_timeout: "300s"
pm.max_requests: "300"
# Configuración personalizada de php, conéctalo con mis otros roles, mailhog (capturador de correo), memcached, newrelic, blackfire...
php_ini_custom:
Session:
session.save_handler: memcached
session.save_path: "{{ memcache_listen_address }}:{{ memcache_port }}"
mail function:
sendmail_from: [email protected]
sendmail_path: "{{ mailhog_mhsendmail_path }}"
opcache:
opcache.enable_cli: Off
opcache.blacklist_filename: /etc/php5/fpm/opcache.blacklist
newrelic:
newrelic.enabled: "true"
newrelic.license: "{{ newrelic_license }}"
newrelic.logfile: "/var/log/newrelic/php_agent.log"
newrelic.appname: "{{ ansible_hostname|default('VM Test') }}"
newrelic.daemon.logfile: "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.port: "/tmp/.newrelic.sock"
newrelic.daemon.location: "/usr/bin/newrelic-daemon"
newrelic.daemon.collector_host: "collector.newrelic.com"
newrelic.analytics_events.enabled: "true"
Etiquetas
- php_blackfire_config : solo configura blackfire y reinicia los servicios php y blackfire
- php_config : solo actualiza la configuración y reinicia el servicio
- php_composer : solo instala composer
- php_blackfire : solo instala, configura y comienza el servicio de blackfire
- php_newrelic : solo añade el plugin newrelic apm para php
Licencia
MIT
Información del Autor
Jérémy Baumgarth https://github.com/jebovic
Acerca del proyecto
Install and configure php-fpm for lamp and lemp stack, add your own pools configurations, and customize all the php.ini config from yaml variables, also included: composer, newrelic apm, blackfire apm
Instalar
ansible-galaxy install jebovic.php
Licencia
mit
Descargas
591
Propietario