jebovic.php

php

Build-Status Ansible-Galaxy

Installieren und Konfigurieren von php-fpm für LAMP- und LEMP-Umgebungen, fügen Sie Ihre eigenen Pool-Konfigurationen hinzu und passen Sie alle php.ini-Einstellungen mit YAML-Variablen an.

Bonus: Erweiterungen für Blackfire und New Relic APM hinzufügen.

Dieses Role ist Teil meines OPS-Projekts. Folgen Sie diesem Link, um es in Aktion zu sehen. OPS bietet viele Dinge, wie eine Vagrant-Datei für Entwicklungs-VMs, Playbooks für die Orchestrierung von Rollen, Inventardateien, Beispiele für die Konfiguration von Rollen, eine Ansible-Konfigurationsdatei und vieles mehr.

Kompatibilität

Getestet und genehmigt auf:

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

Rollen-Variablen

# Benutzerdefiniertes Repository verwenden
php_use_custom_repository: ja
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

# Wählen Sie die Pakete aus, die installiert werden sollen
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

# Definieren Sie Ihre eigenen 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: "dynamisch"
    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"

# Benutzerdefinierte php.ini-Einstellungen
php_ini_custom:
  opcache:
    opcache.blacklist_filename: "{{ php_fpm_root_dir }}/fpm/opcache.blacklist"
  newrelic:
    newrelic.enabled: "true"
    newrelic.license: "ERSATZE SIE MIT IHREM SCHLÜSSEL"
    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-Blacklist
php_opcache_blacklist: []

# Grundkonfiguration von 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: ja
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"

# Extras aktivieren
php_blackfire_enabled: true
php_composer_enabled: true
php_newrelic_enabled: true

# Konfiguration für 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

# Konfiguration des Blackfire-Agenten
php_blackfire_cert: # Setzt die PEM-codierten Zertifikate
php_blackfire_collector: https://blackfire.io                # Setzt die URL des Datenkollektors von Blackfire
php_blackfire_http_proxy: # Setzt den zu verwendenden HTTP-Proxy
php_blackfire_https_proxy: # Setzt den zu verwendenden HTTPS-Proxy
php_blackfire_log_file: stderr                               # Setzt den Pfad zur Protokolldatei. Verwenden Sie stderr, um in stderr zu protokollieren
php_blackfire_log_level: 1                                   # Protokollierungsstufe (4: debug, 3: info, 2: warning, 1: error)
php_blackfire_server_id: "ERSATZE_ES_MIT_DEINEM_SCHLÜSSEL"  # Setzt die Server-ID zur Authentifizierung mit der Blackfire-API
php_blackfire_server_token: "ERSATZE_ES_MIT_DEINEM_SCHLÜSSEL" # Setzt das Server-Token zur Authentifizierung mit der Blackfire-API. Es ist unsicher, dies über die Befehlszeile festzulegen
php_blackfire_socket: "unix:///var/run/blackfire/agent.sock" # Setzt den Socket, von dem der Agent die Traces lesen soll. Mögliche Werte können ein Unix-Socket oder eine TCP-Adresse sein
php_blackfire_spec: # Setzt den Pfad zur JSON-Spezifikationsdatei

# Composer-Konfiguration
php_composer_download_url: https://getcomposer.org/installer
php_composer_path: /usr/local/bin/composer
php_composer_version: ''

# New Relic APM-Konfiguration
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

Beispiel-Playbook

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

Beispiel: Konfiguration

# Definieren Sie Ihre eigenen 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: "dynamisch"
    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"
# Benutzerdefinierte PHP-Konfiguration, verlinkt mit meinen anderen Rollen, Mailhog (Mailfänger), Memcached, New Relic, 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: Aus
    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"

Tags

  • php_blackfire_config : nur Blackfire konfigurieren und PHP- und Blackfire-Dienste neu starten
  • php_config : nur Konfiguration aktualisieren und Dienst neu starten
  • php_composer : nur Composer installieren
  • php_blackfire : nur Blackfire-Dienst installieren, konfigurieren und starten
  • php_newrelic : nur New Relic APM-Plugin für PHP hinzufügen

Lizenz

MIT

Autoreninformationen

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

Über das Projekt

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

Installieren
ansible-galaxy install jebovic.php
GitHub Repository
Lizenz
mit
Downloads
591