PerlさんPerlくん
[perl][mod_perl] ithreadについて
最終更新:
atwikimyj
-
view
mod_perl2を使う上でカレントディレクトリを変更できない
という場合がある。これは設定を変更することで
回避できる(普通のCGIと同じように使えるが、その分プロセス
をたくさん使用するのでメモリを余計使う)。
それにはperlのインストール時に"ithread"という機能が有効
になっていなければならない。
という場合がある。これは設定を変更することで
回避できる(普通のCGIと同じように使えるが、その分プロセス
をたくさん使用するのでメモリを余計使う)。
それにはperlのインストール時に"ithread"という機能が有効
になっていなければならない。
Perlインストール時にデフォルトでインストールすると
ithreadという機能が無効になった状態でインストール
される。
その状態で、httpd.confに
PerlOptions +Parentを付与しても下記のようなエラーがでる。
ithreadという機能が無効になった状態でインストール
される。
その状態で、httpd.confに
PerlOptions +Parentを付与しても下記のようなエラーがでる。
# apachectl graceful
Syntax error on line 15 of /var/www/vhosts/flier.net/conf/vhost.conf:
PerlOption `Parent' requires an ithreads enabled Perl
そもそもithreadとは何ぞや
ここの「基本編」内のperlドキュメント日本語訳によると、
現在起動しているperlでithreadが有効になっているかどうかは
perl -V
にてperlのコンフィグを確認し、
現在起動しているperlでithreadが有効になっているかどうかは
perl -V
にてperlのコンフィグを確認し、
useithreads=undef なら無効
useithreads=define なら有効
useithreads=define なら有効
とある。早速確認すると、undefだった。有効にするには、
perlをインストールする際のConfigureにてオプションを
追加することでithreadを有効にすることが可能になる。
perlをインストールする際のConfigureにてオプションを
追加することでithreadを有効にすることが可能になる。
freeBSDならば簡単にexportなど(よくわからんが)を使えば
ithreadだけちょちょっと有効にできるみたい。
しかし今使っている環境はCentOSなのだ、、。
ithreadだけちょちょっと有効にできるみたい。
しかし今使っている環境はCentOSなのだ、、。
ということでperlの再インストールが必要となる。
[1]perlのstable版をダウンロード、サーバにアップ
[2]解凍、解凍したフォルダに移動
[3]Configureで設定を行う
# ./Configure -Dprefix=/usr/local -Dusethreads -de -U d_setlocate
の後に
#make
[2]解凍、解凍したフォルダに移動
[3]Configureで設定を行う
# ./Configure -Dprefix=/usr/local -Dusethreads -de -U d_setlocate
の後に
そして
#make
test
最後に
#make
最後に
install
make testの途中で以下のようなsyslogのエラーが出るが
ext/Sys/Syslog/t/syslog...................# Failed test 'syslog() should return true: '0''
# in ../ext/Sys/Syslog/t/syslog.t at line 109.
ext/Sys/Syslog/t/syslog...................# Failed test 'syslog() should return true: '0''
# in ../ext/Sys/Syslog/t/syslog.t at line 109.
再度Perl -Vを実行して、有効になっていれば
ithread有効化は完了。
ithread有効化は完了。