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>

Imagerを使う時にインストすべきもの

png,gif,jpegも扱えるようにしたい!ということで、macCentOSをまとめて。

macports install jpeg giflib libpng
yum install libjpeg-devel giflib-devel libpng-devel

↑先にインストールしておく、

cpanm Imager
perl -MImager -e "print join '/' , sort keys %Imager::formats"
bmp/ft2/gif/ifs/jpeg/png/pnm/raw/tga

jpeg,gif,pngがでればおk。

mod_perlとcatalystでハマったpert4

catalystmod_perlで処理する場合、apachecatalystアプリにアクセルできるようにしとかなければならない。
以下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で統一しまする。

bashutf-8に染めます

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)

日本語で表示されるようになりました!

start,stop,restartコマンド一覧

備忘録

全てroot権限です。

mysql
service mysqld start(stop,restart)

apache
service httpd start(stop,restart,graceful)

ftp
/etc/rc.d/init.d/vsftpd start(stop,restart)

gracefulはrestartと同じだが、子プロセスが死ぬ前に処理中のリクエストをサービスする。

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

mysql起動
/usr/local/mysql/bin/mysql -u root -p