Apache httpd : mod_perl の設定2024/02/01 |
[mod_perl] をインストールして、Perl スクリプトの実行を高速化します。 |
|
[1] | [mod_perl] をインストールします。 |
root@www:~ # pkg install -y ap24-mod_perl2
|
[2] | Perl インタープリタをメモリに常駐させるのみの [PerlRun] モードの設定です。 |
root@www:~ #
vi /usr/local/etc/apache24/modules.d/260_mod_perl.conf # コメント解除 LoadModule perl_module libexec/apache24/mod_perl.so
root@www:~ #
vi /usr/local/etc/apache24/Includes/mod_perl.conf # 新規作成 # 例として [/usr/local/www/apache24/perl] 配下を対象として設定 PerlSwitches -w PerlSwitches -T Alias /perl /usr/local/www/apache24/perl <Directory /usr/local/www/apache24/perl> AddHandler perl-script .cgi .pl PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options FollowSymLinks ExecCGI AllowOverride All Require all granted </Directory> <Location /perl-status> SetHandler perl-script PerlResponseHandler Apache2::Status Require ip 127.0.0.1 10.0.0.0/24 </Location> service apache24 reload
|
[3] | テストスクリプトを作成して動作を確認します。以下のような結果が表示されれば OK です。 |
root@www:~ #
mkdir /usr/local/www/apache24/perl root@www:~ # vi /usr/local/www/apache24/perl/test-mod_perl.cgi #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; my $a = 0; &number(); sub number { $a++; print "number \$a = $a \n"; } chmod 705 /usr/local/www/apache24/perl/test-mod_perl.cgi root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 1 |
[4] | 実行コードをメモリ上にキャッシュする [Registry] モードの設定です。 |
root@www:~ #
vi /usr/local/etc/apache24/Includes/mod_perl.conf Alias /perl /usr/local/www/apache24/perl <Directory /usr/local/www/apache24/perl> AddHandler perl-script .cgi .pl # コメントにしてその下に追記 #PerlResponseHandler ModPerl::PerlRun PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options FollowSymLinks ExecCGI AllowOverride All Require all granted </Directory>root@www:~ # service apache24 reload
|
[5] | [3] で作成したテストスクリプトにアクセスすると、変数の値がメモリ上にキャッシュされているため、以下のようにアクセスする度に値が増加します。 これが意図しない動作であれば、テストスクリプトの例の場合、[Registry] モードでは以下のようにコードを修正する必要があります。 [Registry] モードではこのように変数の扱い方等、注意が必要です。 |
root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 1 root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 2 root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 3
root@www:~ #
vi /usr/local/www/apache24/perl/test-mod_perl.cgi #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; my $a = 0; &number($a); sub number { my($a) = @_; $a++; print "number \$a = $a \n"; }root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 1 root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 1 root@www:~ # curl localhost/perl/test-mod_perl.cgi number $a = 1 |
[6] | なお、[(サーバーのホスト名 または IP アドレス)/perl-status/] にアクセスすると [mod_perl] のステータスが確認可能です。 |
Sponsored Link |
|