ï¼2016/8/9ï¼PHP7ãHomebrewã®ç¾ç¶ã«åãããããç´°ããç¹ãä¿®æ£ãã¾ããã
ã¤ãã«PHP 5.5.0ããªãªã¼ã¹ããã¾ãããï¼ããã«é¢é£ãã¦ãphp-buildã使ã£ã¦PHP 5.3/5.4/5.5ã®3ãã¼ã¸ã§ã³ã®PHP-FPMç°å¢ãç¨æããæ¹æ³ãç´¹ä»ãã¾ãã
ãã®è¨äºã¯ãphpenv + php-build を使って 5.3 と 5.4 を共存させつつ php-fpm を使う - 肉とご飯と甘いもの @ sotarokãã®ã¢ãããã¼ãã®ãããªå
容ã«ãªã£ã¦ãã¾ãããããã¨ãsotarokï¼
PHP-FPMã¨ã¯
PHP-FPMã¯PHPã®SAPIå®è£
ã®ä¸ã¤ã§ãåä½ã§åä½ããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã§ããApacheãªãã§åãã®ã§ãæ°è»½ã«æ±ããããã¾ãããã¾ããã¾ã説æã§ããªãã®ã§ã詳ããã¯PHP-FPM本家サイトããããè¦ã¦ãã ããã
phpenv+php-buildã®ã»ããã¢ãã
åã¯php-buildãphpenvã®ãã©ã°ã¤ã³ã¨ãã¦ä½¿ã£ã¦ãã¾ãã®ã§ããã®ç°å¢ãä½ãã¾ããããã¾ãphpenvãã¤ã³ã¹ãã¼ã«ãã¾ãã
curl -L https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash
ä¸è¨ã³ãã³ãã®çµäºæã®ã¡ãã»ã¼ã¸ã«å¾ãã.bashrcã¾ãã¯.zshrcã®æ«å°¾ã«æ¬¡ã®2è¡ã追å ãã¦ã·ã§ã«ãåèµ·åãã¾ãã
PATH=$HOME/.phpenv/bin:$PATH # Add phpenv to PATH for scripting eval "$(phpenv init -)"
次ã«ãphp-buildãphpenvã®ãã©ã°ã¤ã³ã¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
mkdir $HOME/.phpenv/plugins cd $HOME/.phpenv/plugins git clone git://github.com/php-build/php-build.git
ããã§phpenvã®æ©è½ãå¢ãããphpenv install [ãã¼ã¸ã§ã³çªå·]ãã§PHPã®ã¤ã³ã¹ãã¼ã«ãã§ããããã«ãªãã¾ãã
詳ããã¯ãphpenv+php-build環境の構築と運用ããåèã«ãã¦ãã ããã
php-buildã§PHP-FPMãã¤ã³ã¹ãã¼ã«
sotarok ãè¨äºãæ¸ããé ã¨éããphp-buildã¯æ¨æºã§PHP-FPMããã«ãããããã«ãªãã¾ãããã§ãã®ã§ãã¤ã³ã¹ãã¼ã«ã¯ä¸è¨ã®ããã«ã¿ã¤ãããã ãã§ãã
$ phpenv install 5.3.26 $ phpenv install 5.4.16 $ phpenv install 5.5.0
ããã§ã$HOME/.phpenv/versions/[ãã¼ã¸ã§ã³çªå·]/sbin/ãã«åãã¼ã¸ã§ã³ã®php-fpmãä½ããã¾ãã
PHPã®è¨å®
ãã®ç°å¢ã§ä½¿ãããphp.iniã¯ã$HOME/.phpenv/versions/[ãã¼ã¸ã§ã³çªå·]/etc/php.iniãã«ãªãã¾ããæ¯åº¦ããªãã¿ã®ä¸è¨è¨å®ãå
¨é¨ã«è¿½è¨ãã¾ãããã
date.timezone =Asia/Tokyo
PHP-FPMã®è¨å®
PHP-FPMã®è¨å®ã¯ã$HOME/.phpenv/versions/[ãã¼ã¸ã§ã³çªå·]/etc/php-fpm.confãã§è¡ãã¾ãã
åã¯æ¬¡ã®ããã«è¨å®ãã¾ããããã以å¤ã®å¤ã¯ããã©ã«ããå©ç¨ãã¦ãã¾ãã
listen = 127.0.0.1:9053 listen.allowed_clients = 127.0.0.1 pm = ondemand pm.max_children = 5
ãã¼ãçªå·ã¯ãããã5.3ã9053çªã5.4ã9054çªã5.5ã9055çªã«ãã¾ãããã¾ããåä¸ãã¹ãã§èµ·åããnginxããã¢ã¯ã»ã¹ããåæã§ãã®ã§ãlocalhostããã®æ¥ç¶ã®ã¿è¨±å¯ãã¦ãã¾ãã
ã¡ãªã¿ã«ãpm=ondemandãã¯PHP-FPMã®é¢ç½ãæ©è½ã§ãæ®æ®µã¯ããã»ã¹æ°ãçµã£ã¦ããã¦ãå¿ããã¨ãã ãåããã»ã¹ãå¢ããã¦ããããã®ã§ããåç¨ç°å¢ã§æç¨ãã©ããã¯çåã§ãããæå
ã§èµ·åããã¨ãã¯ã¡ã¢ãªãç¯ç´ããããã¨ãå¤ãã§ãããããã便å©ãªæ©è½ã ã¨è¨ãããã§ãã
nginxã®ã¤ã³ã¹ãã¼ã«ã»è¨å®
PHP-FPMã¯FastCGIãããã³ã«ããåãä»ãã¦ãããªãã®ã§ããã©ã¦ã¶ããå©ç¨ããã«ã¯HTTPããFastCGIã«å¤æãã¦ããããµã¼ããå¿ è¦ã§ãããã®ãããªå ´åãæè¿ã§ã¯nginxãé¸ã¶ã®ãæ®éãã¨æãã¾ãã
åã¯Homebrewã§nginxãã¤ã³ã¹ãã¼ã«ãã¾ããã
brew install nginx
Homebrewã§ã¤ã³ã¹ãã¼ã«ããã¨ãè¨å®ãã¡ã¤ã«ã®ä½ç½®ã¯ /usr/local/etc/nginx/nginx.conf ã«ãªãã¾ããä¸è¨ã®ããã«ãä»åã®php-fpmç¨ã®ãã¼ãã£ã«ãµã¼ãè¨å®ã追å ãã¾ãã
server { listen 8080; server_name ~^php(?<phpver>\d\d).localhost$; set $port "90${phpver}"; root /Users/hnw/Sites; index index.html index.php; location ~ \.php.*$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:$port; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_param SERVER_NAME $host; } }
ããã¥ã¡ã³ãã«ã¼ãã®ä½ç½®ã¯é©å®ä¿®æ£ãã¦ãã ãããã¾ããããã¥ã¡ã³ãã«ã¼ãã®ãã¼ããã·ã§ã³ã¯755ã«ããå¿
è¦ãããã¾ãã
ããã«ãä¸è¨ãã¹ãã127.0.0.1ãæãããã«/etc/hostsã«ç»é²ãã¾ãã
ããã§è¨å®å®äºãnginxã¨PHP-FPMãæã§èµ·åããã°åä½ç¢ºèªã§ãã¾ãã
$HOME/.phpenv/versions/5.3.26/sbin/php-fpm --nodaemonize $HOME/.phpenv/versions/5.4.16/sbin/php-fpm --nodaemonize $HOME/.phpenv/versions/5.5.0/sbin/php-fpm --nodaemonize /usr/local/opt/nginx/sbin/nginx -g "daemon off;"
æ¯åæåã§èµ·åããã®ã¯ãã«ãã®ã§ã次åã¯èªåèµ·åã®è¨å®ãç´¹ä»ãã¾ãã