#author("2018-09-04T09:44:10+09:00","","")

#author("2018-09-04T09:44:29+09:00","","")

[[CentOS7]]

*Apache httpd : Perl + mod_perl [#r277d9b7]
mod_perl をインストールして、Perl スクリプトの実行を高速化します。

*mod_perl をインストールします。 [#x98afd74]
|BGCOLOR(black):COLOR(white):|c
|&color(lightpink){# EPEL からインストール};|
|[root@localhost ~]# yum --enablerepo=epel -y install mod_perl|



*Perl インタープリタをメモリに常駐させるのみの PerlRun モードの設定です。 [#ne128871]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# vi /etc/httpd/conf.d/perl.conf|
|&color(lightpink){# 15行目:コメント解除 ( コードチェックしログに警告を表示 )}; &br; PerlSwitches -w &br;  &br; &color(lightpink){# 24行目:コメント解除 ( 汚染検出モード有効 )}; &br; PerlSwitches -T &br;  &br; &color(lightpink){# 30-36行目:以下のようにコメント解除}; &br;  &br; Alias /perl /var/www/perl &br; <Directory /var/www/perl>     &color(lightpink){# mod_perl 環境下にするディレクトリ}; &br;  &br;     SetHandler perl-script     &color(lightpink){# ディレクトリ配下は全て perl-script 扱いになる}; &br;  &br; &color(lime){#    AddHandler perl-script .cgi};    &color(lightpink){# 指定拡張子のみ perl-script 扱いにするなら上行を無効にして当行を有効化}; &br;  &br; #    PerlResponseHandler ModPerl::Registry &br;     &color(lime){PerlResponseHandler ModPerl::PerlRun};     &color(lightpink){# PerlRunモード指定}; &br;  &br;     PerlOptions +ParseHeaders &br;     Options +ExecCGI &br; </Directory> &br;  &br; &color(lightpink){# 43-49行目:以下のようにコメント解除 & 追記}; &br; <Location /perl-status> &br;     SetHandler perl-script &br;     PerlResponseHandler Apache2::Status &br;     &color(lime){Require ip 127.0.0.1 10.0.0.0/24};    &color(lightpink){# アクセス許可範囲設定}; &br;  &br; #    Order deny,allow &br; #    Deny from all &br; #    Allow from .example.com &br; </Location> &br; |
|[root@localhost ~]# systemctl restart httpd|



*テストスクリプトを作成して動作を確認します。以下のような結果が表示されれば OK です。 [#x3c6124b]

|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# mkdir /var/www/perl|
|[root@localhost ~]# vi /var/www/perl/test-mod_perl.cgi|
| &br; #!/usr/bin/perl &br;  &br; use strict; &br; use warnings; &br;  &br; print "Content-type: text/html\n\n"; &br; print "<html>\n<body>\n"; &br; print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">"; &br;  &br; my $a = 0; &br; &number(); &br;  &br; print "</div>\n</body>\n</html>"; &br;  &br; sub number { &br;     $a++; &br;     print "number \$a = $a"; &br; } &br; |
|[root@localhost ~]# chmod 705 /var/www/perl/test-mod_perl.cgi|



&ref(01.png);



*実行コードをメモリ上にキャッシュする Registry モードの設定です。 [#wecb22b2]

|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# vi /etc/httpd/conf.d/perl.conf|
|Alias /perl /var/www/perl &br; <Directory /var/www/perl> &br;     SetHandler perl-script &br;     PerlResponseHandler ModPerl::Registry     &color(lightpink){# コメント解除}; &br;  &br; &color(lime){#};   PerlResponseHandler ModPerl::PerlRun     &color(lightpink){# コメントにする}; &br;  &br;     PerlOptions +ParseHeaders &br;     Options +ExecCGI &br; </Directory> &br; |
|[root@localhost ~]# systemctl restart httpd|



作成したテストスクリプトにアクセスすると、変数の値がメモリ上にキャッシュされているため、以下のようにアクセスする度に値が増加します。 これが意図しない動作であれば、テストスクリプトの例の場合、Registry モードでは以下のようにコードを修正する必要があります。 Registry モードではこのように変数の扱い方等、注意が必要です。 [#k33e9698]

作成したテストスクリプトにアクセスすると、変数の値がメモリ上にキャッシュされているため、以下のようにアクセスする度に値が増加します。 これが意図しない動作であれば、テストスクリプトの例の場合、Registry モードでは以下のようにコードを修正する必要があります。 Registry モードではこのように変数の扱い方等、注意が必要です。




&ref(02.png);



|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# vi /var/www/perl/test-mod_perl.cgi|
|#!/usr/bin/perl &br;  &br; use strict; &br; use warnings; &br;  &br; print "Content-type: text/html\n\n"; &br; print "<html>\n<body>\n"; &br; print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">"; &br;  &br; my $a = 0; &br;  &br; &number($a &br; ); &br;  &br; print "</div>\n</body>\n</html>"; &br;  &br; sub number { &br;  &br;     my($a) = @_; &br;  &br;     $a++; &br;     print "number \$a = $a"; &br; } &br; |



なお、「http://(サーバーのホスト名またはIPアドレス)/perl-status/」にアクセスすると、mod_perl のステータスが確認可能です。

&ref(03.png);

&ref(04.png);

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS