bbatsche.PHP

Rola Ansible PHP Site

Status budowy Licencja Ansible Galaxy Wersja wydania Pobrania

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 utworzenia
  • dynamic_php — Czy Nginx powinien przepisywać wszystkie żądania na twojej stronie przez index.php. Używane w większości nowoczesnych frameworków. Domyślnie nie
  • max_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 20
  • timezone — 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 nie
  • php_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 600
  • php_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 60
  • php_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.yml
  • phpenv_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 i version
  • composer_packages — Lista pakietów composer do zainstalowania globalnie. Każda wartość powinna mieć name i version.
  • 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 nie
  • copy_index_php — Czy skopiować plik index.php do nowej strony. Domyślnie nie
  • disabled_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 podstawie fpm_mem_percent i fpm_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 podstawie fpm_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 podstawie fpm_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 0
  • opcache_memory_consumption — Domyślnie 128
  • opcache_internal_strings_buffer — Domyślnie 16
  • opcache_max_accelerated_files — Domyślnie 6000
  • opcache_max_wasted_percentage — Domyślnie 5
  • opcache_validate_timestamps — Domyślnie 1
  • opcache_revalidate_freq — Ustaw na 0, jeśli środowisko jest deweloperskie. W przeciwnym razie domyślnie 300
  • opcache_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.

O projekcie

Install Phpenv, PHP, and set up a site in Nginx running it with PHP-FPM

Zainstaluj
ansible-galaxy install bbatsche.PHP
Licencja
mit
Pobrania
281
Właściciel