Perl + mod_perl2016/06/13 |
|
mod_perl をインストールして、Perl スクリプトの実行を高速化します。
|
|
| [1] | mod_perl をインストールします。 |
|
root@www:~# apt-get -y install libapache2-mod-perl2
|
| [2] | Perl インタープリタをメモリに常駐させるのみの PerlRun モードの設定です。 |
|
root@www:~#
vi /etc/apache2/conf-available/mod_perl.conf # 新規作成 # 例として /var/www/perl 配下を対象として設定
PerlSwitches -w
PerlSwitches -T
Alias /perl /var/www/perl
<Directory /var/www/perl>
AddHandler perl-script .cgi .pl
PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
<Location /perl-status>
SetHandler perl-script
PerlResponseHandler Apache2::Status
Require ip 127.0.0.1 10.0.0.0/24
</Location>
a2enconf mod_perl Enabling conf mod_perl. To activate the new configuration, you need to run: service apache2 reloadroot@www:~# systemctl restart apache2
|
| [3] | テストスクリプトを作成して動作を確認します。以下のような結果が表示されれば OK です。 |
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">";
my $a = 0;
&number();
print "</div>\n</body>\n</html>";
sub number {
$a++;
print "number \$a = $a";
}
chmod 705 /var/www/perl/test-mod_perl.cgi |
|
| [4] | 実行コードをメモリ上にキャッシュする Registry モードの設定です。 |
|
root@www:~#
vi /etc/apache2/conf-enabled/mod_perl.conf
Alias /perl /var/www/perl
<Directory /var/www/perl>
AddHandler perl-script .cgi .pl
# コメントにしてその下に追記
#PerlResponseHandler ModPerl::PerlRun
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
root@www:~# systemctl restart apache2
|
| [5] | [4] で作成したテストスクリプトにアクセスすると、変数の値がメモリ上にキャッシュされているため、以下のようにアクセスする度に値が増加します。 これが意図しない動作であれば、テストスクリプトの例の場合、Registry モードでは以下のようにコードを修正する必要があります。 Registry モードではこのように変数の扱い方等、注意が必要です。 |
|
|
root@www:~#
vi /var/www/perl/test-mod_perl.cgi #!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; print "<html>\n<body>\n"; print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">"; my $a = 0;
&number(
$a );
print "</div>\n</body>\n</html>";
sub number {
my($a) = @_;
$a++;
print "number \$a = $a";
}
|
| [6] | なお、「http://(サーバーのホスト名またはIPアドレス)/perl-status/」にアクセスすると、mod_perl のステータスが確認可能です。 |
|
| Sponsored Link |
|
|