apham0001.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/abgelegten PHP-Version verwenden, müssen Sie ein Repository oder PPA mit einer unterstützten PHP-Version nutzen, da diese Rolle nur mit von der PHP-Community unterstützten Versionen funktioniert.

Variablen der Rolle

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

php_packages: []

Eine Liste der zu installierenden PHP-Pakete (Standard ist OS-spezifisch). Sie möchten wahrscheinlich gängige Pakete wie php, php-cli, php-devel und php-pdo installieren und können weitere Pakete hinzufügen (z.B. php-gd für Bildbearbeitung oder php-ldap, wenn Sie sich mit einem LDAP-Server authentifizieren 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 zur Installation, ohne die Standardliste zu überschreiben.

php_enable_webserver: true

Wenn die Verwendung von PHP mit einem Webserver (z.B. Apache oder Nginx) verbunden ist, lassen Sie diesen Standardwert. Wenn Sie PHP serverseitig oder für eine kleine 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-Daedalon sind httpd (von Apache verwendet) für RedHat/CentOS oder apache2 (auch von Apache verwendet) für Debian/Ubuntu. Wenn Sie einen anderen Webserver (z.B. nginx) betreiben, ä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 (ich empfehle geerlingguy.repo-epel oder geerlingguy.repo-remi), können diese Repositories unter dieser Variablen aufgelistet werden (z.B. remi-php70,epel). Das kann praktisch sein, wenn Sie die neueste Version von PHP 7.0 installieren möchten, die im Remi-Repository verfügbar ist.

php_default_version_debian: "7.0"

(Nur Debian/Ubuntu) Die Standardversion von PHP in den jeweiligen OS-Repositorys. Standardmäßig auf die neueste Ubuntu LTS-Version festgelegt. Ubuntu 18.04 benötigt, dass dies auf "7.2" gesetzt wird, da PHP 7.0 in den Standard-Paketen für bionic nicht verfügbar ist.

Wenn Sie PHP-Versionen leicht wechseln oder eine Version verwenden möchten, die in Systempaketen nicht verfügbar ist: Sie können die geerlingguy.php-versions Rolle verwenden, um einfacher zwischen Haupt-PHP-Versionen (z.B. 5.6, 7.1, 7.2) zu wechseln.

php_packages_state: "present"

Wenn Sie zusätzliche Repositories wie geerlingguy.repo-epel oder geerlingguy.repo-remi aktiviert haben, möchten Sie möglicherweise einen einfachen Weg, PHP-Versionen schnell zu wechseln. Standardmäßig ist dies auf "present" gesetzt. Sie können diese Variable auf "latest" überschreiben, um auf die neueste verfügbare Version zu aktualisieren. Zusammen mit php_enablerepo muss ein Benutzer jetzt nicht mehr manuell die vorhandenen PHP-Pakete deinstallieren, bevor er sie aus einem anderen Repository installiert.

php_install_recommends: true

(Nur Debian/Ubuntu) Ob empfohlene Pakete bei der Installation von php_packages installiert werden sollen; Sie möchten dies möglicherweise ausdrücklich auf no setzen, wenn Sie ein PPA installieren, das bestimmte Pakete empfiehlt, die Sie nicht möchten (z.B. Onfrejs php PPA wird php7.0-cli installieren, wenn Sie php-pear neben php5.6-cli installieren... was oft nicht gewünscht ist!).

php_executable: "php"

Die ausführbare Datei, die beim Aufruf von PHP über die Kommandozeile ausgeführt wird. Dieses sollten Sie nur ändern, wenn php auf Ihrem Server nicht das richtige ausführbare Ziel hat oder wenn Sie Software-Kollektionen auf RHEL/CentOS verwenden und eine andere PHP-Version ansprechen müssen.

PHP-FPM

PHP-FPM ist ein einfacher und robuster FastCGI-Prozess-Manager für PHP. Es kann das Skalieren von PHP-Anwendungen erheblich erleichtern und ist die übliche Methode, um PHP-basierte Seiten und Anwendungen mit einem Webserver wie Nginx auszuführen (aber es kann genauso leicht mit anderen Webservern verwendet werden).

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

php_enable_php_fpm: false

Wenn Sie Apache verwenden, können Sie es einfach so konfigurieren, dass es mit PHP-FPM funktioniert, indem Sie die geerlingguy.apache-php-fpm Rolle verwenden.

php_fpm_pools:
  - php_fpm_pool: www
    php_fpm_user: www
    php_fpm_group: www
    php_fpm_listen: /run/php/php7.3-fpm.sock
    php_fpm_pm_max_children: 5
    php_fpm_pm_start_servers: 2
    php_fpm_pm_min_spare_servers: 1
    php_fpm_pm_max_spare_servers: 3
    php_fpm_pm_process_idle_timeout: 10s
    php_fpm_pm_max_requests: 0
    php_fpm_request_slowlog_timeout: 0
    php_fpm_request_terminate_timeout: 0
    php_fpm_rlimits_files: 1024
    php_fpm_admin_value_sendmail_path: [email protected]
    extra_parameters: |
      php_admin_value[memory_limit] = 128M

php.ini-Einstellungen

php_use_managed_ini: true

Standardmäßig werden alle zusätzlichen Standards unten über die php.ini angewendet, die mit dieser Rolle enthalten ist. Sie können Ihre php.ini-Datei selbst verwalten (wenn Sie mehr Flexibilität in ihrer Konfiguration benötigen), indem Sie dies auf false setzen (in diesem Fall werden alle untenstehenden 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 sich nur aus, 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 Sie genügend Speicher und Dateiplätze im OpCache ( php_opcache_memory_consumption, in MB, und php_opcache_max_accelerated_files) zugewiesen haben, um allen PHP-Code, den Sie ausführen, zu enthalten. Andernfalls erhalten Sie möglicherweise eine weniger optimale Leistung!

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

php_opcache_conf_filename: [plattform-spezifisch]

Der plattform-spezifische Konfigurationsdateiname für den OpCache. Im Allgemeinen sollte das Standard funktionieren, aber in einigen Fällen müssen Sie möglicherweise 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 php_apc_shm_size, damit es alle Cache-Einträge im Speicher mit einem kleinen Overhead speichert (Fragmentierung oder APC, die ohne Speicher läuft, verlangsamen PHP dramatisch).

php_apc_conf_filename: [plattform-spezifisch]

Der plattform-spezifische APC-Konfigurationsdateiname. Im Allgemeinen sollte das Standard funktionieren, aber in einigen Fällen müssen Sie möglicherweise den Dateinamen überschreiben.

Sicherstellen, dass APC installiert ist

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

  • 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 den Quellen

Wenn Sie eine spezifische PHP-Version benötigen oder die neueste (z.B. master) Version von PHP testen möchten, gibt es eine gute Chance, dass es kein passendes Paket bereits im Paketmanager Ihrer Plattform gibt. In diesen Fällen können Sie PHP aus den Quellen installieren, indem Sie es direkt kompilieren.

Beachten Sie, dass die Kompilation aus den Quellen viel länger dauert als die Installation aus Paketen (PHP HEAD benötigt auf einem modernen Quad-Core-Computer über 5 Minuten zur Kompilierung, nur als Referenz).

php_install_from_source: false

Setzen Sie dies auf true, um PHP aus den Quellen anstelle von Paketen zu installieren.

php_source_version: "master"

Die Version von PHP, die aus den Quellen 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"

Ort, an dem die Quellen geklont und installiert werden, und der Ort der GMP-Kopfdatei (die plattform-/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 kann die Kompilierungszeiten erheblich beschleunigen, wenn Sie über mehrere Kerne verfügen.

php_source_configure_command: >
  [...]

Der ./configure Befehl, der das Makefile erstellt, das für die PHP-Kompilierung verwendet wird. Fügen Sie alle Optionen hinzu, die Sie für Ihre spezifische Umgebung benötigen. Durch die Verwendung einer gefalteten Skalar (>) können Sie die Variable über mehrere Zeilen definieren, was für die Lesbarkeit und Quellkontrolle äußerst hilfreich ist!

Einige weitere Hinweise/Vorbehalte 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 in Ubuntu), und Sie müssen sicherstellen, dass die Option --with-apxs2 im php_source_configure_command definiert ist. Schließlich müssen Sie sicherstellen, dass das mpm_prefork-Modul geladen ist statt mpm_worker oder mpm_event, und wahrscheinlich eine phpX.conf (wobei X die Hauptversion von PHP ist) Konfigurationsdatei in den 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. Stellen Sie außerdem sicher, dass die Unterstützung von Apache für CGI und Event 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

Autorinformationen

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

Installieren
ansible-galaxy install apham0001.php
GitHub Repository
Lizenz
mit
Downloads
288
Besitzer