apache 跟 nginx 都有接觸,nginx 上本就是用 php-fpm 跟 php 溝通,現在 apache 上我也捨棄內建的 php module,改用 fcgi 去溝通了,有幾個好處:
- apache 內建 php module 必須綁死 php 版本
- 因為綁死 php 版本如果有使用 virtual host 的話要做到每個網站跑自己的 php 版本很麻煩
- php-fpm 效能以及穩定性綜合值應該是優於 apache php module
在 Ubuntu 上我選擇了 ondrej/php
當作 repo
| sudo add-apt-repository ppa:ondrej/php |
| sudo apt-get update |
| apt install php7.3 php7.3-fpm |
CentOS 上使用 remi
| dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm |
| dnf module reset php |
| dnf module enable php:remi-7.4 |
| dnf install php |
Config
Apache
Through socket file
| <VirtualHost> |
| |
| <FilesMatch \.php$> |
| SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" |
| </FilesMatch> |
| </VirtualHost> |
Through port
| <VirtualHost> |
| |
| <FilesMatch \.php$> |
| setHandler "proxy:fcgi://127.0.0.1:9000" |
| </FilesMatch> |
| </VirtualHost> |
Apache 使用上必須確定 proxy_module
以及 proxy_fcgi_module
這兩個 module 有開啟,前者必須在後者上方先載入。
Nginx
| location ~* \.php$ { |
| fastcgi_pass 127.0.0.1:9000; |
| fastcgi_index index.php; |
| fastcgi_split_path_info ^(.+\.php)(.*)$; |
| include fastcgi_params; |
| fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
| } |
Reference
沒有留言:
張貼留言