apham0001.php

Rola Ansible: PHP

Status budowy

Instaluje PHP na serwerach RedHat/CentOS i Debian/Ubuntu.

Wymagania

Jeśli korzystasz ze starszej wersji LTS Ubuntu lub RHEL z przestarzałą wersją PHP, musisz użyć repozytorium lub PPA z aktualizowaną wersją PHP, ponieważ ta rola działa tylko z wspieranymi wersjami PHP przez społeczność PHP.

Zmienne roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml):

php_packages: []

Lista pakietów PHP do zainstalowania (domyślnie specyficzna dla systemu operacyjnego). Prawdopodobnie będziesz chciał zainstalować popularne pakiety, takie jak php, php-cli, php-devel i php-pdo, a także możesz dodać inne pakiety, które chcesz (na przykład php-gd do manipulacji obrazami lub php-ldap, jeśli potrzebujesz połączenia z serwerem LDAP do autoryzacji).

Uwaga: Jeśli używasz Debian/Ubuntu, musisz również zainstalować libapache2-mod-fastcgi (do cgi/PHP-FPM) lub libapache2-mod-php7.0 (lub podobny pakiet, w zależności od wersji PHP), jeśli chcesz używać mod_php z Apache.

php_packages_extra: []

Lista dodatkowych pakietów PHP do zainstalowania, bez nadpisywania domyślnej listy.

php_enable_webserver: true

Jeśli korzystasz z PHP związanego z serwerem www (np. Apache lub Nginx), pozostaw tę domyślną wartość. Jeśli używasz PHP po stronie serwera lub do uruchomienia małej aplikacji, ustaw tę wartość na false, aby ta rola nie próbowała interagować z serwerem www.

php_webserver_daemon: "httpd"

Domyślne wartości dla demona serwera HTTP to httpd (używany przez Apache) dla RedHat/CentOS, lub apache2 (również używany przez Apache) dla Debian/Ubuntu. Jeśli korzystasz z innego serwera www (na przykład nginx), zmień tę wartość na nazwę demona, pod którym działa serwer www.

php_enablerepo: ""

(Tylko RedHat/CentOS) Jeśli włączyłeś dodatkowe repozytoria (możesz wypróbować geerlingguy.repo-epel lub geerlingguy.repo-remi), możesz je wymienić w tej zmiennej (np. remi-php70,epel). Może to być przydatne, jeśli chcesz zainstalować najnowszą wersję PHP 7.0, która jest w repozytorium Remi.

php_default_version_debian: "7.0"

(Tylko Debian/Ubuntu) Domyślna wersja PHP w danej wersji repozytoriów OS. Domyślnie ustawione na najnowszą wersję Ubuntu LTS. Ubuntu 18.04 wymaga ustawienia tego na "7.2" ponieważ PHP 7.0 nie jest dostępne w domyślnych pakietach bionic.

Jeśli chcesz mieć możliwość łatwego przełączania wersji PHP lub korzystania z wersji, która nie jest dostępna w pakietach systemowych: Możesz użyć roli geerlingguy.php-versions do łatwiejszego przełączania między głównymi wersjami PHP (np. 5.6, 7.1, 7.2).

php_packages_state: "present"

Jeśli włączyłeś dodatkowe repozytoria, takie jak geerlingguy.repo-epel lub geerlingguy.repo-remi, być może chcesz mieć łatwy sposób na swobodne zmienianie wersji PHP. Domyślnie ustawione na "present". Możesz nadpisać tę zmienną na "latest" aby zaktualizować do najnowszej dostępnej wersji. W połączeniu z php_enablerepo, użytkownik nie musi ręcznie odinstalowywać istniejących pakietów PHP przed ich instalacją z innego repozytorium.

php_install_recommends: true

(Tylko Debian/Ubuntu) Czy zainstalować zalecane pakiety podczas instalacji php_packages; możesz to ustawić na no, jeśli instalujesz PPA, które zaleca pewne pakiety, których nie chcesz (na przykład PPA Ondreja php zainstaluje php7.0-cli, jeśli zainstalujesz php-pear obok php5.6-cli... co jest często niepożądane!).

