net2grid.php

Ansible Rolle: PHP

Build Status

Installiert PHP auf RedHat/CentOS und Debian/Ubuntu Server.

Anforderungen

Wenn Sie eine ältere LTS-Version von Ubuntu oder RHEL mit einer alten Version von PHP verwenden, müssen Sie ein Repository oder PPA mit einer unterstützten PHP-Version verwenden, da diese Rolle nur mit PHP-Versionen, die derzeit unterstützt werden, funktioniert.

Rollenarmlen

Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml):

php_packages: []

Eine Liste der PHP-Pakete, die installiert werden sollen (Standardmäßig OS-spezifisch). Wahrscheinlich möchten Sie gängige Pakete wie php, php-cli, php-devel und php-pdo installieren. Sie können auch andere Pakete hinzufügen (zum Beispiel php-gd für Bildbearbeitung oder php-ldap, wenn Sie sich mit einem LDAP-Server zur Authentifizierung verbinden müssen).

Hinweis: Wenn Sie Debian/Ubuntu verwenden, müssen Sie auch libapache2-mod-fastcgi (für cgi/PHP-FPM) oder libapache2-mod-php7.0 (oder ein ähnliches Paket, je nach PHP-Version) installieren, wenn Sie mod_php mit Apache verwenden möchten.

php_packages_extra: []

Eine Liste zusätzlicher PHP-Pakete, die installiert werden sollen, ohne die Standardliste zu überschreiben.

php_enable_webserver: true

Wenn Ihre Verwendung von PHP an einen Webserver (z. B. Apache oder Nginx) gebunden ist, lassen Sie diesen Standardwert unverändert. Wenn Sie PHP serverseitig oder zum Ausführen einer kleinen Anwendung verwenden, setzen Sie diesen Wert auf false, damit diese Rolle nicht versucht, mit einem Webserver zu interagieren.

php_webserver_daemon: "httpd"

Die Standardwerte für den HTTP-Server-Daemon sind httpd (von Apache verwendet) für RedHat/CentOS oder apache2 (ebenfalls von Apache verwendet) für Debian/Ubuntu. Wenn Sie einen anderen Webserver (z. B. nginx) ausführen, ändern Sie diesen Wert in den Namen des Daemons, unter dem der Webserver läuft.

php_enablerepo: ""

(Nur RedHat/CentOS) Wenn Sie zusätzliche Repositories aktiviert haben (z. B. geerlingguy.repo-epel oder geerlingguy.repo-remi), können Sie diese Repositories unter dieser Variable auflisten (z. B. remi-php70,epel). Dies kann hilfreich sein, wenn Sie die neueste Version von PHP 7.0 installieren möchten, die im Remi-Repository verfügbar ist.

php_packages_state: "present"

Wenn Sie zusätzliche Repositories wie geerlingguy.repo-epel oder geerlingguy.repo-remi aktiviert haben, möchten Sie möglicherweise eine einfache Möglichkeit, die PHP-Versionen bei Bedarf zu wechseln. Standardmäßig ist dies auf "present" gesetzt. Sie können diese Variable auf "latest" ändern, um auf die neueste verfügbare Version zu aktualisieren. In Kombination mit php_enablerepo muss der Benutzer die vorhandenen PHP-Pakete nicht manuell deinstallieren, bevor er sie aus einem anderen Repository installiert.

Sie können auch die geerlingguy.php-versions Rolle verwenden, um einfacher zwischen Hauptversionen von PHP (z. B. 5.6, 7.0, 7.1, 7.2) zu wechseln.

php_install_recommends: true

(Nur Debian/Ubuntu) Ob empfohlene Pakete bei der Installation von php_packages installiert werden sollen; Sie sollten dies explizit auf nein setzen, wenn Sie ein PPA installieren, das bestimmte Pakete empfiehlt, die Sie nicht möchten (z. B. wird Ondrejs php PPA php7.0-cli installieren, wenn Sie php-pear zusammen mit php5.6-cli installieren... was oft unerwünscht ist!).

php_executable: "php"

Die ausführbare Datei, die aufgerufen wird, wenn PHP von der Kommandozeile ausgeführt wird. Sie sollten dies nur ändern, wenn das Ausführen von php auf Ihrem Server nicht die richtige ausführbare Datei anspricht oder wenn Sie Software-Sammlungen auf RHEL/CentOS verwenden und eine andere PHP-Version ansprechen müssen.

PHP-FPM

PHP-FPM ist ein einfacher und robuster FastCGI-Prozessmanager für PHP. Es erleichtert das Skalieren von PHP-Anwendungen erheblich und ist der normale Weg, PHP-basierte Websites und Anwendungen mit einem Webserver wie Nginx auszuführen (obwohl es genauso gut mit anderen Webservern verwendet werden kann).

