bodsch.php

Ansible Role: php

Ansibleロールは、さまざまなシステムにfpm-phpをインストールします。

geerlingguyにインスパイアされています。

php_version変数に基づいて利用可能なPHPバージョンを検出します。

PHPのバージョン7および8をサポートします。該当するバージョンが利用可能な限り。

ArchLinuxでは、PHP 7パッケージがリポジトリから削除されました!

要件と依存関係

Ansibleコレクション

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-ldapphp73-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_directory }}"
    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