php_executable: "php"

Wykonywalny plik do uruchomienia podczas wywoływania PHP z wiersza poleceń. Powinieneś zmienić to tylko wtedy, gdy uruchamianie php na serwerze nie prowadzi do poprawnego wykonywalnego pliku lub jeśli korzystasz z kolekcji oprogramowania na RHEL/CentOS i potrzebujesz wskazać inną wersję PHP.

PHP-FPM

PHP-FPM to prosty i solidny menedżer procesów FastCGI dla PHP. Może znacznie ułatwić skalowanie aplikacji PHP i jest normalnym sposobem uruchamiania witryn i aplikacji opartych na PHP na serwerze www, takim jak Nginx (choć można go używać również z innymi serwerami www).

Kiedy używasz tej roli z PHP uruchamianym jako php-fpm zamiast jako proces wewnątrz serwera www (np. mod_php Apache'a), musisz ustawić następującą zmienną na true:

php_enable_php_fpm: false

Jeśli korzystasz z Apache, możesz łatwo skonfigurować jego współpracę z PHP-FPM za pomocą roli geerlingguy.apache-php-fpm.

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

Ustawienia php.ini

php_use_managed_ini: true

Domyślnie wszystkie dodatkowe ustawienia poniżej są stosowane za pomocą php.ini dołączonego do tej roli. Możesz samodzielnie zarządzać swoim plikiem php.ini (jeśli potrzebujesz większej elastyczności w jego konfiguracji), ustawiając tę wartość na false (w takim przypadku wszystkie poniższe zmienne będą ignorowane).

php_fpm_pool_user: "[apache|nginx|inne]" # domyślna wartość różni się w zależności od systemu
php_fpm_pool_group: "[apache|nginx|inne]" # domyślna wartość różni się w zależności od systemu
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: []

Różne domyślne ustawienia dla PHP. Używane tylko jeśli php_use_managed_ini jest ustawione na true.

Zmienne związane z OpCache

OpCache jest dołączony do PHP od wersji 5.5, a poniższe zmienne będą miały zastosowanie tylko wtedy, gdy zainstalowana wersja PHP jest 5.5 lub wyższa.

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"

Dyrektywy ini OpCache, które często są dostosowywane w systemie. Upewnij się, że masz wystarczającą ilość pamięci i slotów na pliki przydzielonych do OpCache (php_opcache_memory_consumption, w MB, oraz php_opcache_max_accelerated_files) aby pomieścić cały kod PHP, który uruchamiasz. W przeciwnym razie możesz uzyskać mniej niż optymalną wydajność!

Aby podać niestandardową lokalizację opcache.so, podaj pełną ścieżkę z php_opcache_zend_extension.

php_opcache_conf_filename: [specyficzny dla platformy]

Nazwa pliku konfiguracyjnego opcache specyficznego dla platformy. Zwykle domyślna wartość powinna działać, ale w niektórych przypadkach może być konieczne nadpisanie nazwy pliku.

Zmienne związane z APCu

php_enable_apc: true

Czy włączyć APCu. Inne zmienne APCu będą nieskuteczne, jeśli to ustawienie jest na false.

php_apc_shm_size: "96M"
php_apc_enable_cli: "0"

Dyrektywy ini APCu, które często są dostosowywane w systemie. Ustaw php_apc_shm_size tak, aby pomieściło wszystkie wpisy pamięci podręcznej w pamięci z małym narzutem (fragmentacja lub wyczerpanie pamięci przez APC znacząco spowolni PHP).

php_apc_conf_filename: [specyficzny dla platformy]

Nazwa pliku konfiguracyjnego APC specyficznego dla platformy. Zwykle domyślna wartość powinna działać, ale w niektórych przypadkach może być konieczne nadpisanie nazwy pliku.

Upewnienie się, że APC jest zainstalowany

Jeśli używasz APC, musisz upewnić się, że APC jest zainstalowane (domyślnie jest zainstalowane, ale jeśli dostosujesz listę php_packages, musisz uwzględnić APC w tej liście):

  • Na systemach RHEL/CentOS: Upewnij się, że php-pecl-apcu jest w liście php_packages.
  • Na systemach Debian/Ubuntu: Upewnij się, że php-apcu jest w liście php_packages.

Instalacja z źródła

Jeśli potrzebujesz określonej wersji PHP, lub chcesz przetestować najnowszą (np. master) wersję PHP, jest duża szansa, że nie ma odpowiedniego pakietu dostępnego w menedżerze pakietów twojej platformy. W takich przypadkach możesz zdecydować się na instalację PHP z źródła poprzez bezpośrednie skompilowanie go.

Pamiętaj, że kompilacja źródłowa zajmuje dużo więcej czasu niż instalacja z pakietów (PHP HEAD zajmuje więcej niż 5 minut na skompilowanie na nowoczesnym komputerze z czterema rdzeniami, w celu porównania).

php_install_from_source: false

Ustaw tę wartość na true, aby zainstalować PHP z źródła zamiast instalować z pakietów.

php_source_version: "master"

Wersja PHP do zainstalowania z źródła (gałąź git, tag lub hash commit).

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"

Lokalizacja, w której źródło zostanie sklonowane i zainstalowane oraz lokalizacja pliku nagłówkowego GMP (co może być specyficzne dla platformy/dystrybucji).

php_source_make_command: "make"

Ustaw komendę make na make --jobs=X, gdzie X to liczba rdzeni obecnych na serwerze, na którym PHP jest kompilowane. Przyspieszy to czasy kompilacji dramatycznie, jeśli masz wiele rdzeni.

php_source_configure_command: >
  [...]

Komenda ./configure, która zbuduje plik Makefile do użycia w kompilacji PHP. Dodaj wszystkie opcje, których potrzebujesz dla swojego środowiska. Używanie złożonej skalarnej (>) pozwala definiować zmienną w wielu liniach, co jest bardzo pomocne dla czytelności i kontroli źródła!

Kilka innych uwag/ostrożności dla konkretnych konfiguracji:

  • Apache z mpm_prefork: Jeśli używasz Apache z prefork jako serwera www dla PHP, upewnij się, że apxs2 jest dostępny na twoim systemie (np. poprzez instalację apache2-prefork-dev na Ubuntu), a także musisz upewnić się, że opcja --with-apxs2 jest zdefiniowana w php_source_configure_command. Na koniec musisz upewnić się, że moduł mpm_prefork jest załadowany zamiast mpm_worker lub mpm_event, i prawdopodobnie dodasz plik konfiguracyjny phpX.conf (gdzie X to główna wersja PHP) do folderu konfiguracyjnego modułów Apache'a z zawartością, taką jak php7.conf.
  • Apache z mpm_event lub mpm_worker: Jeśli używasz Apache z event lub worker jako serwera www dla PHP, musisz skompilować PHP z FPM. Upewnij się, że opcja --enable-fpm jest zdefiniowana w php_source_configure_command. Musisz też upewnić się, że wsparcie Apache dla CGI i event jest zainstalowane (np. poprzez instalację apache2-mpm-event i libapache2-mod-fastcgi) i że moduł mpm_event jest załadowany.
  • Nginx: Jeśli używasz Nginx jako serwera www dla PHP, musisz skompilować PHP z FPM. Upewnij się, że opcja --enable-fpm jest zdefiniowana w php_source_configure_command.

Zależności

Brak.

Przykład playbooka

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

Wewnątrz 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
  ...

Licencja

MIT / BSD

Informacje o autorze

Ta rola została stworzona w 2014 roku przez Jeffa Geerlinga, autora Ansible for DevOps.

Zainstaluj
ansible-galaxy install apham0001.php
Licencja
mit
Pobrania
288
Właściciel