PHP

Роль Ansible для PHP сайта

Статус сборки Лицензия Ansible Galaxy Версия релиза Скачивания

Эта роль Ansible установит заданную версию PHP на ваш сервер и настроит сайт в Nginx с поддержкой PHP. Роль использует Phpenv для управления различными версиями PHP. Она должна уметь устанавливать любую версию PHP от 5.2 до 7.2 (хотя, если вы собираетесь устанавливать PHP 5.2, возможно, вам стоит серьёзно задуматься о своих жизненных выборах ;-).

Требования

Phpenv требует, чтобы Git был установлен на вашем сервере, но в наши дни какой сервер не имеет Git?

Эта роль использует возможности ACL файловой системы Linux и группу "web-admin" для предоставления доступа к определенным директориям. Вы можете настроить эти шаги вручную или установить роль bbatsche.Base.

Кроме того, установка этой роли на Ubuntu Xenial требует версии Ansible 2.2 или выше. Ansible 2.1 все еще поддерживается в Ubuntu Trusty.

Переменные роли

  • domain — Домен сайта для создания
  • dynamic_php — Должен ли Nginx переписывать все запросы на вашем сайте через index.php. Это используется для большинства современных фреймворков. По умолчанию нет
  • max_upload_size — Максимальный размер загружаемого файла в МБ. По умолчанию "10"
  • php_max_file_uploads — Максимальное количество файлов, которые можно загрузить одновременно. По умолчанию 20
  • timezone — Часовой пояс, который должен быть настроен в PHP. По умолчанию "Etc/UTC"
  • mysql_socket — Путь к стандартному сокету MySQL для подключения к localhost.
  • install_mariadb — Установить клиентские библиотеки MariaDB вместо стандартных библиотек MySQL. По умолчанию нет
  • php_session_save_handler — Обработчик для сохранения сессий. Может использоваться для сохранения данных сессии в Redis, например. По умолчанию "files"
  • php_session_path — Путь для сохранения данных сессии. По умолчанию "{{ phpenv_root }}/versions/{{ php_version }}/var/run/session"
  • php_realpath_cache_size — Размер кеша, используемого для поиска реальных путей файлов и директорий. По умолчанию "256k"
  • php_realpath_cache_ttl — Время хранения записей в кеше реальных путей. По умолчанию 600
  • php_max_execution_time — Максимальное время, за которое PHP может работать (исключая обращения к внешним ресурсам, таким как файловая система). По умолчанию 30.
  • php_default_socket_timeout — Время ожидания данных от сокета. По умолчанию 60
  • php_memory_limit — Максимальное количество памяти, которое PHP может выделить для одного процесса. По умолчанию "128M"
  • php_version — Версия PHP, устанавливаемая с Phpenv.
  • phpenv_config_options — Список флагов, передаваемых команде конфигурации PHP (в дополнение к уже включенным по умолчанию с Phpenv). По умолчанию: см. defaults/main.yml
  • phpenv_config_options_removed — Список флагов, которые нужно удалить из стандартного списка Phpenv. По умолчанию только --with-tidy
  • pecl_extensions — Список дополнительных расширений для установки из PECL. Каждое значение должно иметь свойство name и version
  • composer_packages — Список пакетов composer для глобальной установки. Каждое значение должно иметь свойства name и version.
  • phpenv_version — Версия Phpenv для установки. По умолчанию это Git SHA: "0852611"
  • phpenv_composer_version — Версия Phpenv Composer Plugin для установки. По умолчанию это Git SHA: "1a6611d"
  • php_build_version — Версия PHP Build для установки. По умолчанию это Git SHA: "5d166fe"
  • xdebug_version — Версия Xdebug для установки. По умолчанию "2.5.5"
  • copy_phpinfo — Нужно ли копировать страницу phpinfo() на новый сайт. По умолчанию нет
  • copy_index_php — Нужно ли копировать файл index.php на новый сайт. По умолчанию нет
  • disabled_function — Список функций, которые нужно отключить при работе PHP в вебе.
  • open_basedir — Список дополнительных путей, с которых этот домен должен иметь возможность читать и записывать. Этот список всегда будет содержать корень домена, директорию "var" текущей версии PHP (для хранения сессий) и временную директорию домена.
  • http_root — Директория, в которой будут создаваться все сайты. По умолчанию "/srv/http"
  • phpenv_root — Место установки Phpenv и его вспомогательных файлов. По умолчанию "/usr/local/phpenv"

