bodsch.php

Ansible роль: php

Ansible роль для установки fpm-php на различных системах.

Вдохновлена geerlingguy

Обнаруживает доступную версию PHP на основе переменной php_version.

Поддерживает версии PHP 7 и 8, если соответствующие версии доступны.

ArchLinux убрал пакеты PHP 7 из своего репозитория!

Требования и зависимости

Ansible Collections

ansible-galaxy collection install bodsch.core

или

ansible-galaxy collection install --requirements-file collections.yml

Операционные системы

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

  • ArchLinux (только PHP 8!)
  • На базе Debian
    • Debian 12
    • Ubuntu 22.04

Системы на базе RedHat больше не поддерживаются официально! Может работать, но не обязательно.

Использование

# выберите свою версию!
php_version: "8"

php_packages_state: present

php_fpm_log_directory: /var/log/php-fpm
php_fpm_tmp_upload_directory: /tmp/php-fpm
php_fpm_socket_directory: /run/php

php_fpm_log_level: notice

php_enable_php_fpm: true

php_fpm_listen: "127.0.0.1:9000"
php_fpm_listen_allowed_clients: "127.0.0.1"
php_fpm_pm:
  max_children: 50
  start_servers: 5
  spare_servers:
    min: 5
    max: 5

php_use_managed_ini: true

php_expose_php: "On"
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: "Europe/Berlin"
php_allow_url_fopen: "On"

php_sendmail_path: "/usr/sbin/sendmail -t -i"
php_output_buffering: "4096"
php_short_open_tag: "Off"
php_disable_functions: []

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_session_cache_expire: 180

php_error_reporting: "E_ALL & ~E_DEPRECATED & ~E_STRICT"
php_display_errors: "Off"
php_display_startup_errors: "Off"

php_packages: []

php_fpm_default_pool:
  delete: false
  name: www.conf

php_fpm_pools: []

# php модули
php_modules: []

Пользовательские пакеты

Чтобы установить дополнительные PHP пакеты, вы можете указать их в php_packages.

Например:

php_packages:
  - php-ldap

Пакеты не требуют информации о версиях, как это необходимо для пакетов RedHat и Remis. Роль следит за тем, чтобы имя пакета было корректным.

В качестве примера, php-ldap будет php73-php-ldap.

php пулы

php_fpm_pools:
  - name: worker-01
    user: "{{ php_fpm_pool_user }}"
    group: "{{ php_fpm_pool_group }}"
    listen.owner: "{{ php_fpm_pool_user }}"
    listen.group: "{{ php_fpm_pool_group }}"
    listen: "{{ php_fpm_socket_directory }}/$pool.sock"
    # статический, динамический или по требованию
    pm: ondemand
    pm.max_children: 10
    pm.start_servers: 4
    pm.min_spare_servers: 2
    pm.max_spare_servers: 6
    pm.status_path: /status

  - name: worker-02
    user: "{{ php_fpm_pool_user }}"
    group: "{{ php_fpm_pool_group }}"
    listen.owner: "{{ php_fpm_pool_user }}"
    listen.group: "{{ php_fpm_pool_group }}"
    listen: "{{ php_fpm_socket_directory }}/$pool.sock"
    pm: dynamic
    pm.max_children: 10
    pm.start_servers: 4
    pm.min_spare_servers: 2
    pm.max_spare_servers: 6
    pm.status_path: /status
    ping.path: /ping
    ping.response: pong
    access.log: "{{ php_fpm_log_directory }}/$pool_access.log"
    access.format: "%R - %n - %{HTTP_HOST}e - %u %t \"%m %r [%Q%q]\" %s %f %{mili}d %{kilo}M %C%%"
    chdir: /
    env:
      PATH: "/usr/local/bin:/usr/bin:/bin"
      TMPDIR: "{{ php_fpm_tmp_upload_diectory }}"
    php_admin_value:
      date.timezone: "Europe/Berlin"
      log_errors: 'on'
      max_execution_time: 300
      memory_limit: 512M
      upload_max_filesize: 32M

php модули

php_modules:
  # gd
  - name: gd
    enabled: true
    priority: 20
    content: |
      extension=gd
  # Настройки OpCache
  - name: opcache
    enabled: true
    priority: 10
    content: |
      zend_extension=opcache
      opcache.enable=1
      opcache.enable_cli=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=16
      opcache.max_accelerated_files=10000
      opcache.max_wasted_percentage=5
      opcache.validate_timestamps=1
      opcache.revalidate_path=0
      opcache.revalidate_freq=1
      opcache.max_file_size=0
  # PDO mysql
  - name: pdo_mysql
    enabled: true
    priority: 20
    content: |
      extension=pdo_mysql

В разделе документация вы можете найти некоторые конфигурации модулей, которые были скопированы из php.ini.


Вклад

Пожалуйста, прочитайте Вклад

Разработка, Ветки (Git Теги)

Ветка master это мой Рабочий конь, включает "последние, горячие вещи" и может быть абсолютно сломана!

Если вы хотите использовать что-то стабильное, используйте Тегированную Версию!


Автор

  • Бодо Шульц

Лицензия

Apache

БЕСПЛАТНОЕ ПО, КРУТО!

О проекте

ansible role to install and configure php-fpm

Установить
ansible-galaxy install bodsch.php
Лицензия
apache-2.0
Загрузки
2.2k
Владелец
ex-developer (c, c++, php), ex-system administrator / engineer, keep-it-simple, monitoring, automation, system architect