2011/12/01(木)awstatsの更新がおかしい
2011/12/01 22:13
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats version 6.95 (build 1.943) From data in log file "/var/log/apache/access.log"... Error: Couldn't open server log file "/var/log/apache/access.log" : Permission denied Setup ('/etc/awstats/awstats.conf' file, web server or permissions) may be wrong. Check config file, permissions and AWStats documentation (in 'docs' directory).うへえ、awstatsの更新が死んでる。……あれでもおかしい、awstats自体はちゃんと最新のデータを取ってきてる。しかしメールは続々来る。なんだこれはと調べてみたら、/etc/cron.dと/etc/cron.hourlyにそれぞれawstatsのスクリプトがあった…… orz。
片方が成功、片方が失敗して正常な更新とエラーメール(受け取れてなかった)を延々続けていたのか。なんだそれ!
awstatsは確か当初ソースから入れたので残っていたのかもしれない。パッケージに切り替えたときに旧cron設定を消し忘れたのだろう。
ということで、
$ dpkg -L awstatsで調べつつ、
cron.hourlyの古いスクリプトを消し、パッケージから入っていると思われるcron.d側を残した。
この状態でまだエラーメールが来るので、/etc/cron.d/awstats中のユーザ指定をaccess.logのユーザに書き換え。
更新成功し、エラーメールもなくなった。
2011/12/01(木)メールがローカルに配信されない
2011/12/01 14:01
# qmail-qstat messages in queue: 54682 messages in queue but not yet preprocessed: 54680最初はすわ不正中継爆弾? とか思ったのだが、
# cat /var/log/mail.log 1218742:Dec 1 10:19:04 debian qmail: 1322702344.535144 warning: unable to create local/8/1656100 ...おおう、これはローカルへの配信ができずに延々ループしてるっぽい。そしてmail.logのサイズがどんどんふくらんでいる。そこで、/var/spool/qmail/local/をのぞいてみたら、
空っぽ!
え、分割ディレクトリはどこへ行ったの?
分割ディレクトリを自動的に作る機能はなさそう…… しかし、分割ディレクトリがないのが原因っぽい。
ということで、分割ディレクトリを標準の23作成する。
# mkdir 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22して、chmod,chown,chgrpしたところ…… 動き出した。
ログをチェックして、warningが消えたことを確認
えー、なんだこれ。手で消した記憶はないので、update時に何かが消してしまったのかqmailの仕様が変わったのか。
うーん原因までは追えなかった。
一応解決。
2011/12/01(木)/dev/sdaが無い!
2011/12/01 11:37
環境を整理すると、
kernel: 2.6.34.1(自分でコンパイル)
udev: 164-3
HDD: SATA HDD(内蔵)
/sys/block/sda/, /sys/block/sda/sda1/, /sys/block/sda/sda2/はできており、fstabsでのマウントも成功している。
これなら起動時にデバイスノードが自動的に作成されることを期待するのだが、なぜか作成されない。デバイスノードがないとfdiskとかできないので大変にまずい。
どうも1月にsqueezeに入れ替えたときから発生していたような気配だ。fstabsはUUIDで書いていたので、今まで問題が起こらなかった(もしくは気づかなかった)。
さて、squeezeからデバイス割り当ての仕組みがudevに変わっている。この移行に関しては注意書きが手順書に書かれるくらいなので大きな変更なのだが、一応これは気をつけてカーネルを作り直したつもり。起動はするし、警告も出てる気配がないのでこれはudevとsysfsの連携が単にうまくいっていない。
で、調べてみると、
[Sorcerer-admins] udev does not create sda, sdb and md0
完全に追えてないのだが、以下自分の解釈。udevの元々の仕組みはデバイスのモジュール組み込みを想定しているためモノリシックカーネルの対応が不十分な場合があるとのこと。あちこち回ってみると、udevのバージョン変更で直った例が多いようなのだが、debianは相変わらずtesting=unstableだし、依存関係がもうすンごかったので断念。うーん、推奨環境(カーネルもdebianのものを使用)じゃないのでバグ報告がためらわれる。しょうがないので、まずはコマンドラインで、
# cat /sys/block/sda/dev /sys/block/sda/sda1/dev /sys/block/sda/sda2/dev 8:0 8:1 8:2としてメジャー・マイナー番号を調べ
# mknod /dev/sda b 8 0 # mknod /dev/sda1 b 8 1 # mknod /dev/sda2 b 8 2とした。
で、これを起動スクリプトに追加。
$ cat /etc/init.d/mk_sda_node #!/bin/sh if ! [ -e /dev/sda ]; then mknod /dev/sda b 8 0 mknod /dev/sda1 b 8 1 mknod /dev/sda2 b 8 2 fi exit 0雑にこんなんでいいや。すでにデバイスノードが存在してればmknodは特に問題は起こさないようだし。ずれることもないだろう(udevを頭から否定)。
update-rc.d mk_sda_node start 15 1 2 3 4 5 .debian流で登録。single user modeでもあった方がいいでしょ。
update-rc.d: warning: /etc/init.d/mk_sda_node missing LSB information update-rc.d: see <http://wiki.debian.org/LSBInitScripts> Adding system startup for /etc/init.d/mk_sda_node ... /etc/rc1.d/S15mk_sda_node -> ../init.d/mk_sda_node /etc/rc2.d/S15mk_sda_node -> ../init.d/mk_sda_node /etc/rc3.d/S15mk_sda_node -> ../init.d/mk_sda_node /etc/rc4.d/S15mk_sda_node -> ../init.d/mk_sda_node /etc/rc5.d/S15mk_sda_node -> ../init.d/mk_sda_nodeLSBがらみは今度調べよう。
再起動してデバイスノードがあることを確認。うーん、次期wheezyまでこれでしのぐか…
2011/07/21(木)DNSを変えた(ZoneEdit->MyDNS)
2011/07/21 16:34
$whoisがこうなった。
[Name Server] ns8.zoneedit.com [Name Server] ns18.zoneedit.com↓
[Name Server] ns0.mydns.jp [Name Server] ns1.mydns.jp [Name Server] ns18.zoneedit.com経緯としては、Try WiMaxした際にdt8.jpに接続できなかったことに端を発する。WiMaxの自動取得DNSがdt8.jpをタイムアウトしているようなのでざっと調べてみると、ZoneEditの挙動がおかしい。ns18は応答を返すがns8は応答を返さなかった。
ここで色々調べてみたのだが、どうもアクセス元として特定IPアドレスなりドメインなりをns8ははじいているようだ(そうとしか思えない)。下はWindowsのcmd.exe。
>nslookup dt8.jp ns8.zoneedit.com DNS request timed out. timeout was 2 seconds. *** Can't find server name for address 75.125.10.187: Timed out Server: UnKnown Address: 75.125.10.187 DNS request timed out. timeout was 2 seconds. DNS request timed out. timeout was 2 seconds. *** Request to UnKnown timed-out >ping ns8.zoneedit.com Pinging ns8.zoneedit.com [75.125.10.187] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 75.125.10.187: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),と、こうなる。
自宅(so-net配下)ではnslookup, pingともに通っていたので気づかなかった。
もしかしたら今までこのサイト見られなかったりしたのかも。ごめんなさい。
nslookup(dig)テスト【DNSサーバ接続・応答確認】
上記のサイトでもはねられる。
ということで元々zoneeditは挙動が怪しかったこともあり、できれば乗り換えたいと考えた。個人運営ながらMyDNSがそこそこ長期かつ安定的に運営されている(感謝!)ようなので特に挙動が怪しいns8.zoneedit.comを廃し、MyDNSをメインに差し替えることにした。
しかし、調べてみると現在フルドメイン登録可能なフリーのDDNSがほとんど無くなっている。EveryDNSはDynDNSに吸収されるようだし、概して有料化かサービス停止の流れにあるようだ。無料DDNSは広告プログラムとくっつきづらいのもわかるので、仕方ないかもしれない。
MyDNSもいつまでサービスを提供していてくれるかわからない。将来的にどうするか。
ドメインをVALUE-DOMAINに移管すればVALUE-DOMAINのDDNSが使えるのだが、VALUE-DOMAIN自体が今不安定な状況のようなので今回は控えた。VALUE-DOMAINはいつの間にか安くなっていて、汎用jpに関して現在のレジストラ21-domainと値段がほぼ互角のようだ。経営が安定していることが確認できればVALUE-DOMAINへの移管も手ではある(VALUE-DOMAINのDDNSも不安定という噂があるが)。
自前でネームサーバを立て、フルドメインでない適当なDDNSでドメインを取得し(たとえばxxx.dyndns.org)、それをDNSとしてJPRSなりに登録するという手もある(技術的には可能なはずだが認識に誤りがあるだろうか?)。
話を戻す。とりあえず、1月程度問題がないかどうか確認し、問題ないようだったらZoneEditを全廃することとする。
【追記 2011/11/10】
2011/11/07付けでmydnsに一本化した。
[Name Server] ns0.mydns.jp [Name Server] ns1.mydns.jpさらばzoneedit。
2011/06/01(水)apache2がOut Of Memoryで落ちる
2011/06/01 18:07
Out of Memory: Killed process #### (****)半月~1月おきくらいで、上記メッセージがコンソールにあふれて操作不能・サーバ落ちとなる。****の部分はcgiの名前が出ているのだが、必ずしも同じものではない(adiaryが多いといえば多い)。
色々調べてみたのだが、
#apache2 -Vでみてみると、Worker MPMが動いている。topでみると255MBくらい仮想メモリを食ってるapache2プロセスが2つある。むむむ。
debianがなぜWorkerをメインに切り替えたのかは不明だが、preforkの方が実績がある上、うちのサイトではマルチスレッドで恩恵を受けるアプリはほとんどない。今回の件からもWorkerの方が考えなければいけない(設定しなければいけない)事項が多そうであるので、preforkに切り替える。
ApacheのMPM、「prefork」と「worker」を切り替える方法 – FlatLabs
まあdebianの場合、これだけでいいようだ。
#aptitude insatll apache2-mpm-preforkこれでmpm-workerが競合として検出され、最初に提示された解決方法がmpm-worker削除のみだったのでそれを選択。
また、設定ファイルもメンテした。httpd.confにはMaxRequestsPerChildが入ってたのだが、apache2.confのディレクティブには0指定されており利いてなかった可能性が高い。メモリリークが積まれていた可能性がある。
#diff apache2.conf.orig apache2.conf 103c103 < MaxRequestsPerChild 0 --- > MaxRequestsPerChild 100100回ごとにプロセス再起動することで、リークの蓄積を回避する。
#apache2ctl configtest #apache2ctl restartして、アクセスなど問題ないことを確認。
しばらく様子見。
2011/02/12(土)lenny->squeeze入れ替え
2011/02/12 21:22
squeezeはCONFIG_SYSFS_DEPRECATED=nでないといけないというので、一応kernel作り直した。
色々悩んだけど、お任せでいいや。
aptitude update aptitude install aptitude aptitude dist-upgradeApacheがApache2になったので設定を移してちょっとおかしいところだけいじって対応。
うーん、ほんとはこんなことじゃないけないんだけどちょっと今時間がないのでこれでいこう。
以下のパッケージが削除されたのでメモ。
1) dvipdfmx 2) iceape-gnome-support 3) initrd-tools 4) irb1.8 5) libdatrie0 6) libdevmapper1.02 7) libgnomekbd2 8) libgnomekbdui2 9) libmetacity0 10) libreadline-ruby1.8 11) libslab0 12) libvorbis0 13) libxcb-xlib0 14) libxcb-xlib0-dev 15) mysql-client 16) mysql-server 17) proftpd 18) python-numeric 19) racoon 20) rdoc1.8 21) rpm 22) texlive-base-bin 23) xserver-xorg-video-cyrix 24) xserver-xorg-video-imstt
2011/01/06(木)カーネル再構築メモ
2011/01/06 23:22
#make menuconfig #make bzImage #make modules #make modules_install #installkernel ##VER## arch/i386/boot/bzImage System.map #mkinitrd -o /boot/initrd-##VER##.img ##VER## #grub-updatesudoとかは適当に読み替えで。
でここからが肝心。これだけではうまくいかない。grub-updateは/boot/grub/menu.lstを更新するが/dev/sda1(SATAであるため)が正であるのに/dev/hda1と記述される。しかもご丁寧に既存の物まで書き換えて…… おそろしい。ということでmenu.lst内のデバイス指定を正しい物に修正する。grub-updateは何となく挙動が変なので、使わない方がいいのかも知れない。そのうち研究。
私の環境のinstallkernelはinitrdを作らないため、initrdは別途作る必要がある。initrd作成についてはこの直後にinitramfs-toolsを入れたので、今後はupdate-initramfsかmkinitramfsが使えると思う。それは次回。
2010/11/27(土)AFTのHDDをインストール
2010/11/27 4:30
WDのWD10TPVTをLinuxマシンに繋ぎたいのだが、これがいわゆる4096kbytesのAFT。パフォーマンス低下を防ぐために、fdiskに考慮が要ることが知られている。
WD20EARS買った。 _ GALACTIC FUNK
今回はとりあえず上記サイトのやり方でやってみた。
パフォーマンス低下の仕組みは簡単なのだが、このオプションで副作用がないのかどうかが分かっていない。
とりあえず様子見。
2010/07/21(水)ICMPの設定見直し
2010/07/21 20:54
$ ping 127.0.0.1はOKだが、
$ ping 192.168.xxx.xxx $ ping <<WAN側IPアドレス>>が通らない。
エラーメッセージはこう。
ping: sendmsg: Operation not permitted今回の入れ替えで通らなくなったのか、以前から通ってなかったのかは不明。
原因としてはiptablesの設定にicmpのtype指定が入ってなかったことによる。type指定をしてやらないと、-p icmpで全通しにしてるつもりでもpingが通らない。オプションが追加されたのか、policyが変わったのか、コンパイルオプションの問題か…
したがって、--icmp-typeを追加してやる。
/sbin/iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT /sbin/iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT /sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPTICMPのセクションを上記に差し替えた。これで、pingは問題なし。
echo-replyは0、echo-requestは8と書いても良い。
うーん、もうちょっと固められるけどこれでもいいよなあ。
外部からのpingをドロップしたいときはまた設定を変える必要がある。
2009/08/03(月)Linux→Windowsリモートコマンド操作
2009/08/03 25:48
telnetやsshでもいいっちゃいいのだが、ちょっと大仰かなと。
ということでWin32->Win32のpsexecに該当する機能を探していたところ、winexeというのがあるらしい。
samba4の機能なの? ちょっとわからなかったのだが、悪いものではなさそうなのでとりあえず単独でインストールすることにした。リポジトリになかったので、本家サイトからダウンロードして入れる。debian的にはリポジトリにないものを入れるのはどうなのだっけ? まあいいや。
参考こちら
fujishinko 雑記帳 : LinuxからWindowsをリモート制御する
本家サイト
winexe homepage:)
GLIBCのバージョン違いでさすがにバイナリそのままでは起動せず。ソースからコンパイルした。完全に本家サイトの"Compile from sources"そのまんま。
autoconfなかったので、インストール。
# aptitude install autoconfコンパイルはこれだけ。結構時間かかる。色々やってるなあ。
# wget http://eol.ovh.org/winexe/winexe-source-081123.tar.bz2 # bunzip2 winexe-source-081123.tar.bz2 # tar -xvf winexe-source-081123.tar # cd winexe-source-081123 # ./autogen.sh # ./configure # make proto bin/winexeテスト。
# ./bin/winexe -U User_Name%PassWord //192.168.YYY.XXX "ipconfig"結果の記載は割愛するけど成功。すごい、あっさり表示した。
これはちょっと感動だなあ。いや、代替手段はいくらでもあるとは思うんだけどね。でも一手の省略がちょっと凄い。
[2009/08/06追記]
GUIアプリを動かすときは --system --interactive=1とするといいらしい。
Ultr@VNCなんかはそれでいけた。