Archive for the ‘Linux’ Category

Apache2.x系でのSSI(.htaccessでの設定)

木曜日, 1 月 17th, 2008

Apache2.x系ではApache1.xとSSIの設定方法が変わっている。私はそれに気づかず見事に嵌ってしまったので、備忘録として書いておきます。

Apache1.X系ではhtmlという拡張子でSSIを使いたい場合、ユーザディレクトリに

AddHandler server-parsed html

という内容の.htaccessを置いておけばよかった。
なお、当然ながら、.htaccessとSSIが使えるように設定されている必要がある。
具体的には、httpd.confで、

<Directory "/path/public_html">
  Options Includes
  AllowOverride All
</Directory>

などの設定。

しかし、Apache2.x系ではこれではダメ。httpd.confのDiretoryの設定は同じで構わないが、.htaccessは、

AddOutputFilter INCLUDES .html
<Files *.html>
  ForceType text/html
  SetOutputFilter INCLUDES
</Files>

としなければいけない。

Apache2.2.6のインストール

木曜日, 1 月 10th, 2008

Apache2.2.6のインストールについての備忘録

まずは公式サイト(もしくはミラーサイト)からhttpd-2.2.6.tar.bz2をダウンロード。それを展開したら、あとは下記の通り。

$ tar zxvf httpd-2.2.6.tar.bz2
$ ./configure --enable-so --enable-ssl --enable-shared --enable-headers --enable-vhost-alias
$ make
$su
# make install

デフォルトの状態では、「/usr/local/apache2」にインストールされます。

設定ファイルは「/usr/local/apache2/conf/httpd.conf」です。最近のapacheは基本設定以外は別ファイルになっていって、httpd.confで必要なファイルをincludeするようになっています。例えば、userdirや仮想ホストの設定をする場合は、「/usr/local/apache2/conf/extra」にある「httpd-userdir.conf」「httpd-vhosts.conf」を修正してから、httpd.confの下の方にある

# User home directories
#Include conf/extra/httpd-userdir.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

のIncludeの前のコメントをはずします。

起動・停止はそれぞれ

/usr/local/apache2/bin/apachectl start ← 起動
/usr/local/apache2/bin/apachectl stop ← 停止

です。

毎回手動でやるのもなんなので、起動スクリプトを作ってしまったほうが楽です。「/usr/local/apache2/bin/apachectl」を以下のように修正。

# one is reported. Run "apachectl help" for usage info
#
ARGV="$@"
# chkconfig: -85 15   ← 追加
# description: httpd   ← 追加

修正が終わったら、

# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
# chkconfig -add httpd

で終了です。

MT4.01でのプレビュー不具合

土曜日, 1 月 5th, 2008

MovableTypeを4.01に上げたら、エントリーのプレビューが出来なくなりました。正確には、プレビュー画面で「404エラー」(そんなファイルはないというエラー)になります。

MTはプレビュー時に英数字を羅列したフォルダを作るのですが、フォルダ自体は生成されていて、中にはフォルダ名と同じ名前で拡張子がhtmlのファイルが出来ていました。

しかし、プレビューが参照しているのは「英数字の羅列フォルダ/index.html」です。これがエラーの原因みたい。んで、MTのライブラリを見てみたら、あやしい個所がありました。

lib/MT/App/CMS.pmの13742行目

$archive_file = File::Spec->catfile( $path, $preview_basename . $file_ext );

これを

$archive_file = File::Spec->catfile( $path, $orig_file. $file_ext );

にしたら、ちゃんとプレビューされるようになりました。

これがバグなのか、私の環境の問題なのかはっきりしませんが、とりあえず問題なく動作はしているようなのでしばらくこれで様子を見てみます。

いろいろバージョンアップ

金曜日, 1 月 4th, 2008

今日は1日サーバを弄ってました。

とりあえずの成果は、
-Apache 1.3.27 → 2.2.6
-MySQL 3.23 → 5.0.51
-PHP 4.3.3 → 5.2.5
という感じ。

MySQLとPHPは素直にあげられたんだけど、やっぱりApacheは大変でした。この辺もちゃんとまとめておかないと後で困るんですよね(自分が)。

んで、なんで今更バージョンアップをしているのかというと、このサイトで使っているMovableTypeが重くなってきたので、どうにかできないものかと試行錯誤をしているうちに、「いろいろバージョンアップしたら多少はよくなるんじゃね?」と思いついた次第。結果はかわんなかったけど。やっぱりmod_perlなりFastCGIなりを導入した方がいいのだろうか。

Delegateで文字変換POPプロクシを作る

日曜日, 9 月 16th, 2007

Nokia E90のメールアプリはWEBブラウザと同様、日本語はUTF-8以外は文字化けしてしまいます。そこで、ブラウザと同様にDelegateをPOPプロクシとして受信するメールの文字コードをUTF-8に変換してしまいます。

インストールや起動方法はHTTPプロクシと同じ。違うのは起動オプションだけです。

変換スクリプトの用意

MIMEデコードと文字コードのUTF-8への変換はdelegateが行ってくれますが、それだけだとメールのヘッダに

Subject: メールの件名

のようにUTF-8の文字列がそのまま入ってしまい、受信した際に件名や送信者の名前などが文字化けしてしまいます。受信した際に文字化けしないようにするために、UTF-8になった文字列を再度MIME形式にエンコードする必要があります。そこで下記のようなスクリプトを作成しておきます。ここではencode.plという名前をつけることにします。

#!/usr/local/bin/perl -w

use Encode;

undef $/;
$_ = <>;

@x = split(/\n/,$_);

$xx = '';
$xxx='';

foreach $xx (@x){
   $xx = encode("MIME-header",decode("utf8",$xx));
   $xxx .= $xx."\r\n";
}

print $xxx;

変数名はちょー適当。もっと綺麗な書き方もできるけど、とりあえず動けばよしということでこんな感じです。

CFIスクリプトの用意

次に、次のようなCFIスクリプトをmy.cfiとか適当な名前で作成します。

#!cfi

Header-Filter: /var/lib/encode.pl

これだけ。encode.plは先ほど作成したperlのスクリプトです。

delegateの起動オプション

最後にdelegateの起動。

/usr/sbin/delegate -P110 SERVER=pop://mail.mopera.net CHARCODE=UTF-8 REMITTABLE=pop PERMIT="pop:*:*" FTOCL=/var/lib/my.cfi

FTOCLで指定するのは先ほど作成したCFIスクリプトです。上記のオプション指定ではポート110へのPOPアクセスをmail.mopera.netに転送します。

メーラの設定

Screenshot0009.jpg

こんな感じで、POPサーバにdelegateを動かしているサーバを指定します。ユーザ名/パスワードは本当のPOPサーバのものです。

上記で、文字化けせずメールを受信できるようになりました。