このaskubuntuスレッド、このHowtoForgeドキュメント、およびこのDigital Oceanチュートリアルからの指示を適応させることにより、Ubuntu16.04上のApache2.4でFastCGIを動作させることができました。
これらの情報源はすべて、作成と言っています /etc/apache2/conf-available/php7.0-fpm.conf
何を入れるか教えてください。ただし、php-fpm
をインストールした後 、私はすでにそのファイルを持っており、次の内容が含まれています:
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
Require all denied
</FilesMatch>
</IfModule>
そこで、代わりに独自のconfを作成し、その中の指示からコードを入れて有効にしました。
既存のphp7.0-fpm.conf
とは何ですか にとって? confに加えて有効にすると、Webサイトが機能しなくなります。意図したとおりにこれを行っていないので、将来問題が発生する可能性があるのではないかと心配しています。これに関する優れた最新のドキュメントを見つけるのは非常に困難です。
参考までに、これが私の手順全体です:
sudo apt install libapache2-mod-fastcgi php-fpm
sudo a2dismod php7.0 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
sudoedit /etc/apache2/conf-available/custom-fpm.conf
/etc/apache2/conf-available/custom-fpm.conf
の内容 :
<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
コマンドの続き:
sudo a2enconf custom-fpm
sudo systemctl restart apache2 && sudo systemctl restart php7.0-fpm
よろしくお願いします。
承認された回答:
私は同じ混乱にぶつかりました、私はあなたの痛みを感じます。何度も読んだ後、ほとんどの記事が古く、以前の方法(または場合によっては組み合わせ)を参照していることが明らかになりました。
Ubuntu 16.04の組み込み構成でPHP-FPMを使用すると、のみ これを行う必要があります:
sudo a2enconf php7.0-fpm
sudo a2enmod proxy proxy_fcgi
そのカスタム構成が意味をなさなかったとき、私はあなたがしたことのほとんどを行い、それからすべてを削除しました。
既存のphp7.0-fpm.confは何のためにありますか?
パッケージによってインストールされていることがわかった構成は、mod_proxy_fcgiを使用するためのものです。これは、mod_proxy_fcgiを介して.phpファイルをPHP FPMにバインドし、mod_proxyを使用してUnixドメインソケットを介してバインドします。私の知る限り、これは最新の「レシピ」です(現在利用可能な6つのレシピの中で!)
libapache2-mod-fastcgi
をインストールする必要はありません これは別の古い方法です。その構成を記述する必要はありません。これは、mod_fastcgiを直接使用するためのものです。 actions fastcgi alias
をインストールする必要はありません mod_fastcgiを構成するためです。
Ubuntu 16の記事でさえ、新しいレシピがすべてあなたのために設定されていると言及している記事がないのは奇妙だと思います!
このコメントは私にとっての歴史を明らかにしました:
推奨される方法は、次のいずれかのレシピを使用するfastcgiです。
(mod_fastcgi、httpd 2.2)http://wiki.apache.org/httpd/php-fastcgi
(mod_fcgid、httpd 2.2)http://wiki.apache.org/httpd/php-fcgid
(mod_proxy_fcgi、httpd 2.4)http://wiki.apache.org/httpd/PHP-FPM
http://php.net/manual/en/install.unix.debian.php#112544(2013)
さらに、Apacheのこの記事では、ProxyPassMatchまたはSetHandler + UDSのいずれかを使用して、FPMに接続するようにmod_proxy_fcgiを構成するための3つのサブオプションについて詳しく説明します。 UDSはhttps://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.htmlごとにApache2.4.10以降であるため、信頼できるバックポート以降が必要であることに注意してください。
https://wiki.apache.org/httpd/PHP-FPM
だから私はそれを構成する6つの方法があることを視覚化するようになりました:
大まかに歴史的な順序で:
-
Apache PHPモジュール:mod_php(古い方法)
-
FastCGI経由–ハンドラー/アクション/エイリアス/FastCgiExternalServer構成を使用
a。 mod_fastcgi
b。 mod_fcgid
-
次のいずれかを介して構成されたmod_proxy_fcgiを介したPHP-FPMの使用:
a。 TCPソケット(IPおよびポート)ProxyPassMatch…fcgi://127.0.0.1:9000 / path /
b。 Unixドメインソケット(UDS)ProxyPassMatch…unix:/ path / to / socket
c。 (UDS)SetHandler“ proxy:unix:OR SetHandler“ proxy:fcgi:
経由
免責事項:これは私にとってまったく新しいことなので、おそらくまだ5つの間違いと10のことを学ぶ必要があります。