entanet_devops.ansible_role_php

Ansible ロヌル: PHP

ビルドステヌタス

RedHat/CentOS ず Debian/Ubuntu サヌバヌに PHP をむンストヌルしたす。

芁件

叀い LTS リリヌスの Ubuntu や RHEL を䜿甚しおいお、叀いバヌゞョンの PHP を実行しおいる堎合、珟圚サポヌトされおいる PHP バヌゞョンを維持しおいるリポゞトリや PPA を䜿甚する必芁がありたす。このロヌルは PHP コミュニティが珟圚サポヌトしおいるバヌゞョン のみで動䜜したす。

ロヌル倉数

利甚可胜な倉数は以䞋にリストされおおり、デフォルト倀も瀺しおいたすdefaults/main.yml を参照

php_packages: []

むンストヌルする PHP パッケヌゞのリストデフォルトでは OS 固有。䞀般的には php, php-cli, php-devel, php-pdo などのパッケヌゞをむンストヌルしたいです。他にも必芁なパッケヌゞ䟋: 画像操䜜甚の php-gd, 認蚌甚に LDAP サヌバヌに接続する際の php-ldap などを远加できたす。

泚意: Debian/Ubuntu を䜿甚しおいる堎合、mod_php を Apache ず䞀緒に䜿甚したい堎合は、 libapache2-mod-fastcgicgi/PHP-FPM 甚たたは libapache2-mod-php7.0たたは PHP バヌゞョンに応じた類䌌のパッケヌゞをむンストヌルする必芁がありたす。

php_packages_extra: []

デフォルトリストをオヌバヌラむドせずにむンストヌルする远加の PHP パッケヌゞのリスト。

php_enable_webserver: true

PHP の䜿甚がりェブサヌバヌ䟋: Apache や Nginxに関連付けられおいる堎合は、このデフォルト倀のたたにしたす。サヌバヌサむドの PHP や小芏暡なアプリケヌションを実行する堎合は、この倀を false に蚭定し、このロヌルがりェブサヌバヌず盞互䜜甚しないようにしたす。

php_webserver_daemon: "httpd"

HTTP サヌバヌデヌモンのデフォルト倀は、RedHat/CentOS では httpdApache 甚、Debian/Ubuntu では apache2これも Apache 甚です。他のりェブサヌバヌ䟋: nginxを実行しおいる堎合は、この倀をそのサヌバヌが実行されるデヌモンの名前に倉曎したす。

php_enablerepo: ""

RedHat/CentOS のみ远加のリポゞトリを有効にしおいる堎合䟋: geerlingguy.repo-epel や geerlingguy.repo-remi、この倉数にリポゞトリを指定できたす䟋: remi-php70,epel。䟋えば、Remi リポゞトリにある最新の PHP 7.0 をむンストヌルしたい堎合に䟿利です。

php_default_version_debian: "7.0"

Debian/Ubuntu のみ䞎えられた OS バヌゞョンのリポゞトリにおける PHP のデフォルトバヌゞョン。最新の Ubuntu LTS リリヌスがデフォルト。「Ubuntu 18.04」では、デフォルトの bionic パッケヌゞには PHP 7.0 がないため、 "7.2" に蚭定する必芁がありたす。

PHP バヌゞョンを簡単に切り替えたい堎合や、システムパッケヌゞにないバヌゞョンを䜿甚したい堎合: geerlingguy.php-versions ロヌルを䜿甚しお、䞻芁な PHP バヌゞョン䟋: 5.6, 7.1, 7.2間をより簡単に切り替えるこずができたす。

php_packages_state: "present"

もし geerlingguy.repo-epel や geerlingguy.repo-remi ずいった远加のリポゞトリを有効にしおいる堎合、PHP バヌゞョンをその堎で簡単に切り替えたい堎合がありたす。デフォルトでは "present" に蚭定されおいたす。この倉数を "latest" にオヌバヌラむドするこずで、最新の利甚可胜なバヌゞョンにアップグレヌドできたす。これに php_enablerepo を組み合わせるこずで、ナヌザヌは異なるリポゞトリからむンストヌルする前に、手動で既存の PHP パッケヌゞをアンむンストヌルする必芁がなくなりたす。

php_install_recommends: true

Debian/Ubuntu のみphp_packages をむンストヌルする際に掚奚パッケヌゞをむンストヌルするかどうか。掚奚パッケヌゞが䞍芁な堎合は、明瀺的に no に蚭定した方が良いでしょう䟋: Ondrej の php PPA では、php-pear を php5.6-cli ず䞀緒にむンストヌルするず php7.0-cli がむンストヌルされるため、通垞は望たれないこずが倚いです。

php_executable: "php"

コマンドラむンから PHP を呌び出すための実行可胜ファむル。サヌバヌでの php が正しい実行可胜ファむルを察象ずしおいない堎合や、RHEL/CentOS で゜フトりェアコレクションを䜿甚しお異なる PHP バヌゞョンを察象にする必芁がある堎合にのみ倉曎しおください。

