bbatsche.PHP
Rola Ansible PHP Site
Ta rola Ansible zainstaluje daną wersję PHP na twoim serwerze i skonfiguruje stronę w Nginx działającą na PHP. Rola korzysta z Phpenv do zarządzania różnymi wersjami PHP. Powinna być w stanie zainstalować dowolną wersję PHP od 5.2 do 7.2 (choć jeśli instalujesz PHP 5.2, to może powinieneś poważnie przemyśleć swoje wybory życiowe ;-).
Wymagania
Phpenv wymaga, aby Git był zainstalowany na twoim serwerze, ale który serwer nie ma Git w dzisiejszych czasach?
Ta rola korzysta z ACL systemu plików Linux i grupy o nazwie "web-admin", aby przyznać dostęp do określonych katalogów. Możesz skonfigurować te kroki ręcznie lub zainstalować rolę bbatsche.Base
.
Dodatkowo, instalacja tej roli na Ubuntu Xenial wymaga wersji Ansible 2.2 lub wyższej. Ansible 2.1 jest nadal wspierany przez Ubuntu Trusty.
Zmienne roli
domain
— Domenę serwisu do utworzeniadynamic_php
— Czy Nginx powinien przepisywać wszystkie żądania na twojej stronie przezindex.php
. Używane w większości nowoczesnych frameworków. Domyślnie niemax_upload_size
— Maksymalny rozmiar pliku do przesłania w MB. Domyślnie "10"php_max_file_uploads
— Maksymalna liczba plików, które mogą być przesyłane jednocześnie. Domyślnie 20timezone
— Strefa czasowa, która powinna być skonfigurowana w PHP. Domyślnie "Etc/UTC"mysql_socket
— Ścieżka do domyślnego gniazda MySQL do używania przy łączeniu z localhost.install_mariadb
— Zainstalować biblioteki klienckie MariaDB zamiast domyślnych bibliotek MySQL. Domyślnie niephp_session_save_handler
— Mechanizm do zapisywania sesji. Może być używany do zapisywania danych sesji w Redis, na przykład. Domyślnie "files"php_session_path
— Ścieżka, w której będą przechowywane dane sesji. Domyślnie "{{ phpenv_root }}/versions/{{ php_version }}/var/run/session
"php_realpath_cache_size
— Rozmiar pamięci podręcznej używanej do wyszukiwania rzeczywistych ścieżek plików i katalogów. Domyślnie "256k"php_realpath_cache_ttl
— Czas przechowywania wpisów w pamięci podręcznej. Domyślnie 600php_max_execution_time
— Maksymalny czas, przez jaki PHP może działać (z wyłączeniem wywołań do zewnętrznych zasobów, takich jak system plików). Domyślnie 30.php_default_socket_timeout
— Limit czasu podczas oczekiwania na dane z gniazda. Domyślnie 60php_memory_limit
— Maksymalna ilość pamięci, którą PHP ma prawo przydzielić dla jednego procesu. Domyślnie "128M"php_version
— Wersja PHP do zainstalowania z Phpenv.phpenv_config_options
— Lista flag do przekazania do polecenia konfiguracji PHP (oprócz domyślnych już dołączonych do Phpenv). Domyślnie: patrz defaults/main.ymlphpenv_config_options_removed
— Lista flag do usunięcia z standardowej listy Phpenv. Domyślnie tylko--with-tidy
pecl_extensions
— Lista dodatkowych rozszerzeń do zainstalowania z PECL. Każda wartość powinna miećname
iversion
composer_packages
— Lista pakietów composer do zainstalowania globalnie. Każda wartość powinna miećname
iversion
.phpenv_version
— Wersja Phpenv do zainstalowania. Domyślnie jest to Git SHA: "0852611"phpenv_composer_version
— Wersja Phpenv Composer Plugin do zainstalowania. Domyślnie jest to Git SHA: "1a6611d"php_build_version
— Wersja PHP Build do zainstalowania. Domyślnie jest to Git SHA: "5d166fe"xdebug_version
— Wersja Xdebug do zainstalowania. Domyślnie "2.5.5"copy_phpinfo
— Czy skopiować stronęphpinfo()
do nowej strony. Domyślnie niecopy_index_php
— Czy skopiować plikindex.php
do nowej strony. Domyślnie niedisabled_function
— Lista funkcji do wyłączenia, gdy PHP działa z internetu.open_basedir
— Lista dodatkowych ścieżek, które ta domena powinna mieć prawo czytać i pisać. Ta lista zawsze będzie zawierać korzeń domeny, aktualną wersję PHP w katalogu "var" (do przechowywania sesji) oraz katalog tymczasowy domeny.http_root
— Katalog, w którym będą tworzone wszystkie strony. Domyślnie "/srv/http"phpenv_root
— Miejsce, w którym będzie zainstalowany Phpenv i jego pliki wsparcia. Domyślnie "/usr/local/phpenv"
Zmienne dostrajania FPM
PHP FPM jest skonfigurowany do pracy w jednym z dwóch trybów w zależności od env_name
. W środowiskach deweloperskich PHP FPM działa w trybie "ondemand", aby zminimalizować liczbę procesów, które są uruchamiane, a w środowiskach o mniejszych zasobach. W innych środowiskach FPM działa w trybie "dynamicznym", aby procesy podrzędne były już dostępne do obsługi żądań i nie musiały być tworzone. Przy pracy w trybie dynamicznym, jest kilka sposobów, aby dostosować zużycie zasobów FPM:
fpm_mb_per_child
— Średnia ilość pamięci, którą proces podrzędny będzie konsumować dla tej domeny. Domyślnie "30"fpm_mem_percent
— Maksymalna ilość całkowitej pamięci, którą FPM ma prawo konsumować. Domyślnie "80"fpm_max_children
— Maksymalna liczba procesów dziecięcych dozwolonych dla tej domeny. Domyślnie obliczona na podstawiefpm_mem_percent
ifpm_mb_per_child
fpm_start_percent
— Jaki procent maksymalnych dzieci FPM powinno być uruchomionych, gdy domena jest początkowo tworzona. Domyślnie "20" z minimum 2 serwerów.fpm_start_servers
— Liczba serwerów uruchamianych przy tworzeniu domeny. Domyślnie obliczana na podstawiefpm_start_percent
fpm_max_spare_percent
&mash; Procent maksymalnych dzieci FPM, które mają być aktywne jako serwery zapasowe, gdy obciążenie zaczyna maleć. Domyślnie "80"fpm_max_spare_servers
— Liczba serwerów zapasowych, które mają być aktywne po skoku i gdy obciążenie zaczyna maleć. Domyślnie obliczone na podstawiefpm_max_spare_percent
.
To pozwala na dostosowanie użycia zasobów w oparciu o procent całkowitej pamięci lub z wartościami statycznymi, w zależności od Twojego przypadku użycia.
Zmienne dostrajania Opcache
Następujące zmienne mogą być używane do dostrajania Opcache i potencjalnie poprawy wydajności aplikacji.
opcache_enable_cli
— Domyślnie 0opcache_memory_consumption
— Domyślnie 128opcache_internal_strings_buffer
— Domyślnie 16opcache_max_accelerated_files
— Domyślnie 6000opcache_max_wasted_percentage
— Domyślnie 5opcache_validate_timestamps
— Domyślnie 1opcache_revalidate_freq
— Ustaw na 0, jeśli środowisko jest deweloperskie. W przeciwnym razie domyślnie 300opcache_fast_shutdown
— Domyślnie 0. Potencjalnie ryzykowne, jeśli włączone
Zależności
Ta rola zależy od bbatsche.Nginx. Musisz najpierw zainstalować tę rolę używając:
ansible-galaxy install bbatsche.Nginx
Przykład playbooka
- hosts: servers
roles:
- role: bbatsche.Phpenv
domain: my-php-site.test
php_version: 7.1.12
composer_packages:
- name: phpunit/phpunit
version: ^6.4
pecl_extensions:
- name: yaml
version: 2.0.2
- name: imagick
version: 3.4.3
Licencja
MIT
Testowanie
W zestawie tej roli znajduje się zestaw specyfikacji do testowania każdego zadania indywidualnie lub jako całości. Aby uruchomić te testy, musisz mieć zainstalowany Vagrant i VirtualBox. Pliki specyfikacji są napisane z użyciem Serverspec, więc potrzebujesz Ruby i Bundler.
Aby uruchomić cały zestaw specyfikacji:
$ gem install bundler
$ bundle install
$ rake
Zestaw specyfikacji będzie testować Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04) oraz Bionic Beaver (18.04).
Aby zobaczyć dostępne zadania rake (i specyfikacje):
$ rake -T
Te specyfikacje nie są przeznaczone do testowania idempotencji. Ich celem jest sprawdzenie, czy określone zadania wykonują swoje oczekiwane kroki. Idempotencja jest testowana niezależnie za pomocą testów integracyjnych.
Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM
ansible-galaxy install bbatsche.PHP