Perlbrewを使用して、Webアプリケーションを対象としたPerlインストールを管理するにはどうすればよいですか?
-
05-10-2019 - |
質問
私は使用しています Perlbrew Linux FedoraノートブックでPerlの複数のバージョンを管理する。主に使用してコマンドラインスクリプトを実行するために大きな利益をもって使用しました APP :: CMD.
私は今、使用して書かれたWebアプリケーションの実行に移行したい CGI ::アプリケーション 私にインストールされたさまざまなPerlを使用しています $HOME
. 。 Perl Webアプリケーションの実行に精通しています $HOME
s apacheの使用 user_dir
または仮想ホストを作成しますが、これとPerlbrew Managed Perlsを統合するクリーンな方法を思い付くことができません。具体的には、これらの質問に対する回答を理解して見つけるのに助けが必要です。
- Perlbrewの下にmod_perlをどのようにインストールしますか?
- これが完了したと仮定すると、最新の正しいPerlをピックアップするようにVirtualHostを構成するにはどうすればよいですか?
- これが不可能な場合、(私は疑っています)私は少なくともローカルインストールを使用してバニラを実行できますか CGI?
ご清聴ありがとうございました。
解決
これは、独自のディレクトリの下でSymlinksの周りを動き回るPerlbrewにとっては良い使用ではないと思います。トリックは、mod_perlモジュールを周囲に切り替えることです。 MOD_PERLは、Perlの主要バージョン間でバイナリとは不可能であり、使用するPerl(およびApache)の各バージョンについてApacheに対してコンパイルする必要があることを忘れないでください。
Perlbrewは本当にあなたのために2つの大きなことをしています:
- Perlをインストールします。これは、自分で簡単に実行できます。
- シンリンクの周りに切り替えます
perl
あなたが望むどんなバージョンです。
あなたがその最後のものをあきらめるならば、ペルブリューはあなたのためにそれほどそれほど多くのことをしていません。 Symlink機能が特に価値があるとは思いません。
Perlbrewはそれが何であるかについては問題ないと思いますが、限られた範囲の外で何かを始めたとき、それを使用しない時です。それはあなたに時間と頭痛を節約するためのツールであるはずです。したがって、それがその目標を達成していない場合、それはあなたの状況に適したツールではありません。
この状況では、単一の大きなWebアプリケーションをサポートしている場合、他に何も使用できない独自のPerlインストールを提供します。
あなたの他の質問のために:
マークダウンプレースホルダー
構成する必要はありません
VirtualHost
もの。 mod_perlを使用している場合、Perlはすでにそこにいて、Perlを選択することはできません。 CGIのものを使用している場合は、ShebangラインでPerlを指定します。 Apacheが適切な図書館のディレクトリを取り上げることを確認する必要がありますが、Perlbrewはそれを処理していると思います。使用する必要があるかもしれませんSetEnv
またはhttpd.confに似たもの。バニラCGIの場合、デフォルトのPerlbrewバージョンが何であれ、右(Symlink)パスを指してください。 CGIプログラムは、パスが指すすべてのPerlを使用します。
他のヒント
Perlbrewを使用してmod_perlのバージョンを切り替えることを期待しない理由については、Brian D Foyの答えを参照してください。また、mod_perlの下で複数の異なるperlバージョンが必要な場合は、複数のApacheサーバーを実行する必要があると期待しています。
ただし、PerlbrewをPerlを構築する簡単な方法として使用することは有効なことであり、Perlbrewの下でmod_perlを実行する方法に使用できる指示はほとんどありません。
まず、Perlが共有ライブラリサポートで構築され、-duseshrplibフラグを渡すことにより(それ以外の場合は64ビットシステムで-FPICについて混乱するビルド障害が得られます):
perlbrew install perl-5.16.3 -Duseshrplib
システム用の開発Apacheライブラリをインストールします。 Debianでは、これは使用しているApache MPMによって異なります。プレフィックMPMの場合:
sudo apt-get install apache2-prefork-dev
または労働者MPMの場合:
sudo apt-get install apache2-threaded-dev
次に、mod_perl2を正しい場所に構築およびインストールするためのオプションが必要です。これは、CPANMがそれを構築できないことを意味しますが、それを使用してソースを手に入れることができます。
cpanm mod_perl2 # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/ # adjust mod_perl version
それに応じて、以下のPerlのバージョンを調整します。 (MP_APXSオプションは、Debianベースのシステムに正しいパスを与えることです。
perl Makefile.PL MP_APXS=/usr/bin/apxs2 \
MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/
make
make install
最後に、Apache構成ファイルのLoadModuleラインを変更します(それに応じてパスを調整します):
LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so
mod_perlのインストールは、必要なPerlのバージョンを実行します。必要なすべてのCPANモジュールをインストールして、進みます。