ApacheのCGIプログラムでユーザーPerlを利用する方法
ApacheのCGIプログラムでユーザーPerlを利用する方法を解説します。
ApacheのCGIプログラムでは通常、システムにインストールされているPerlが利用されます。ですが、CPANモジュールの管理の手間を一元化するために、perlbrewやplenvでユーザー環境にインストールしたユーザーPerlを使いたいという場合があると思います。
新しくPerlでWebアプリケーションを作る場合は、リアルタイムWebとクラウドサーバーに自然に対応できるリバースプロキシを使ったWebシステム開発手法をお勧めしますが、既存のCGIアプリケーションが存在するという場合も、まだまだあると思います。
環境変数の設定
UbuntuのApacheにおける環境変数の設定方法は、envvarsファイルに指定する方法と、SetEnvディレクティブを使う方法があります。グローバルに影響を与える、envvarsには手を加えないで、個別のサイトで、SetEnvディレクトリブを使うのがお勧めです。SetEnvでは、定数しか使えないことに注意してください。
環境変数PATHの設定
環境変数PATHの設定しましょう。まず、現在のPATHを調べます。envコマンドとgrepコマンドでPATHを表示します。PATHという名前を含む環境変数が複数あるので、Perlの正規表現を使ってPATHだけに絞り込んでいます。
env | grep -P '^PATH='
表示されたPATHをメモします。
PATH=/home/appuser/perl5/perlbrew/bin:/home/appuser/perl5/perlbrew/perls/perl-5.20.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
この値をSetEnvディレクトリを使用して設定します。
SetEnv PATH /home/appuser/perl5/perlbrew/bin:/home/appuser/perl5/perlbrew/perls/perl-5.20.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
これで、ユーザーPerlが利用されるようになります。
環境変数PERL5LIBの設定
自分で作成したPerlのライブラリを読み込みたい場合は、PERL5LIB環境変数を設定します。
SetEnv PERL5LIB /home/appuser/my-app/lib
環境変数を設定した後は、Apacheの再起動が必要です。