約 3,744,124 件
https://w.atwiki.jp/atwikimyj/pages/95.html
FastCGIとはそもそも何か? FastCGIとは仕様を指す言葉で、アプリケーションそのもの ではない。 perl等のインタプリンタ言語の場合、CGIで読み込むたびに コンパイルを行う必要がある。そのコンパイル後のコードを メモリに常駐させてコンパイル処理時間やコストを節約する ことが可能。同じような機能を持つものとしてmod_perlが あるがこれはApache内でperlのコードを保持するが、FastCGI はapacheなどのwebサーバとは別にプロセスを用意し、そこ にコードを保持する。 ゆえにapache以外のwebサーバでも使用可能。 mod_perl2とどっちがいいの? mod_perl(2)とFastCGIどちらを使うか迷うところだが、 FastCGIを使う利点としては mod_perlのようにapacheに強く依存しない Apache以外でも使える デメリットとしては mod_perlの場合はApacheと連携していろいろ可能 (もともとのmod_perlの意義はここにあるらしい) ドキュメントや情報がmod_perlよりが少ない、、 インストール・環境構築 インストールは以下のように行う (1)Fast_CGIアプリケーションをインストール {{ # cd /usr/local/src # wget http //www.fastcgi.com/dist/fcgi.tar.gz # tar xvfz fcgi-2.4.0.tar.gz # cd fcgi-2.4.0 # ./configure # make # make check # make install }} (2)FastCGIのためのPerlモジュールもインストール {{ perl -MCPAN -e install FCGI perl -MCPAN -e install CGI Fast }} (3)Apache用のモジュールもインストール {{{ # wget http //jaist.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.2.tgz # xvzf mod_fcgid.2.2.tgz # cd mod_fcgid.2.2 このディレクトリ内にある設定ファイルを書き換える。 {{{ # vi Makefile }}} 以下のような箇所を、実際のapache2のパスに書き換える {{{ #top_dir = /usr/local/apache2 top_dir = /usr/lib/httpd }}} ESC , wq で保存してから {{{ # make # make install }}} 完了。
https://w.atwiki.jp/perlism/pages/22.html
CGI 【読み】しぃじぃあい 【属性】ウェブの仕組み 【略】Common Gateway Interface 現在では、掲示板やチャット、日記などの動的コンテンツを設置する仕組みのこと。 初心者は、CGI = Perlみたいな風に思っている人も多いが、そもそもどの入門書を見てもCGI/Perlであって、CGI=Perlとは書かれていない。 一般的には、PerlとPHPが多いが、実はCやRuby、Pythonなど、いろいろな言語を使うことが出来る。
https://w.atwiki.jp/atwikimyj/pages/23.html
文字通りperlで実装するセッション管理。 <参考>CGI Session.pmでセッション管理 http //www.dab.hi-ho.ne.jp/sasa/biboroku/perl/session.html インストール linux上で [root@localhost] perl -MCPAN -e shell cpan install CGI session これで終わり。 利用 perlスクリプト内で use CGI Session qw/-ip_match/; #異なるipからのアクセスは認めない #Tutrial .podは -ip-match ,Session.pmは -ip_match .多分 -ip_match . my $session=CGI Session- new(undef,undef,{Directory= ./.session }); #セッションidの生成 .ディレクトリ.sessionは予め作っておく $session- expire( +1m ); #有効期限の設定.1分間 $session- param( name , john ); #セッション経由で引き渡す項目と値
https://w.atwiki.jp/perlism/pages/11.html
Perl 【読み】ぱぁる 【属性】プログラミング言語 ラリーウォール氏により開発され、インタプリタ式でC,AWK,シェルライクな、いまやCGIの代名詞と言っても過言ではない、他の言語とは比べ物にならないほど柔軟性に富んだプログラミング言語である。 ただ、その柔軟性が裏目に出ることがほとんどで、Aというプログラムでは通用したコードも、ひとたびBというプログラムで同じものを書くと、全く通用しなくなるといったことが起こりやすい言語である。 某人曰く、「Practical Extraction and Report Language」(実用的データ取得レポート作成言語) また某人曰く、「Pathologically Eclectic Rubbish Lister」(病的折衷主義のガラクタ出力装置)
https://w.atwiki.jp/atwikimyj/pages/106.html
FastCGI のインストール # cd /usr/local/src # wget http //www.fastcgi.com/dist/fcgi.tar.gz # tar xvfz fcgi-2.4.0.tar.gz # cd fcgi-2.4.0 # ./configure # make # make check # make install # perl -MCPAN -e install FCGI # perl -MCPAN -e install CGI Fast
https://w.atwiki.jp/atwikimyj/pages/37.html
ぬおおお、、なんでぇ、、ライブラリを、、読んでくれないんだよぉ! なんで、このパスを、、読んでくれないんだよぉ! だから、、SetEnvしてんじゃんかぁ!PERL5LIBだろぉ? と叫び続けたあの日。 この記事は、perlのライブラリのパスと戦う人への応援歌です (応援歌であって、必ずしもあなたの抱える問題の解決を保障しません) perlを使うと一言で言っても、どのような状況で起動するか によって、読みに行くライブラリが変わる、つまり@INCの 中身が変わる。 1 シェル(bash)からperlを起動させた場合 2 mod_perl2から起動させた場合(Apache起動時) 3 CGIからperlを起動させる場合(ブラウザからアクセス) もしかしたらもっとパターンはあるかもしれないが。 以下場合分けで対処をする。 1 シェル(bash)からperlを起動させる場合 コマンドラインからの入力でperlを実行する場合。 /etc/profile を編集し、以下を記述する。 PERL_PATH=/usr/local export PERL5LIB=${PERL_PATH}/lib export PATH=${PERL_PATH}/bin $PATH これで、コマンドラインからの # perl -le print for @INC などの動作には反映される 2 mod_perl2から起動させた場合(Apache起動時) Apacheがperlを起動させる場合、 たとえば、httpd.conf内でCatalyst関連の ライブラリを読ませるときはperlを起動して いるのだが、なぜか前のバージョンのperl で使っていたと思われるライブラリパスを 読みにいっちゃう。 解決策は、 httpconf内にライブラリのパスを記述すること。 普通考えると SetEnv PERL_PATH "/usr/local" SetEnv PERL5LIB "/usr/local/lib" と書けば環境変数が変わる、、と思うのだが これじゃだめ(涙) 試行錯誤の末、perlのライブラリがあるディレクトリすべてを PerlSwitches -I/usr/local/lib/perl5/5.8.8 PerlSwitches -I/usr/local/lib/perl5/5.8.8/i686-linux PerlSwitches -I/usr/local/lib/perl5/site_perl/5.8.8 と記述すると、Apacheからのperl起動時に@INCに入れてくれる ようだ。うーん。これってバッドノウハウ? 3 CGIからperlを起動させる場合(ブラウザからアクセス) 具体的にはWEBサイトを開いたときにperlが起動する場合。 これは略
https://w.atwiki.jp/atwikimyj/pages/90.html
mod_perl2を使う上でカレントディレクトリを変更できない という場合がある。これは設定を変更することで 回避できる(普通のCGIと同じように使えるが、その分プロセス をたくさん使用するのでメモリを余計使う)。 それにはperlのインストール時に"ithread"という機能が有効 になっていなければならない。 Perlインストール時にデフォルトでインストールすると 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のithreads http //www.donzoko.net/doc/memo/perlithreads.html#basic すばらしい解説ページ。 ここの「基本編」内のperlドキュメント日本語訳によると、 現在起動しているperlでithreadが有効になっているかどうかは perl -V にてperlのコンフィグを確認し、 useithreads=undef なら無効 useithreads=define なら有効 とある。早速確認すると、undefだった。有効にするには、 perlをインストールする際のConfigureにてオプションを 追加することでithreadを有効にすることが可能になる。 freeBSDならば簡単にexportなど(よくわからんが)を使えば ithreadだけちょちょっと有効にできるみたい。 しかし今使っている環境はCentOSなのだ、、。 ということでperlの再インストールが必要となる。 [1]perlのstable版をダウンロード、サーバにアップ [2]解凍、解凍したフォルダに移動 [3]Configureで設定を行う # ./Configure -Dprefix=/usr/local -Dusethreads -de -U d_setlocate の後に #make そして #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. 弾小飼御大のblogを確認すると http //blog.livedoor.jp/dankogai/archives/50494105.html このエラーは特に問題ないみたい。 再度Perl -Vを実行して、有効になっていれば ithread有効化は完了。
https://w.atwiki.jp/atwikimyj/pages/15.html
perlバージョンアップ後に出てくる問題 perlのバージョンアップをすると、影響の出るものの一つに mod_perlがあるようだ。 perlのバージョンをあげて、mod_perlを利用してperlを起動させると Apacheの起動時に DynaLoader object version 1.05 does not match $DynaLoader VERSION (以下メッセージは延々続く・・) というようなエラーが出てhttpd自体が起動しなくなった。 DynaLoaderのバージョンがマッチしない・・? そもそもDynealoderって何? 調べると、perlからCで書かれたプログラムを呼び出すことができる モジュールらしい。 とりあえず再インストールを試みる。しかしCPANではそんなモジュールは 存在しない!とエラーで怒られる。調べるとperlのアプリケーション内に デフォルトでついてくるものらしい。なので個別でインストールとかは できないらしい。 手詰まり。何がおきているのやら、、。 ということでさらにエラーメッセージから調べる。 私と同じ問題にあたった人をapacheのメーリングリストで発見。 Mailing list archives(Apache-ML) http //mail-archives.apache.org/mod_mbox/perl-dev/200411.mbox/%3c20041119124457.GB3387@bongo%3e 結局 「perlをアップグレードしたら、mod_perlの静的なリンクが外れるから、 毎回mod_perlのrebuildが必要だよ」 というお答えが出ていた。。 つまり、CGIではなく、apache起動時にモジュール読ませて起動するperlは mod_perlになるのだが、このmod_perlが読み込むライブラリとDynaLoaderの ライブラリが不整合を起こしている(らしい)。なのでmod_perlをrebuild することでライブラリの整合が図れる、、はず。 mod_perlのrebuild rebuildだけやりたいけど、、よくわからん。大体意味もわからずにインス トールすると後で泣きを見る。とくにmod_perlってバージョンとか整合性 とかいろいろとデリケートだったような、、。 Apache1.xの環境ではmod_perl1.xを組み合わせ、 Apache2.xの環境ではmod_perl2.xを組み合わせる必要がある。 静的なインストールと動的なインストールがある 基本的にはapacheとmod_perlの両方を一度にビルドするべき などの情報がわかる。また、注意したいのは、mod_perl1.xについての情報 はたくさんあるが、MP2の情報は少なめ。よく読んでMP2の資料を探さないと いけない。 ということで下記が参考になった。 HATENA Diary NAOYA 「■ 10分で完了、mod_perl 2.0 で Hello, World!」 http //d.hatena.ne.jp/naoya/20060108/1136705441 isoya9の日記 「 [Linux] CentOS4 に mod_perl 2.02 をインストールする」 http //isoya.at.webry.info/200610/article_25.html 動的にmod_perlをインストールする場合は、先にapxsを インストールする必要がある。 # whereis apxs とコマンドを打って、何も出てこないのでapxsがインストール されていないことがわかった。 ということでWEBを参考にしながらapxsのインストール apxsはhttpd-develに含まれるため、 #yum install httpd-devel でインストールは終わり。 $ wget http //perl.apache.org/dist/mod_perl-2.0-current.tar.gz apacheのAPI削除 MP2インストール 上記のWEBサイトのとおりに作業をしてすんなりインストール完了。
https://w.atwiki.jp/cgiprowiki/pages/15.html
CGIとは? CGIとは、Perlというプログラミング言語のインストールされたwebサーバー上で動作するプログラムのことです。掲示板・アクセス解析・アクセスカウンター・フォームメール・データベースなどホームページを作成する時に役立つ様々なCGIが開発されています。 CGIプロテック CGI-PARKでは、ホームページ作成に役立つCGIに限らず、堅牢なwebサーバーをデータ保管庫として便利に利用できるようにするCGIを目指して開発を行っています。
https://w.atwiki.jp/atwikimyj/pages/16.html
[1]perlのソースをダウンロードする [2]stable.tar.gzを適当な場所(/usr/local)に保存、解凍 [3]perlインストール時の設定を行う 解凍したファイル群にINSTALLというテキストファイルがある。それを開くと、 非常に長い説明がある。くじけそうになるが、ここが頑張り所なのでなんとか 内容を見る。 ありました!デフォルトではインストール時にこういうパスにデータを入れる ようというのが。 ○perl実行ファイル $prefixexp = /usr/local ○スクリプトファイル $prefixexp/bin ○ライブラリファイル $prefixexp/lib/perl5/(5.8.8などのversion番号) [4]解凍したディレクトリに移動 # cd /usr/local/perl5.8.8 #./Configure このままデフォルト設定でインストールすれば上記の 構成でperlがインストールされる # /usr/local/bin/perl -v を実行して、バージョン番号が出ればOK でもまだこのインストールしたperlにはパスが通ってない。 従来インストールされているperlの実行ファイルが有効に なっている。 そのperlの実行ファイルというのは /usr/bin/perl このファイルを別名で保存する。 /usr/bin/perl.hoge とかにしてシンボリックリンクを張る # ln -s /usr/local/bin/perl /usr/bin/perl [5]パスを通す /etc/profile を編集し、 PERL_PATH=/usr/local export PERL5LIB=${PERL_PATH}/lib export PATH=${PERL_PATH}/bin $PATH を追記し、コンフィグの読み直し # ldconfig この段階でパスは通っているので # perl -le print for @INC とすると、 /usr/local/lib /usr/local/lib/perl5/5.8.8/i686-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/i686-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_per と表示され、@INCのパスも変わった。 perl自体のインストールはこれでOK でもmod_perlを使っている場合は perlのバージョンアップしたら必ずmod_perlもrebuild しないとだめなのです。 あと、必要に応じて、下記のこともやんないといけないのです。 perlモジュールインストール Catalystインストール Apache config設定