GNU/Linux >> Linux の 問題 >  >> Debian

Ubuntu/Debianでmod_fcgidを使用してApacheとPhpをセットアップします

Mod Fcgid

Mod Fcgidは、fastcgi対応アプリケーションとの通信を可能にするApacheモジュールです。これは、fastcgi上でphpを実行するためにapacheでセットアップするために使用できます。これは古いmod_fastcgiの代替であり、いくつかの違いがあります。
この投稿では、このモジュールを使用してphpでapacheを設定します。 mod_fastcgiを使用してapache+phpを設定することもできます。

fastcgiはphpの実行をapacheから遠ざけるので、mpmworkerのようなスレッドベースのmpmを自由に使用できます。

インストール

セットアップには、apache、php(cgiバイナリを使用)、mod_fcgid、mpmワーカーが必要です。コマンドラインからすぐにインストールします。

# sudo apt-get install apache2 libapache2-mod-fcgid apache2-mpm-worker php5 php5-cgi

mod_fcgidを有効にする

# sudo a2enmod fcgid

構成ファイルを見つける

必要なパッケージをインストールしたら、mod_fcgidを構成します。構成は主にさまざまな構成ファイルを介して行われます。したがって、構成ファイルがどこにあるかを知ることが重要です。

ubuntu/debianのapache構成ファイルは次のパスにあります

/etc/apache2/sites-available/default

ディストリビューションのApache構成ファイルの場所を見つけるには、apache2 / httpd/apachectlコマンドを使用します。

# apachectl -S
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
Syntax OK

したがって、構成ファイルは / etc / apache2 / sites-enabled / 000-defaultにあります。 。

Fcgidの構成

Apacheは、すべての「.php」ファイルを処理するためにmod_fcgidを使用するように構成する必要があり、mod_fcgidは、phpfastcgiバイナリの場所を通知する必要があります。

/usr/bin/php-cgi

次の構成をvhostブロックのルートディレクトリセクションに追加します

<Ifmodule mod_fcgid.c>
	# FCGID registers a handler named fcgid-script
	AddHandler fcgid-script .php
	Options +ExecCGI
	FcgidWrapper /usr/local/bin/php-fcgid-wrapper
</IfModule>
という名前のハンドラーを登録します。

これは、ラッパースクリプトを使用してfastcgiプロセスphp-cgiを起動するようにapacheに指示します。また、fcgidハンドラーを使用して.phpファイルを実行するようにapacheに指示します。

プロセスの最大数などのfcgid設定を制御するには、vhostブロックの外部に関連する設定を追加します。

<Ifmodule mod_fcgid.c>
	# Context - server config
	FcgidMaxProcesses 150
	# Otherwise php output shall be buffered
	FcgidOutputBufferSize 0
</IfModule>

これらの設定はサーバーコンテキストに適用されるため、Vhostブロックの外部にある必要があります。

ラッパースクリプト

これで、mod_fcgidがphp-cgiプロセスを起動するために使用するラッパースクリプトが追加されました。

#!/bin/sh
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

# Replace with the path to your FastCGI-enabled PHP executable
exec /usr/bin/php-cgi

ラッパースクリプトは/usr / local / bin / php-fcgid-wrapperに保存しています。 ただし、どこにでも保存でき、パスはapache構成で指定する必要があります。

chmodを使用してラッパースクリプトを実行可能にします

/usr/local/bin# chmod +x php-fcgid-wrapper

そうしないと、apacheログに次のようなエラーが表示されます

[Tue Jun 11 02:53:20 2013] [warn] [client 127.0.0.1] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Tue Jun 11 02:53:20 2013] [error] [client 127.0.0.1] Premature end of script headers: server.php

また、「PHP_FCGI_CHILDREN」設定を使用しないように注意してください。 php-cgiバイナリは複数の子プロセスをフォークして管理できますが、fcgidは一度に複数のリクエストをphp-cgiバイナリに渡さないため、子プロセスは使用されません。これはドキュメントで説明されています

PHP child process management (PHP_FCGI_CHILDREN) should always be disabled with mod_fcgid, which will only route one request at a time to application processes it has spawned; thus, any child processes created by PHP will not be used effectively. (Additionally, the PHP child processes may not be terminated properly.) By default, and with the environment variable setting PHP_FCGI_CHILDREN=0, PHP child process management is disabled.

The popular APC opcode cache for PHP cannot share a cache between PHP FastCGI processes unless PHP manages the child processes. Thus, the effectiveness of the cache is limited with mod_fcgid; concurrent PHP requests will use different opcode caches.

また、fcgidでAPCを使用することはできません。

参考資料

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Debian
  1. Debian8でmod_pagespeedとMemcachedを使用してApacheを高速化する

  2. Ubuntu/Debianにmodfastcgiを使用してApacheとphpをインストールして構成します

  3. Ubuntu 20.04でApache、PHP、MongoDBをセットアップする方法

  1. UbuntuとDebianでKeepAlivedを使用してIPフェイルオーバーを設定する方法

  2. Ubuntu 20.04でLAMP(PHP、Apache、Mariadb)を使用してOpencartをセットアップする方法

  3. Debian 11でLAMP(PHP、Apache、Mariadb)を使用してOpencartをセットアップする方法

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

  2. UbuntuまたはDebianにcgiを使用してApacheとPHPをインストールして構成します

  3. Ubuntu13.10でmodプロキシfcgiを使用してApache2.4とPhpFPMをセットアップします