CGIを使えるようにする(Perl編)

WebサーバでCGI(Perl)が使えるようにするための設定について解説します。
ubuntuではperlが標準でインストールされているようなのですが、apacheを使って外部から実行させるにはperlモジュールとディレクティブの設定が必要となります。

環境

 OS ubuntu22.04 
 Webサーバ apache2.4.52
 サーバのIP 192.168.19.128(仮定)

Perlモジュールのインストール

 ubuntuコンソールから次のコマンドを入力してperlの実行モジュールをダウンロード、インストールしてください。

$ > sudo apt install libapache2-mod-perl2

[Y]を選択してインストール終了です。
次のコマンドを入力して、apacheの設定ファイルを開きます。

$ > sudo nano /etc/apache2/apache2.conf

設定ファイルの中に次の設定を追加してください。

LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
<Directory /var/www/html>
   Options +ExecCGI
  AddHandler perl-script .pl
  PerlResponseHandler ModPerl::Registry
  PerlOptions +ParseHeaders
  PerlSetVar PerlHandler ModPerl::PerlRun
  PerlSendHeader On
</Directory>

この変更によって、Perlモジュールを有効にして、PerlResponseHandler ディレクティブ(どのフォルダでPerlプログラムを実行可能にするか)を設定します。
 この設定では/var/www/html 以下で実行可能になっています。
 なぜかわかりませんが、私の環境ではapacheの標準インストール後にPHPはディレクティブが設定されているのにPerlは設定されていませんでした。(なんでだろう?)
 この後、下のコマンドでApacheを再起動すると実行可能になります。

$ > sudo service apache2 restart

簡単なPerlプログラムを実行する

次のPerlプログラムが実行できるか確認します。

ファイル名 test.pl
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print “Hello Perl\n”;

 このファイルをffftpを使って
 /var/www/html
に配置した後、パーミッションを755に変更します。
 ブラウザから、次のURL(http://192.168.19.128/test.pl)を入力して、

Hello Perl

と表示されれば完成です。