AlmaLinux9 Apache httpd mod_perlを設定する方法

環境
AlmaLinux release 9.2 (Turquoise Kodkod)

概要
[mod_perl] をインストールして、Perl スクリプトの実行を高速化します。

操作方法
1.[mod_perl] をインストールします
EPEL からインストール
# dnf –enablerepo=epel -y install mod_perl

2.Perl インタープリタをメモリに常駐させるのみの [PerlRun] モードの設定を行います
# vi /etc/httpd/conf.d/perl.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 15行目コードチェックしログに警告を表示
PerlSwitches -w
# 24行目 : 検出モード有効
PerlSwitches -T
# 30-37行目 : コメント解除して設定を追記する
Alias /perl /var/www/perl
<Directory /var/www/perl>
# ディレクトリ配下は全て perl-script 扱い
SetHandler perl-script
# 指定拡張子のみ perl-script 扱いにする場合は上行を無効化して当行を追記
AddHandler perl-script .cgi
# PerlResponseHandler ModPerl::Registry
# PerlRun モード指定行を追記
PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
# 44-48行目 : ステータス確認
<Location /perl-status>
SetHandler perl-script
PerlResponseHandler Apache2::Status
# 任意のアクセス許可範囲を設定
Require ip 127.0.0.1 10.0.0.0/24
# Require host .example.com
</Location>
# 15行目コードチェックしログに警告を表示 PerlSwitches -w # 24行目 : 検出モード有効 PerlSwitches -T # 30-37行目 : コメント解除して設定を追記する Alias /perl /var/www/perl <Directory /var/www/perl> # ディレクトリ配下は全て perl-script 扱い SetHandler perl-script # 指定拡張子のみ perl-script 扱いにする場合は上行を無効化して当行を追記 AddHandler perl-script .cgi # PerlResponseHandler ModPerl::Registry # PerlRun モード指定行を追記 PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options +ExecCGI </Directory> # 44-48行目 : ステータス確認 <Location /perl-status> SetHandler perl-script PerlResponseHandler Apache2::Status # 任意のアクセス許可範囲を設定 Require ip 127.0.0.1 10.0.0.0/24 # Require host .example.com </Location>
# 15行目コードチェックしログに警告を表示
PerlSwitches -w
# 24行目 : 検出モード有効
PerlSwitches -T

# 30-37行目 : コメント解除して設定を追記する
Alias /perl /var/www/perl
<Directory /var/www/perl>
    # ディレクトリ配下は全て perl-script 扱い
    SetHandler perl-script
    # 指定拡張子のみ perl-script 扱いにする場合は上行を無効化して当行を追記
    AddHandler perl-script .cgi
#    PerlResponseHandler ModPerl::Registry
    # PerlRun モード指定行を追記
    PerlResponseHandler ModPerl::PerlRun
    PerlOptions +ParseHeaders
    Options +ExecCGI
</Directory>

# 44-48行目 : ステータス確認
<Location /perl-status>
    SetHandler perl-script
    PerlResponseHandler Apache2::Status
    # 任意のアクセス許可範囲を設定
    Require ip 127.0.0.1 10.0.0.0/24 
#    Require host .example.com
</Location>

3.httpdを再起動します
# systemctl restart httpd

4.テストスクリプトを作成します
# mkdir /var/www/perl
# vi /var/www/perl/testmod_perl.cgi

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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";
}
#!/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"; }
#!/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";
}

スクリプトを実行する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# chmod 705 /var/www/perl/testmod_perl.cgi
# curl https://www.ark.com/perl/test-mod_perl.cgi
# chmod 705 /var/www/perl/testmod_perl.cgi # curl https://www.ark.com/perl/test-mod_perl.cgi
# chmod 705 /var/www/perl/testmod_perl.cgi
# curl https://www.ark.com/perl/test-mod_perl.cgi

5. 実行コードをメモリ上にキャッシュする [Registry] モードの設定を行います
# vi /etc/httpd/conf.d/perl.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Alias /perl /var/www/perl
<Directory /var/www/perl>
# SetHandler perl-script
AddHandler perl-script .cgi
# Registry モード指定行有効化
PerlResponseHandler ModPerl::Registry
# PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
Alias /perl /var/www/perl <Directory /var/www/perl> # SetHandler perl-script AddHandler perl-script .cgi # Registry モード指定行有効化 PerlResponseHandler ModPerl::Registry # PerlResponseHandler ModPerl::PerlRun PerlOptions +ParseHeaders Options +ExecCGI </Directory>
Alias /perl /var/www/perl
<Directory /var/www/perl>
#    SetHandler perl-script
    AddHandler perl-script .cgi
    # Registry モード指定行有効化
    PerlResponseHandler ModPerl::Registry
#    PerlResponseHandler ModPerl::PerlRun
    PerlOptions +ParseHeaders
    Options +ExecCGI
</Directory>

httdを再起動します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# systemctl reload httpd
# systemctl reload httpd
# systemctl reload httpd

 

AlmaLinux 9

Posted by arkgame