Wenn Sie diese Rolle mit PHP verwenden, das als php-fpm läuft, anstatt als Prozess innerhalb eines Webservers (z. B. Apache's mod_php), müssen Sie die folgende Variable auf true setzen:

php_enable_php_fpm: false

Wenn Sie Apache verwenden, können Sie es einfach konfigurieren, um mit PHP-FPM zu arbeiten, indem Sie die geerlingguy.apache-php-fpm Rolle verwenden.

php_fpm_listen: "127.0.0.1:9000"
php_fpm_listen_allowed_clients: "127.0.0.1"
php_fpm_pm_max_children: 50
php_fpm_pm_start_servers: 5
php_fpm_pm_min_spare_servers: 5
php_fpm_pm_max_spare_servers: 5

Spezifische Einstellungen im Standard www.conf PHP-FPM-Pool. Wenn Sie zusätzliche Einstellungen verwalten möchten, können Sie dies tun, indem Sie die Datei durch Ihre eigene Vorlage ersetzen oder lineinfile verwenden, wie es diese Rolle in tasks/configure-fpm.yml tut.

php.ini Einstellungen

php_use_managed_ini: true

Standardmäßig werden alle zusätzlichen Standards unten durch die in dieser Rolle enthaltene php.ini angewendet. Sie können Ihre php.ini-Datei selbst verwalten (wenn Sie mehr Flexibilität in der Konfiguration benötigen), indem Sie dies auf false setzen (in diesem Fall werden alle unten genannten Variablen ignoriert).

php_fpm_pool_user: "[apache|nginx|other]" # Standard variiert je nach OS
php_fpm_pool_group: "[apache|nginx|other]" # Standard variiert je nach OS
php_memory_limit: "256M"
php_max_execution_time: "60"
php_max_input_time: "60"
php_max_input_vars: "1000"
php_realpath_cache_size: "32K"
php_file_uploads: "On"
php_upload_max_filesize: "64M"
php_max_file_uploads: "20"
php_post_max_size: "32M"
php_date_timezone: "America/Chicago"
php_allow_url_fopen: "On"
php_sendmail_path: "/usr/sbin/sendmail -t -i"
php_output_buffering: "4096"
php_short_open_tag: false
php_error_reporting: "E_ALL & ~E_DEPRECATED & ~E_STRICT"
php_display_errors: "Off"
php_display_startup_errors: "On"
php_expose_php: "On"
php_session_cookie_lifetime: 0
php_session_gc_probability: 1
php_session_gc_divisor: 1000
php_session_gc_maxlifetime: 1440
php_session_save_handler: files
php_session_save_path: ''
php_disable_functions: []

Verschiedene Standards für PHP. Nur verwendet, wenn php_use_managed_ini auf true gesetzt ist.

OpCache-bezogene Variablen

Der OpCache ist in PHP ab Version 5.5 enthalten, und die folgenden Variablen wirken nur, wenn die installierte PHP-Version 5.5 oder höher ist.

php_opcache_zend_extension: "opcache.so"
php_opcache_enable: "1"
php_opcache_enable_cli: "0"
php_opcache_memory_consumption: "96"
php_opcache_interned_strings_buffer: "16"
php_opcache_max_accelerated_files: "4096"
php_opcache_max_wasted_percentage: "5"
php_opcache_validate_timestamps: "1"
php_opcache_revalidate_path: "0"
php_opcache_revalidate_freq: "2"
php_opcache_max_file_size: "0"

OpCache ini-Direktiven, die oft auf einem System angepasst werden. Stellen Sie sicher, dass genug Speicher und Dateispeicher im OpCache (php_opcache_memory_consumption, in MB, und php_opcache_max_accelerated_files) zugewiesen sind, um den gesamten PHP-Code zu enthalten, den Sie ausführen. Andernfalls können Sie eine weniger als optimale Leistung erhalten!

Für einen benutzerdefinierten Speicherort von opcache.so geben Sie den vollständigen Pfad mit php_opcache_zend_extension an.

php_opcache_conf_filename: [plattformspezifisch]

Der plattformspezifische OpCache-Konfigurationsdateiname. Im Allgemeinen sollte der Standard funktionieren, aber in einigen Fällen müssen Sie den Dateinamen überschreiben.

APCu-bezogene Variablen

php_enable_apc: true

Ob APCu aktiviert werden soll. Andere APCu-Variablen sind wirkungslos, wenn dies auf false gesetzt ist.

php_apc_shm_size: "96M"
php_apc_enable_cli: "0"

APCu ini-Direktiven, die oft auf einem System angepasst werden. Setzen Sie die php_apc_shm_size, damit sie alle Cache-Einträge im Speicher mit einem kleinen Overhead hält (Fragmentierung oder APC, die keinen Speicher mehr hat, verlangsamen PHP dramatisch).

php_apc_conf_filename: [plattformspezifisch]

Der plattformspezifische APC-Konfigurationsdateiname. Im Allgemeinen sollte der Standard funktionieren, aber in einigen Fällen müssen Sie den Dateinamen überschreiben.

Sicherstellen, dass APC installiert ist

Wenn Sie APC verwenden, müssen Sie sicherstellen, dass APC installiert ist (es wird standardmäßig installiert, aber wenn Sie die Liste php_packages anpassen, müssen Sie APC in die Liste aufnehmen):

  • Auf RHEL/CentOS-Systemen: Stellen Sie sicher, dass php-pecl-apcu in der Liste der php_packages enthalten ist.
  • Auf Debian/Ubuntu-Systemen: Stellen Sie sicher, dass php-apcu in der Liste der php_packages enthalten ist.

Installation aus dem Quellcode

Wenn Sie eine bestimmte Version von PHP benötigen oder die neueste (z. B. Master) Version von PHP testen möchten, gibt es gute Chancen, dass im Paketmanager Ihres Systems kein geeignetes Paket verfügbar ist. In diesen Fällen können Sie entscheiden, PHP aus dem Quellcode zu installieren, indem Sie es direkt kompilieren.

Bitte beachten Sie, dass die Kompilierung aus dem Quellcode viel länger dauert als die Installation aus Paketen (PHP HEAD benötigt auf einem modernen Quad-Core-Computer mehr als 5 Minuten zur Kompilierung, nur als grobe Referenz).

php_install_from_source: false

Setzen Sie dies auf true, um PHP aus dem Quellcode zu installieren, anstatt aus Paketen.

php_source_version: "master"

Die Version von PHP, die aus dem Quellcode installiert werden soll (ein Git-Zweig, Tag oder Commit-Hash).

php_source_clone_dir: "~/php-src"
php_source_clone_depth: 1
php_source_install_path: "/opt/php"
php_source_install_gmp_path: "/usr/include/x86_64-linux-gnu/gmp.h"

Der Ort, an dem der Quellcode geklont und installiert wird, sowie der Speicherort der GMP-Headerdatei (die plattform- oder distributionsspezifisch sein kann).

php_source_make_command: "make"

Setzen Sie den make-Befehl auf make --jobs=X, wobei X die Anzahl der Kerne ist, die auf dem Server vorhanden sind, auf dem PHP kompiliert wird. Dies beschleunigt die Kompilierungszeiten erheblich, wenn Sie mehrere Kerne haben.

php_source_configure_command: >
  [...]

Der ./configure-Befehl, der die Makefile erstellt, die für die PHP-Kompilierung verwendet werden soll. Fügen Sie alle Optionen hinzu, die Sie für Ihre spezielle Umgebung benötigen. Die Verwendung eines gefalteten Skalars (>) ermöglicht es Ihnen, die Variable über mehrere Zeilen zu definieren, was äußerst hilfreich für die Lesbarkeit und Versionskontrolle ist!

Einige andere Hinweise/Hinweise für spezifische Konfigurationen:

  • Apache mit mpm_prefork: Wenn Sie Apache mit Prefork als Webserver für PHP verwenden, müssen Sie sicherstellen, dass apxs2 auf Ihrem System verfügbar ist (z. B. durch Installation von apache2-prefork-dev unter Ubuntu) und dass die Option --with-apxs2 im php_source_configure_command definiert ist. Schließlich müssen Sie sicherstellen, dass das Modul mpm_prefork statt mpm_worker oder mpm_event geladen ist, und wahrscheinlich eine phpX.conf (wobei X die Hauptversion von PHP ist) Konfigurationsdatei zum Apache-Modulkonfigurationsordner mit Inhalten wie php7.conf hinzufügen.
  • Apache mit mpm_event oder mpm_worker: Wenn Sie Apache mit Event oder Worker als Webserver für PHP verwenden, müssen Sie PHP mit FPM kompilieren. Stellen Sie sicher, dass die Option --enable-fpm im php_source_configure_command definiert ist. Sie müssen auch sicherstellen, dass Apaches Unterstützung für CGI und Ereignis installiert ist (z. B. durch Installation von apache2-mpm-event und libapache2-mod-fastcgi) und das mpm_event-Modul geladen ist.
  • Nginx: Wenn Sie Nginx als Webserver für PHP verwenden, müssen Sie PHP mit FPM kompilieren. Stellen Sie sicher, dass die Option --enable-fpm im php_source_configure_command definiert ist.

Abhängigkeiten

Keine.

Beispiel-Playbook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.php }

In vars/main.yml:

php_memory_limit: "128M"
php_max_execution_time: "90"
php_upload_max_filesize: "256M"
php_packages:
  - php
  - php-cli
  - php-common
  - php-devel
  - php-gd
  - php-mbstring
  - php-pdo
  - php-pecl-apcu
  - php-xml
  ...

Lizenz

MIT / BSD

Autor-Informationen

Diese Rolle wurde 2014 von Jeff Geerling erstellt, Autor von Ansible for DevOps.

Installieren
ansible-galaxy install net2grid.php
GitHub Repository
Lizenz
mit
Downloads
274
Besitzer
We empower energy retailers to help consumers become energy efficient by unlocking value from Smart Meter data