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
это мой Рабочий конь, включает "последние, горячие вещи" и может быть абсолютно сломана!
Если вы хотите использовать что-то стабильное, используйте Тегированную Версию!
Автор
- Бодо Шульц
Лицензия
БЕСПЛАТНОЕ ПО, КРУТО!
ansible-galaxy install bodsch.php