今天把 FreeBSD web 改成了 apache worker 其實之前就已經這麼做了,只是今天加上 mod_fastcgi 我是參考 DarkKiller 大神 apache22 (worker) + mod_fastcgi + php5-fcgi,之前就把 Server 換成了 php5-fcgi,只不過我是搭配 Lighttpd,效能方面還不錯,可以參考這篇:[FreeBSD] Lighttpd + PHP + mod_proxy + FastCGI,那因為用 lighttpd 的外掛模組真的太少,不像 apache 支援這麼多 module,重點是還缺少了 .htaccess 這個功能,所以大大降低大家使用 lighttpd,近期內會把全部 server 換成 apache2 搭配 mod_fastcgi,那底下寫一下作法了:
基本上利用 FreeBSD 的 ports 安裝就可以了: 1. 先安裝 apache with MPM = worker
cd /usr/ports/www/apache22 make WITH_MPM=worker install clean pkg_info | grep apache # # 會出現 # apache-worker-2.2.9_5 Version 2.2.x of Apache web server with worker MPM.2. 安裝 PHP5 跟 PHP5-extensions
cd /usr/ports/lang/php5; make install clean cd /usr/ports/lang/php5-extensions; make install clean3. 安裝 mod_fastcgi
cd /usr/ports/www/mod_fastcgi make install clean全部安裝完成,先修改 httpd.conf
# # 把下面這行 umark 掉 # # Server-pool management (MPM specific) Include etc/apache22/extra/httpd-mpm.conf修改 Include etc/apache22/extra/httpd-mpm.conf mpm\_worker\_module 那段:
ThreadLimit 512 StartServers 1 MaxClients 512 MinSpareThreads 1 MaxSpareThreads 512 ThreadsPerChild 512 MaxRequestsPerChild 0這樣 MPM worker 就設定完成了,接下來設定 mod_fastcgi 到 /usr/local/etc/apache22/httpd.conf 把底下這一段的註解拿掉
LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so新增設定檔:/usr/local/etc/apache22/Includes/fastcgi.conf,內容如下:
# FastCgiConfig -maxClassProcesses 1 ScriptAlias /fcgi-bin/ "/usr/local/www/fcgi-bin/"這裡設定只能跑一隻SetHandler fastcgi-script AllowOverride All Order allow,deny Allow from all # AddHandler php-fastcgi .php Action php-fastcgi /fcgi-bin/php
fastcgi 配合前面的 MPM worker,這樣確保所有的 apache 只會透過這個 fastcgi socket 跑 php。 然後再建立: /usr/local/www/fcgi-bin 這個資料夾,裡面擺入執行檔 php 內容是:
#!/bin/sh PHPRC="/usr/local/etc" export PHPRC PHP_FCGI_CHILDREN=128 export PHP_FCGI_CHILDREN exec /usr/local/bin/php-cgi之後在安裝
APC (www/pecl-APC) 這樣就可以了,底下引述 gslin 的講解:
這個架構下,httpd 會產生 512 threads 處理連線,並產生一個 fastcgi 的 socket 處理 PHP 程式,這個 socket 會由 128 隻 php-cgi 聽,且這 128 隻的 cache 會共用。 參考網站:gslin 大神 :apache22 (worker) + mod_fastcgi + php5-fcgi
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7