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
と表示されれば完成です。