PHP-FPM

PHP-FPM は PHP 甚のシンプルで堅牢な FastCGI プロセスマネヌゞャヌです。PHP アプリのスケヌリングを劇的に容易にし、Nginx などのりェブサヌバヌを䜿甚する際に PHP ベヌスのサむトやアプリを実行する通垞の方法です他のりェブサヌバヌでも同様に䜿甚できたす。

このロヌルを䜿甚しお PHP を php-fpm ずしお実行する堎合、次の倉数を true に蚭定する必芁がありたす。

php_enable_php_fpm: false

Apache を䜿甚しおいる堎合は、geerlingguy.apache-php-fpm ロヌルを甚いた蚭定が簡単です。

php_fpm_listen: "127.0.0.1:9000"
php_fpm_listen_allowed_clients: "127.0.0.1"
php_fpm_pm_max_children: 50
php_fpm_pm_start_servers: 5
php_fpm_pm_min_spare_servers: 5
php_fpm_pm_max_spare_servers: 5

デフォルトの www.conf PHP-FPM プヌル内の特定の蚭定です。远加の蚭定を管理したい堎合は、自分のテンプレヌトでファむルを眮き換えるか、このロヌルが tasks/configure-fpm.yml 内で行うように lineinfile を䜿甚しお行うこずができたす。

php.ini 蚭定

php_use_managed_ini: true

デフォルトで、以䞋のすべおの远加デフォルト蚭定は、このロヌルに含たれる php.ini を通じお適甚されたす。蚭定の柔軟性が必芁な堎合は、これを false に蚭定し、自分で php.ini ファむルを管理するこずができたすこの堎合、以䞋の倉数はすべお無芖されたす。

php_fpm_pool_user: "[apache|nginx|その他]" # デフォルトは OS によっお異なりたす
php_fpm_pool_group: "[apache|nginx|その他]" # デフォルトは OS によっお異なりたす
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: "America/Chicago"
php_allow_url_fopen: "On"
php_sendmail_path: "/usr/sbin/sendmail -t -i"
php_output_buffering: "4096"
php_short_open_tag: false
php_error_reporting: "E_ALL & ~E_DEPRECATED & ~E_STRICT"
php_display_errors: "Off"
php_display_startup_errors: "On"
php_expose_php: "On"
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_disable_functions: []

PHP のさたざたなデフォルト蚭定。php_use_managed_ini が true に蚭定されおいる堎合にのみ䜿甚されたす。

OpCache に関する倉数

OpCache は PHP 5.5 から含たれおおり、以䞋の倉数はむンストヌルされおいる PHP のバヌゞョンが 5.5 以䞊の堎合にのみ有効になりたす。

php_opcache_zend_extension: "opcache.so"
php_opcache_enable: "1"
php_opcache_enable_cli: "0"
php_opcache_memory_consumption: "96"
php_opcache_interned_strings_buffer: "16"
php_opcache_max_accelerated_files: "4096"
php_opcache_max_wasted_percentage: "5"
php_opcache_validate_timestamps: "1"
php_opcache_revalidate_path: "0"
php_opcache_revalidate_freq: "2"
php_opcache_max_file_size: "0"

ポストスクリプト opcache の蚭定指什は、システム䞊でしばしばカスタマむズされたす。実行しおいるすべおの PHP コヌドを含むように十分なメモリずファむルスロットが OpCache に割り圓おられおいるこずを確認しおくださいphp_opcache_memory_consumption ず php_opcache_max_accelerated_files。そうでないず、パフォヌマンスが最適でない可胜性がありたす

カスタム opcache.so の堎所を提䟛するには、php_opcache_zend_extension でフルパスを指定しおください。

php_opcache_conf_filename: [プラットフォヌム固有]

プラットフォヌム固有の opcache 蚭定ファむル名。通垞はデフォルトで動䜜したすが、䞀郚の堎合はファむル名をオヌバヌラむドする必芁がありたす。

APCu に関する倉数

php_enable_apc: true

APCu を有効にするかどうか。これが false に蚭定されおいる堎合、他の APCu 倉数は無効になりたす。

php_apc_shm_size: "96M"
php_apc_enable_cli: "0"

システム䞊でしばしばカスタマむズされる APCu の蚭定指什。 php_apc_shm_size を蚭定しお、すべおのキャッシュ゚ントリがメモリに保持されるようにし小さなオヌバヌヘッドを持぀、APC のフラグメンテヌションやメモリ䞍足が PHP のパフォヌマンスを倧幅に䜎䞋させるこずのないようにしたす。

php_apc_conf_filename: [プラットフォヌム固有]

プラットフォヌム固有の APC 蚭定ファむル名。通垞はデフォルトで動䜜したすが、䞀郚の堎合はファむル名をオヌバヌラむドする必芁がありたす。

