GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu16.04でFastcgiを使用してApache2.4を設定する– Php7.0-fpm.confで何をしますか?

この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つの方法があることを視覚化するようになりました:

大まかに歴史的な順序で:

  1. Apache PHPモジュール:mod_php(古い方法)

  2. FastCGI経由–ハンドラー/アクション/エイリアス/FastCgiExternalServer構成を使用

    a。 mod_fastcgi

    b。 mod_fcgid

  3. 次のいずれかを介して構成された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のことを学ぶ必要があります。


Ubuntu
  1. Ubuntu18.04にApacheをインストールする方法

  2. Ubuntu20.04にApacheをインストールする方法

  3. Ubuntu18.04でLetsEncryptを使用してApacheを保護する

  1. Ubuntu18.04でApacheを使用してNextcloudをインストールおよび構成する方法

  2. Ubuntu18.04でApacheを使用してownCloudをインストールおよび構成する方法

  3. Ubuntu18.04にApacheを使用してJoomlaをインストールする方法

  1. Ubuntu20.04でLetsEncryptを使用してApacheを保護する

  2. Ubuntu16.04LTSにNginxを使用してOroCRMをインストールする方法

  3. Ubuntu16.04でVarnishとApacheを使用してMagento2をセットアップする方法