php

php

Статус сборки Ansible Galaxy

Установите и настройте php-fpm для стеков lamp и lemp, добавьте собственные конфигурации пулов и настройте все параметры php.ini с помощью переменных yaml.

Бонус: добавьте расширения для blackfire и newrelic APM.

Эта роль является частью моего OPS проекта. Перейдите по ссылке, чтобы увидеть, как это работает. OPS предлагает множество вещей, таких как файл vagrant для виртуальных машин разработки, сценарии для оркестрации ролей, файлы инвентаризации, примеры конфигураций ролей, конфигурационный файл ansible и многое другое.

Совместимость

Тестировалось и одобрено на:

  • Debian jessie (8+)
  • Ubuntu Trusty (14.04 LTS)
  • Ubuntu Xenial (16.04 LTS)

Переменные роли

# использовать пользовательский репозиторий
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

# Выбор пакетов для установки
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

# Определите свои собственные пулы
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"

# Пользовательские php.ini конфигурации
php_ini_custom:
  opcache:
    opcache.blacklist_filename: "{{ php_fpm_root_dir }}/fpm/opcache.blacklist"
  newrelic:
    newrelic.enabled: "true"
    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"

# Список блокировки Opcache
php_opcache_blacklist: []

# Основная конфигурация 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"

# Включите дополнительные функции
php_blackfire_enabled: true
php_composer_enabled: true
php_newrelic_enabled: true

# Конфигурация 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

# Конфигурация агента Blackfire
php_blackfire_cert: # Устанавливает сертификаты в формате PEM
php_blackfire_collector: https://blackfire.io                # Устанавливает URL-адрес сборщика данных Blackfire
php_blackfire_http_proxy: # Устанавливает http-прокси для использования
php_blackfire_https_proxy: # Устанавливает https-прокси для использования
php_blackfire_log_file: stderr                               # Устанавливает путь к файлу журнала. Используйте stderr для записи в stderr
php_blackfire_log_level: 1                                   # уровень детализации журнала (4: отладка, 3: информация, 2: предупреждение, 1: ошибка)
php_blackfire_server_id: "ЗАМЕНИТЕ_ЭТО НА СВОЙ КЛЮЧ"          # Устанавливает идентификатор сервера для аутентификации с API Blackfire
php_blackfire_server_token: "ЗАМЕНИТЕ_ЭТО НА СВОЙ КЛЮЧ"       # Устанавливает токен сервера для аутентификации с API Blackfire. Небезопасно задавать это из командной строки
php_blackfire_socket: "unix:///var/run/blackfire/agent.sock" # Устанавливает сокет, из которого агент должен читать трассировки. Возможные значения могут быть unix-сокетом или адресом TCP
php_blackfire_spec: # Устанавливает путь к файлу спецификаций json

# Конфигурация Composer
php_composer_download_url: https://getcomposer.org/installer
php_composer_path: /usr/local/bin/composer
php_composer_version: ''

# Конфигурация 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

Пример Playbook

- hosts: servers
  roles:
     - { role: jebovic.php }

Пример: конфигурация

# Определите свои собственные пулы
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"
# Пользовательская конфигурация php, связанная с моими другими ролями, mailhog (приемник почты), 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"

Теги

  • php_blackfire_config : только настроить blackfire и перезапустить php и blackfire сервисы
  • php_config : только обновить конфигурацию и перезапустить сервис
  • php_composer : только установить composer
  • php_blackfire : только установить, настроить и запустить blackfire сервис
  • php_newrelic : только добавить плагин newrelic apm для php

Лицензия

MIT

Авторская информация

Жérémy Baumgarth https://github.com/jebovic

О проекте

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

Установить
ansible-galaxy install jebovic/ansible-php
Лицензия
mit
Загрузки
581
Владелец