「Apache」と一致するもの

やっと動いた

やっと動きました。。。
MovableTypeが動かなくて、かなり手こずりました。

事の発端はUbuntu Serverを12.04LTSから14.04LTSにアップグレードしたことですが。

Apacheが2.4に上がってたり、
Perlが5.18に上がってたり、
PHPが5.5に上がってたりして、
MovableType5が動かなくなってしまいました。

はい。

仕方無いのでMovableTypeを6に上げて、

Apache直して、MovableTypeのphp/extlib/smarty/libs/Smarty_Compiler.class.phpも

/* replace special blocks by "{php}" */ /* 修正後 */ $source_content = preg_replace_callback($search, create_function ('$matches', "return '" . $this->_quote_replace($this->left_delimiter) . 'php' . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'" . $this->_quote_replace($this->right_delimiter) . "';") , $source_content);

/* 修正前
$source_content = preg_replace($search.'e', "'"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"
, $source_content);
*/

という感じで直して、、、やっと動いたところです。

MovableTypeはバージョンアップする度に全てのテンプレートを一度リセットしないと、どこかに綻びが出てしまうのが悩ましいところですね。いっそのこと全部データベースに持ってくれて、アップデートしても影響無いようになっていると嬉しいのですが。

# まだまだ、あっちこっち死んでる気がするけど。

Ubuntu server 10.10 自動起動に失敗する

Ubuntu 10.10 Server版でnamed, apache2の自動起動に失敗していました。自動起動はしないのですが、OS起動後に手動で起動すると問題無く起動する。

例えば手動で

# /etc/init.d/named start

とか

# service named start

とコマンドを打って起動する分には、全然問題無く起動します。今まで通り /etc/init.dに起動スクリプトを置いて、/etc/rc2.dの下にシンボリックリンクを張った状態です。この状態なので起動スクリプトの書き方に問題があるわけではないという事までは判っていました。

気になったのが

# runlevel

のレスポンスが

unknown

になる事。でも、inittabが無い(^^; (※BSD好きですが、SVR4育ちなのでまずそこを見ようとするクセが・・・) 何処でランレベルの設定してるの?って状態だったのですが、どうやらUpstartの起動時に /etc/init/rcS.conf→/etc/init/rc-sysinit.confと読んで(※実際にはイベント駆動っぽい動作らしく、スクリプトが次のスクリプトをキックしているわけではないようです。サーバ用とでは起動時間を削減してくれるよりは、起動プロセスを追っかけやすくしてくれてるほうがありがたいのですが。)  rc-sysinit.confの中で

env DEFAULT_RUNLEVEL=2

と設定しているようなのです。で、最後に

telinit "${DEFAULT_RUNLEVEL}"

とランレベルを2に移行していました。

ここまで調べて やっとrc-sysinit.confが動いていない事が判りました。

あとは rc-sysinit.confの中で、start onの条件が

start on filesystem and net-device-up IFACE=lo

と書かれていたのですが、その部分がNGだったようで

start on filesystem and started networking

と書き換えることで、rc-sysinit.confが正しく動くようになりました。

# runlevel

のレスポンスが

N 2

となっており、ランレベル2になっていることが確認できました。

この結果、rc-sysinit.conf → telinit 2 → /etc/init.d/rc 2 → /etc/rc2.d/S* という順序で従来の /etc/rc2.d/S*のファイルが起動されるようになりました。

いつの間にかUbuntuの起動スクリプトもSysVinitからUpstartへの移行が進んでいて起動スクリプトのキックされかたが全然別物になってました(^^;

それにしてもUbuntuのUpstart関連のドキュメントって探してもなかなか見つからず、調べるのに難儀しました。もっとドキュメント整備されると良いのですが・・・。

iMT絡み

先日サーバを移行したので、SSLで使っているサーバ証明書も新たに準備したのですが、Android 2.1から見るとSSLの証明書が不正な証明書と表示されていました(>_<)


CentOS5 + SELinux

で、大はまり。

CentOS5(RHEL5の代替として)で検証してたのだけど、Cactiが動かなくてハマリました。
SELinuxって何?って人はWikiとか、itproとか見てください。私が書くより嘘が無いと思いますので。

OSインストール時のSELinuxの設定については「警告のみ」を選択しておいた。パッケージは全部入れ。

ぶっちゃけ、Cacti動かすにはhttpdとMySQLと開発ツール一式がインストールされていればOKなので、絞ろうかとも思ったのですが今回は正式な納品物では無いというのもあって、ちょっと手を抜きました。

ま、そんな事もあって、あっさり動くだろうとタカをくくってたんですが・・・。


visitorsでログ解析

Apacheのログ解析ソフトをあれこれ物色してみたが、
visitorsがなかなか良さげに思える。

Windows版のバイナリに限り、シェアウェアのようだが、
Unix系で使えるソース配布版に関しては無償のようだ。
特徴としては、非常に高速なこと。


visirots-0.7のインストール

基本的にインストールは不要で、バイナリを好きなディレクトリにコピーする。

ソースをダウンロードしてきて、解凍する。
そして環境に合わせてMakefileを書き換えた後、
$ make
でバイナリができあがる。
ちなみにSolaris10-x86(64ビット)の環境ではMakefileを以下のように書き換えた。
DEBUG?= -g
CC=gcc
CFLAGS?= -m64 -O3 -Wall -W
CCOPT= $(CFLAGS)

できあがったバイナリは、好きなディレクトリにコピーして使う。
そしてApacheのアクセスログを標準入力経由でvisitorsに食わせると、htmlファイルが作成される。
$ cat access.log | visitors -A -m 30 -o html > access.html
適当にcron等で自動実行させれば良い。