IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Linux / Plamo-5.2/apache+phpをCGIで動かす(完了なのだが…)

Plamo-5.2/apache+phpをCGIで動かす(完了なのだが…)

2014/02/2 Linux, Plamo

Apache MPM:prefork と worker の違い

詳しく解説されているサイトがありましたので、いろいろ読ませていただいたところ、prefork は、リクエストに対して、子プロセスを起動するので時間がかかりメモリを消費する、一方 worker は、1プロセスがいくつものスレッドを持っており、それぞれがリクエストに応えるので、メモリ消費量も少なくパフォーマンスも良いということのようです。

参考にさせていただいたサイトです。
曖昧スラッシュ » Apacheのpreforkとworker
apache2.0のMPM ( Multi Processing Module ) とは – end0tknrのkipple – web写経開発

ということで、worker で動作させようと思いますと、phpをcgiで動かすか、スレッドセーフでコンパイルし直すということになりますね。

Apache2 の MPM マルチスレッドモードを実運用環境で使用することは非推奨?

ところが、PHP: Apache 2.x (Unixシステム用) – Manual を見てみましたら、いきなり

警告

Apache2 の MPM マルチスレッドモードを実運用環境で使用することは推奨されません。 代わりに prefork MPM を使ってください。これは Apache 2.0 および 2.2 におけるデフォルトの MPM です。prefork MPM を使う理由については、 マルチスレッド版 MPM の Apache2の FAQ エントリを参照してください。

こんな警告に出会ってしまいました。

で、FAQを見てみますと、何だか難しいのですが、要は「マルチスレッドモードで php を動かすことは危険ですよ。どうしてもそうしたければ、FastCGIを使ってね。」ということのようです。

 phpをCGIで動かす

ここは素直にしたがって、CGI で動かすことにしましょう。以前はモジュールで動かしていましたので、CGI は初めてになりますが、よく利用しているさくらのレンタルサーバの php も CGI で動いていますので、いい勉強になるかも知れません。

まずは、デフォルト設定でCGI が動くのか調べてみますと、Apache2.4では、モジュールの組み込みがコメントアウトされているようですので、外して組み込みます。

LoadModule cgid_module lib/httpd/modules/mod_cgid.so

そして、CGI 設定の段取りは、

  1. 拡張子.php が cgi ファイルであると指定する
  2. cgi ファイルがリクエストされた時に実行するプログラムを指定する
  3. /usr/bin/php-cgi のシンボルリンクを cgi-bin ディレクトリに置く

こんな感じで行けそうですので、

# ln -s /usr/bin/php-cgi /srv/httpd/cgi-bin/php

として、httpd.conf に以下を追加します。

<Directory /srv/httpd/cgi-bin>
Options +FollowSymLinks
</Directory>

AddHandler cgi-handler .php
Action cgi-handler /cgi-bin/php

で、apache を再起動しようとしましたら怒られてしまいました。

AH00526: Syntax error on line 510 of /etc/httpd/httpd.conf:

Invalid command ‘Action’, perhaps misspelled or defined by a module not included in the server configuration

 action モジュールもコメントアウトされているんですね。コメントアウトを外して、

 LoadModule actions_module lib/httpd/modules/mod_actions.so

再起動しますと、CGI モードで走っている php が確認できました。  

Server API CGI/FastCGI

ということで問題ないとは思うのですが、いろいろググっている途中で、

How to install Apache 2 with PHP 5 as a CGI を発見し、

ScriptAlias /local-bin/ “/usr/bin/”
AddHandler cgi-handler .php
Action cgi-handler /local-bin/php-cgi
<Directory “/usr/bin”>
    Require all granted
</Directory>

この設定でもいけるようです。これですと、php-cgi のシンボルリンクはいらなくなりますね。

ということで、次は mysql といきたいところですが、CGI 設定の過程で、またも警告に出会ってしまいました。

PHP: CGI およびコマンドライン – Manual

警告

CGI モードで公開したサーバーは、いくつかの脆弱性の標的となる可能性があります。 これらの攻撃からサーバーを守る方法については、 CGI セキュリティ のセクションを参照してください。

さらに、

CGI版PHPに対する魔法少女アパッチマギカ攻撃を観測しました | 徳丸浩の日記なんて記事もあります。

ああ、難しい! それに、FastCGI ってのも調べなくてはなりません。

Plamo-5.2/ウェブサーバapache+phpを立ち上げる(prefork)
Plamo-5.2/phpをソースからインストールし直す(完了)
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/05/25

WordPress:リビジョン削除、回数制限

2023/05/10

WordPress:裏技的サイトリニューアル

2023/04/28

XserverへのSSH接続がエラーになってしまった

2023/04/16

正規表現の最短一致でミスる

2023/04/4

WordPress:公開中サイトをサブディレクトリでリニューアルし公開する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ215
  • WebTips109
  • javascript98
  • Joomla!88
  • Wordpress70
  • Windows68
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php23
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • Git入門6
  • ConoHa WING6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • Xserver3
  • Firefox3
  • 静的サイトジェネレーター3
  • SSD3
  • Docker3
  • Blankslate3
  • Twitter2
  • Mactype2
  • GitHub2
  • youtube1
  • はてなブクマ1
  • rails入門1
  • 映画1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com