apham0001.php
Rola Ansible: PHP
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ściephp_packages
. - Na systemach Debian/Ubuntu: Upewnij się, że
php-apcu
jest w liściephp_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ę, żeapxs2
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 wphp_source_configure_command
. Na koniec musisz upewnić się, że modułmpm_prefork
jest załadowany zamiastmpm_worker
lubmpm_event
, i prawdopodobnie dodasz plik konfiguracyjnyphpX.conf
(gdzieX
to główna wersja PHP) do folderu konfiguracyjnego modułów Apache'a z zawartością, taką jakphp7.conf
. - Apache z
mpm_event
lubmpm_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 wphp_source_configure_command
. Musisz też upewnić się, że wsparcie Apache dla CGI i event jest zainstalowane (np. poprzez instalacjęapache2-mpm-event
ilibapache2-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 wphp_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.
PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.
ansible-galaxy install apham0001.php