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>
# someting config
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Through port
<VirtualHost>
# someting config
<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;
}
沒有留言:
張貼留言