catalystでXML出力結果
あまり情報がなかったので、試した結果を貼付け。出力したい形式になるものが見つからない。。
CPANの例をそのまま使ってます。
Catalyst::View::XML::Simple - XML view for your data - metacpan.org
<opt message="Hello World!" />
Catalyst::View::Atom::XML - XML serialization for Atom objects - metacpan.org
<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://purl.org/atom/ns#"> <title>Foo</title> </entry>
mod_perlとcatalystでハマったpert4
catalystをmod_perlで処理する場合、apacheがcatalystアプリにアクセルできるようにしとかなければならない。
以下http://wata-jp.ldblog.jp/archives/1616964.htmlの続きの設定
$ sudo vi /usr/local/httpd/conf/extra/perl.conf PerlSwitches -I "/var/www/Sn/lib" PerlSetEnv SN_DEBUG 0 PerlModule MyApp <Location /> SetHandler modperl PerlResponseHandler MyApp </Location> Alias /src /var/www/MyApp/root/src <Directory /var/www/MyApp/root/src> allow from all </Directory> <Location /src> SetHandler None </Location>
として/var/www以下にMyApp(Catalystアプリ)を置いて、apacheに見てもらえるようにする。しかし、
error_log トップページにアクセスすると [error] Couldn't render template "index: file error - index: not found" cssやimageを置いてる場所にアクセスすると(host/src) 13)Permission denied: access to /src denied
というえらーがでた。テンプレートが見つからないといってるのだが、確かにある。
解決方法は/var/wwwにapacheがアクセスできるようにパーミションを755に、MyAppはapacheと同じユーザーにしましょうということです。
chmod 755 /var/www #700になってること多し chgrp -R apacheユーザー /var/www/MyApp chown -R apacheユーザー /var/www/MyApp
で解決。いやー時間かかった。
mod_perlとは何か?
mod_perlとは何か?
通常、スクリプト(perl)の処理はapacheでは行わない。代わりにスクリプトを外部プロセスに渡して、処理をする。
このとき外部プロセスを呼び出すとサーバーに負荷がかかるし、リクエストをする度にPerlプロセスを起動するので、オーバーヘッドによりレスポンスの時間がかかってしまう。
そこで、Apacheにスクリプトを処理してもらうために、mod_perlを使う。これによって
①外部処理の無駄を省く②スクリプトをキャッシュできる
メリットは
→外部プロセスの起動や待ち時間がなくなり、速くなる
→繰り返しリクエストされるスクリプトをキャッシュでき、速くなる(コンパイル済みなので)
→データベース接続をキャッシュに残すことができ、オーバーヘッドを減らされ、速くなる
デメリットは
→Apacheのインストール、設定の複雑化
→スクリプトのキャッシュにより、悪さをする可能性
→メモリの問題
しかし、これらは副産物としての効果であり、本来の目的は
perlを通してapacheの内部構造にアクセスできること
である。
随時追加予定
sshでの文字化けemacs編のpart3
utf8で統一しまする。
vi $HOME/.bash_profile export LANG=ja_JP.utf-8
システムをutf-8に染めます
vi /etc/sysconfig/i18n LANG="ja_JP.UTF-8"
viの方が資料が少なかったので
emacsインストール
(rootで) yum install emacs (ユーザーで) vi /home/ユーザ名/.emacs (set-language-environment "Japanese") (set-terminal-coding-system 'utf-8) (prefer-coding-system 'utf-8-unix) (set-keyboard-coding-system 'utf-8)
日本語で表示されるようになりました!
apacheのパス及びファイル備忘録
備忘録です。随時追加
エラー、アクセスを見たいとき
/usr/local/httpd/logs/error_log
/usr/local/httpd/logs/access_log
apache設定を変更したいとき
/usr/local/httpd/conf/httpd.conf
ftp設定を変更したいとき
vi /etc/vsftpd/vsftpd.conf
/var/log/vsftpd.log
(現在)pl,cgiなどの置き場所
/usr/local/httpd/cgi-bin/
perlbrewでインストールしたperl5.12.3を使いたいのでここに置いたパスを
#! ~/perl5/perlbrew/perls/perl-5.12.3/bin/perl
としてもエラーがでてしまう。しかたないので、
#! /usr/bin/perl
にするとおk。設定を変更中。
html置き場所
/usr/local/httpd/htdocs