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