はじめに
下記サイトを見ていてmod_fastcgiが気になったので入れてみたメモ。
【Munin】mod_fcgidからmod_fastcgiに切り替え、負荷軽減
貧弱な環境では、mod_fastcgi を使う事で、比較的メモリに余裕が増えました
と書かれていたのを見てどれどれ自分も、って感じですね。
アジェンダ
1. ダウンロード&インストール
下記サイトから環境にあったダウンロードリンクをコピーします。
http://pkgs.repoforge.org/mod_fastcgi/
自分はmod_fastcgi-2.4.6-2.el6.rf.x86_64.rpm
のリンクを選びました。
※ ダウンロード $ cd /usr/local/src $ sudo wget http://pkgs.repoforge.org/mod_fastcgi/mod_fastcgi-2.4.6-2.el6.rf.x86_64.rpm ※ インストール $ rpm -ivh mod_fastcgi-2.4.6-2.el6.rf.x86_64.rpm ※ どこに入ったか確認 $ locate mod_fastcgi.so /usr/lib64/httpd/modules/mod_fastcgi.so /usr/local/apache2/modules/mod_fastcgi.so
2. apacheのconfigに設定
fastcgi.confは無かったので新規で作りました。 設定した中身はこの3行だけ
$ vi /etc/httpd/conf.d/fastcgi.conf ---- vi ---- LoadModule fastcgi_module /usr/lib64/httpd/modules/mod_fastcgi.so ScriptAlias /fcgi/ /var/www/fcgi/ FastCgiServer /var/www/fcgi/sample.fcgi -processes 3 ------------
軽く解説
LoadModule fastcgi_module /usr/lib64/httpd/modules/mod_fastcgi.so
fastcgi_moduleをインストールしたのでLoadModuleした上でlocateで調べたパスを指定してます。
/var/www/fcgiはこれから作成するのでまだありません。
このあとてきとうなcgiを作ってスクリプトを置く場所ですね。
ScriptAliasを設定することでhttp://ゆーあーるえる/fcgi/
でアクセスされた際に/var/www/fcgi/
を見るようにしてます
これから作るsampleのfcgiを指定してます。
-processes 3
によりプロセスが3つ起動される予定。
必要に応じて-processes 5
とかにするなりすると良いですね。
3. sample.fcgiを作る
動きを見るためだけのsample.fcgiを作ります。
プログラムはCPANサイトのFCGIモジュールのサンプルをまんまコピりました。
→ http://search.cpan.org/~skimo/FCGI-0.67/FCGI.PL
※ fcgi用のディレクトリもないので作る $ sudo mkdir /var/www/fcgi ※ fcgiスクリプトをつくる $ sudo vi /var/www/fcgi/sample.fcgi ---- vi作成 ---- #!/usr/bin/perl use FCGI; my $count = 0; my $request = FCGI::Request(); while($request->Accept() >= 0) { print("Content-type: text/html\r\n\r\n", ++$count); } ---------------
4. apache再起動して確認してみる
用意はできたのでapacheを再起動してみてみます
$ sudo sudo /etc/init.d/httpd restart httpd を停止中: [ OK ] httpd を起動中: Syntax error on line 3 of /etc/httpd/conf.d/fastcgi.conf: FastCgiServer: "/var/www/fcgi/sample.fcgi" access for server (uid 4294967295, gid 4294967295) not allowed: execute not allowed [失敗] ※ アクセス権がなくて怒られてるので ※ fcgiのアクセス権を変えてから再実行でうまくいった $ sudo chmod 755 /var/www/fcgi/sample.fcgi $ sudo sudo /etc/init.d/httpd restart httpd を停止中: [失敗] httpd を起動中: [ OK ]
プロセスを見てみる
こんな感じで子プロセスとしてsample.fcgiが立ち上がってます
$ ps auxf | grep fcgi apache 2277 0.0 0.1 179956 2532 ? S 21:08 0:00 \_ /usr/sbin/fcgi- apache 2284 0.0 0.1 27904 2092 ? S 21:08 0:00 | \_ /usr/bin/perl /var/www/fcgi/sample.fcgi apache 2287 0.0 0.1 27904 2092 ? S 21:08 0:00 | \_ /usr/bin/perl /var/www/fcgi/sample.fcgi apache 2288 0.0 0.1 27904 2092 ? S 21:08 0:00 | \_ /usr/bin/perl /var/www/fcgi/sample.fcgi
urlでアクセスしてみる
レンタルサーバやらドメインの設定にもよるかもですが、
http://ゆーあーるえる/fcgi/sample.fcgi
でアクセスしてみます。
1
とだけ表示されます。
今回のプログラムは1プロセスごとに数値を1からカウントするものなので、
最大3回アクセスすると1増えて2
になる感じで動きが確認できました。
参考
下記サイトを参考にしました * FastCGI with mod_fastcgi * 【Munin】mod_fcgidからmod_fastcgiに切り替え、負荷軽減
おわり
入れて満足してしまってメモリがどうなったかとかは見てません。
mod_fcgid
とmod_fastcgi
は別物って自分も知らなかったので勉強になって良かったということでw