Настройка FPM

PHP FPM настраивается для работы в одном из двух режимов в зависимости от env_name. В средах разработки PHP FPM будет работать в режиме "ondemand", чтобы минимизировать количество создаваемых и не активных процессов в среде с низкими ресурсами. В других средах FPM будет работать в "dynamic" режиме, так что дочерние процессы уже будут готовы обрабатывать запросы и не нужно будет их создавать заново. При работе в динамическом режиме есть несколько способов настроить использование ресурсов FPM:

  • fpm_mb_per_child — Среднее количество памяти, которое использует дочерний процесс для этого домена. По умолчанию "30"
  • fpm_mem_percent — Максимальное количество общей памяти, которую FPM может использовать. По умолчанию "80"
  • fpm_max_children — Максимальное количество дочерних процессов, разрешенное для этого домена. По умолчанию рассчитывается на основе fpm_mem_percent и fpm_mb_per_child
  • fpm_start_percent — Какой процент от максимального количества детей FPM должен быть запущен при первоначальном создании домена. По умолчанию "20" с минимумом в 2 сервера.
  • fpm_start_servers — Количество серверов, которые нужно запустить при создании домена. По умолчанию рассчитывается на основе fpm_start_percent
  • fpm_max_spare_percent — Процент от максимального количества детей FPM, который будет поддерживаться в активном состоянии в качестве резервных серверов, когда нагрузка начинает снижаться. По умолчанию "80"
  • fpm_max_spare_servers — Количество резервных серверов, которые нужно поддерживать активными после всплеска нагрузки и когда нагрузка начинает падать. По умолчанию рассчитывается на основе fpm_max_spare_percent.

Это позволит вам настраивать использование ресурсов, основываясь либо на проценте от общей памяти или на статических значениях, в зависимости от вашего сценария использования.

Настройка Opcache

Следующие переменные можно использовать для настройки Opcache и, возможно, улучшения производительности приложения.

  • opcache_enable_cli — По умолчанию 0
  • opcache_memory_consumption — По умолчанию 128
  • opcache_internal_strings_buffer — По умолчанию 16
  • opcache_max_accelerated_files — По умолчанию 6000
  • opcache_max_wasted_percentage — По умолчанию 5
  • opcache_validate_timestamps — По умолчанию 1
  • opcache_revalidate_freq — Установите в 0, если среда является разработкой. В противном случае, по умолчанию 300
  • opcache_fast_shutdown — По умолчанию 0. Может быть рискованно, если включить

Зависимости

Эта роль зависит от bbatsche.Nginx. Вы должны сначала установить эту роль, выполнив команду:

ansible-galaxy install bbatsche.Nginx

Пример Playbook

- 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

Лицензия

MIT

Тестирование

Включена совокупность спецификаций для тестирования каждой задачи отдельно или в целом. Чтобы запустить эти тесты, вам сначала нужно установить Vagrant и VirtualBox. Файлы спецификаций написаны с использованием Serverspec, поэтому вам понадобится Ruby и Bundler.

Чтобы запустить полный набор спецификаций:

$ gem install bundler
$ bundle install
$ rake

Набор спецификаций будет направлен на Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04) и Bionic Beaver (18.04).

Чтобы увидеть доступные задачи rake (и спецификации):

$ rake -T

Эти спецификации не предназначены для проверки идемпотентности. Они предназначены для проверки того, что указанные задачи выполняют свои ожидаемые действия. Проверка идемпотентности тестируется независимо через интеграционное тестирование.

О проекте

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

Установить
ansible-galaxy install bbatsche/Ansible-PHP-Site-Role
Лицензия
mit
Загрузки
265
Владелец