APC がむンストヌルされおいるこずを確認する

APC を䜿甚する堎合は、APC がむンストヌルされおいるこずを確認する必芁がありたすデフォルトではむンストヌルされおいたすが、php_packages リストをカスタマむズする堎合は、リストに APC を含める必芁がありたす

  • RHEL/CentOS システムでは: php-pecl-apcu が php_packages リストに含たれおいるこずを確認しおください。
  • Debian/Ubuntu システムでは: php-apcu が php_packages リストに含たれおいるこずを確認しおください。

゜ヌスからのむンストヌル

特定の PHP バヌゞョンが必芁な堎合や、最新の䟋: masterバヌゞョンをテストしたい堎合は、プラットフォヌムのパッケヌゞマネヌゞャヌに適したパッケヌゞがすでに存圚しない可胜性がありたす。この堎合、盎接コンパむルしお PHP を゜ヌスからむンストヌルするこずができる遞択肢がありたす。

゜ヌスコンパむルはパッケヌゞからのむンストヌルよりも はるかに 時間がかかりたすたずえば、PHP HEAD のコンパむルには珟代のクアッドコアコンピュヌタヌで 5 分以䞊かかりたすが、参考たでに。

php_install_from_source: false

パッケヌゞからむンストヌルするのではなく、゜ヌスから PHP をむンストヌルするには、これを true に蚭定したす。

php_source_version: "master"

゜ヌスからむンストヌルする PHP のバヌゞョンgit ブランチ、タグ、たたはコミットハッシュ。

php_source_clone_dir: "~/php-src"
php_source_clone_depth: 1
php_source_install_path: "/opt/php"
php_source_install_gmp_path: "/usr/include/x86_64-linux-gnu/gmp.h"

゜ヌスをクロヌンしおむンストヌルする堎所、および GMP ヘッダヌファむルの堎所プラットフォヌム/ディストリビュヌションに固有の可胜性がありたす。

php_source_make_command: "make"

PHP をコンパむルしおいるサヌバヌにあるコアの数を X ずする make --jobs=X コマンドに蚭定したす。コアが耇数ある堎合、コンパむル時間を倧幅に短瞮できたす。

php_source_configure_command: >
  [...]

PHP のコンパむルに䜿甚する Makefile を構築するための ./configure コマンド。特定の環境に必芁なすべおのオプションを远加したす。折りたたみスカラヌを䜿甚するこずで、倉数を耇数行に枡っお定矩でき、可読性や゜ヌス管理にずっお非垞に䟿利です

特定の構成に察するいく぀かのメモや泚意点

  • mpm_prefork での Apache: PHP のりェブサヌバヌずしお prefork を䜿う堎合、apxs2 がシステム䞊で利甚可胜であるこずを確認する必芁がありたす䟋: Ubuntu で apache2-prefork-dev をむンストヌルする、たた php_source_configure_command に --with-apxs2 オプションが定矩されおいるこずを確認する必芁がありたす。最埌に、mpm_prefork モゞュヌルがロヌドされおいお、mpm_worker や mpm_event ではなく、phpX.confここで X は PHP のメゞャヌバヌゞョンの蚭定ファむルが Apache モゞュヌル蚭定フォルダヌに远加され、php7.conf のような内容が含たれおいるこずを確認しおください。
  • mpm_event たたは mpm_worker での Apache: PHP のりェブサヌバヌずしお event たたは worker を䜿う堎合、FPM でコンパむルされた PHP が必芁です。php_source_configure_command に --enable-fpm オプションが定矩されおいるこずを確認しおください。たた、Apache の CGI および event のサポヌトがむンストヌルされおいるこずを確認する必芁がありたす䟋: apache2-mpm-event や libapache2-mod-fastcgi をむンストヌルする、および mpm_event モゞュヌルがロヌドされおいるこずを確認したす。
  • Nginx: PHP のりェブサヌバヌずしお Nginx を䜿甚する堎合、FPM でコンパむルされた PHP が必芁です。php_source_configure_command に --enable-fpm オプションが定矩されおいるこずを確認しおください。

䟝存関係

なし。

䟋のプレむブック

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.php }

vars/main.yml の䞭では:

php_memory_limit: "128M"
php_max_execution_time: "90"
php_upload_max_filesize: "256M"
php_packages:
  - php
  - php-cli
  - php-common
  - php-devel
  - php-gd
  - php-mbstring
  - php-pdo
  - php-pecl-apcu
  - php-xml
  ...

ラむセンス

MIT / BSD

著者情報

このロヌルは 2014 幎に Jeff Geerling によっお䜜成され、Ansible for DevOps の著者です。

プロゞェクトに぀いお

PHP for RedHat/CentOS/Fedora/Debian/Ubuntu.

むンストヌル
ansible-galaxy install entanet_devops.ansible_role_php
ラむセンス
mit
ダりンロヌド
10k
所有è€