net2grid.php

Rola Ansible: PHP

Status budowy

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

Wymagania

Jeśli używasz 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 wersjami PHP, które są obecnie wspierane przez społeczność PHP.

Zmienne roli

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

php_packages: []

Lista pakietów PHP do zainstalowania (domyślnie specyficzna dla systemu operacyjnego). Prawdopodobnie chcesz zainstalować typowe 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 musisz połączyć się z serwerem LDAP w celu autoryzacji).

Uwaga: Jeśli używasz Debian/Ubuntu, musisz również zainstalować libapache2-mod-fastcgi (dla 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 używasz PHP związku z serwerem WWW (np. Apache lub Nginx), zostaw tę wartość domyślną. Jeśli używasz PHP po stronie serwera lub do uruchamiania jakiejś małej aplikacji, ustaw tę wartość na false, aby ta rola nie próbowała współpracować 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 (także używany przez Apache) dla Debian/Ubuntu. Jeśli uruchamiasz inny serwer WWW (np. 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 na przykład zastosować geerlingguy.repo-epel lub geerlingguy.repo-remi), te repozytoria mogą być wymienione w tej zmiennej (np. remi-php70,epel). Może to być przydatne, jeśli chcesz zainstalować najnowszą wersję PHP 7.0, która znajduje się w repozytorium Remi.

php_packages_state: "present"

Jeśli włączyłeś dodatkowe repozytoria, takie jak geerlingguy.repo-epel lub geerlingguy.repo-remi, możesz chcieć łatwego sposobu na szybką wymianę wersji PHP. Domyślnie jest to 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 instalowaniem ich z innego repozytorium.

Możesz także używać roli geerlingguy.php-versions do łatwiejszego przełączania się między głównymi wersjami PHP (np. 5.6, 7.0, 7.1, 7.2).

php_install_recommends: true

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

php_executable: "php"

Wykonywalny plik do uruchomienia podczas wywoływania PHP z linii poleceń. Powinieneś to zmienić tylko wtedy, gdy uruchomienie php na twoim serwerze nie wskazuje na odpowiedni wykonawczy plik lub jeśli korzystasz z kolekcji oprogramowania na RHEL/CentOS i musisz 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 PHP w przypadku używania serwera WWW, takiego jak Nginx (chociaż można go używać z innymi serwerami WWW równie łatwo).

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

php_enable_php_fpm: false

Jeśli używasz Apache, możesz łatwo skonfigurować go do współpracy z PHP-FPM używając roli geerlingguy.apache-php-fpm.

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

Specyficzne ustawienia w domyślnym www.conf dla puli PHP-FPM. Jeśli chcesz zarządzać dodatkowymi ustawieniami, możesz to zrobić, zastępując plik własnym szablonem lub używając lineinfile, jak robi ta rola wewnątrz tasks/configure-fpm.yml.

Ustawienia php.ini

php_use_managed_ini: true

Domyślnie wszystkie dodatkowe domyślne wartości poniżej są stosowane przez plik php.ini dołączony do tej roli. Możesz samodzielnie zarządzać swoim plikiem php.ini (jeśli potrzebujesz więcej elastyczności w jego konfiguracji), ustawiając to na false (w takim przypadku wszystkie poniższe zmienne będą ignorowane).

php_fpm_pool_user: "[apache|nginx|inne]" # domyślnie różne w zależności od systemu
php_fpm_pool_group: "[apache|nginx|inne]" # domyślnie różne 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 wartości dla PHP. Używane tylko wtedy, gdy php_use_managed_ini jest ustawione na true.

Zmienne związane z OpCache

OpCache jest dołączony do PHP, począwszy od wersji 5.5, a poniższe zmienne będą miały skutek tylko wtedy, gdy zainstalowana wersja PHP będzie wynosiła 5.5 lub więcej.

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ąco dużo pamięci i slotów plików przydzielonych w OpCache (php_opcache_memory_consumption, w MB, i php_opcache_max_accelerated_files), aby pomieścić cały kod PHP, który uruchamiasz. W przeciwnym razie możesz uzyskać gorszą wydajność!

Aby określić lokalizację opcache.so, dostarcz pełną ścieżkę z php_opcache_zend_extension.

php_opcache_conf_filename: [specyficzne dla platformy]

Specyficzna dla platformy nazwa pliku konfiguracyjnego opcache. Zazwyczaj domyślne powinno 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 będzie ustawione 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, aby pomieścić wszystkie wpisy w pamięci z małym narzutem (fragmentacja lub brak pamięci w APC spowodują znaczne spowolnienie PHP).

php_apc_conf_filename: [specyficzne dla platformy]

Specyficzna dla platformy nazwa pliku konfiguracyjnego APC. Zazwyczaj domyślne powinno działać, ale w niektórych przypadkach może być konieczne nadpisanie nazwy pliku.

Upewnienie się, że APC jest zainstalowane

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

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

Instalowanie z źródła

Jeśli potrzebujesz określonej wersji PHP lub chcesz przetestować najnowszą wersję (np. wersję master), istnieje duże prawdopodobieństwo, że odpowiedni pakiet nie jest już dostępny w menedżerze pakietów twojej platformy. W takich przypadkach możesz wybrać instalację PHP ze źródła, kompilując go bezpośrednio.

Zauważ, że kompilacja ze źródła zajmuje znacznie więcej czasu niż instalacja z pakietów (PHP HEAD zajmuje ponad 5 minut, aby skompilować na nowoczesnym komputerze z czterema rdzeniami, jako odniesienie).

php_install_from_source: false

Ustaw to na true, aby zainstalować PHP ze źródła zamiast instalować z pakietów.

php_source_version: "master"

Wersja PHP do zainstalowania ze źródła (gałąź gita, tag lub skrót do komitu).

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, gdzie kod źródłowy zostanie sklonowany i zainstalowany oraz lokalizacja nagłówka GMP (co może być specyficzne dla platformy/ Distro).

php_source_make_command: "make"

Ustaw polecenie make na make --jobs=X, gdzie X to liczba rdzeni dostępnych na serwerze, na którym kompilujesz PHP. Znacznie przyspieszy to czasy kompilacji, jeśli masz wiele rdzeni.

php_source_configure_command: >
  [...]

Polecenie ./configure, które zbuduje plik Makefile do użycia przy kompilacji PHP. Dodaj wszystkie opcje, które potrzebujesz dla swojego konkretnego środowiska. Użycie złożonego skalarnego (>) pozwala na definiowanie zmiennej na wielu liniach, co jest niezwykle pomocne dla czytelności i kontroli źródła!

Kilka innych uwag/ostrzeżeń dotyczących specyficznych konfiguracji:

  • Apache z mpm_prefork: Jeśli używasz Apache z preforkiem jako serwerem WWW dla PHP, musisz upewnić się, że apxs2 jest dostępne na twoim systemie (np. instalując apache2-prefork-dev w Ubuntu) i będziesz musiał 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 oraz prawdopodobnie dodać plik konfiguracyjny phpX.conf (gdzie X to główna wersja PHP) do folderu konfiguracyjnego modułu Apache z treścią podobną do php7.conf.
  • Apache z mpm_event lub mpm_worker: Jeśli używasz Apache z event lub worker jako serwerem WWW dla PHP, musisz skompilować PHP z FPM. Upewnij się, że opcja --enable-fpm jest zdefiniowana w php_source_configure_command. Musisz także upewnić się, że Apache ma zainstalowaną obsługę CGI i event (np. instalując apache2-mpm-event i libapache2-mod-fastcgi) oraz, ż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 }

W pliku 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 net2grid.php
Licencja
mit
Pobrania
274
Właściciel
We empower energy retailers to help consumers become energy efficient by unlocking value from Smart Meter data