Blog ツール / [tDiary]tdiarytimes.rb フェードアウトを設定 / tcpserver のオプション / よく使う UID、GID

Blog ツール

  • MovableType

設置が面倒だった

  • blosxom

シンプルらしい

PHPで実装されてる

tdiarytimes.rb フェードアウトを設定

ログの消去時間に近づくにつれ、縦棒の色をフェードアウトさせる

tdiary.conf に追加

@options['tdiarytimes.fadeout'] = true

tcpserver のオプション

/usr/local/bin/tcpserver -HRl0 -u 82 -g 81 -x /etc/tcp.smtp.cdb 0 smtp \
/var/qmail/bin/qmail-smtpd &
  • H リモートホスト名を調べない。
  • R IDENTを行わない。
  • l0 ローカルホスト名を調べない

なんたら三原則みたい

ちなみに qmail 関係の UID,GID は FreeBSD の port を参考にした。

FreeBSD port 作成者のためのハンドブック - UID より抜粋

   alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent
   qmaill:*:83:81:QMail user:/var/qmail:/nonexistent
   qmaild:*:82:81:QMail user:/var/qmail:/nonexistent
   qmailq:*:85:82:QMail user:/var/qmail:/nonexistent
   qmails:*:87:82:QMail user:/var/qmail:/nonexistent
   qmailp:*:84:81:QMail user:/var/qmail:/nonexistent
   qmailr:*:86:82:QMail user:/var/qmail:/nonexistent

よく使う UID、GID

上記の qmail 関係の UID、GID のついでに利用しているサービスを抜粋

vpopmail:*:89:89::0:0:User &:/usr/local/vpopmail:/nonexistent
pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin

あと Apache を起動する httpd の UID、GID は 80

最終更新時刻: 2008年11月12日

年末年始のアクセス増加 / 高負荷対策 / NFSに関する覚書 / 某サイトのリニューアル / [Apache]KeepAlive Off / Poundを試す

年末年始のアクセス増加

忘れてた・・・(((( ;゜д゜)))アワワワワ

例年通りなら暮れと正月はアクセス数(=負荷)が急激に上がる可能性が高い

高負荷対策

最低でも落とさない。あわよくば軽くなるように。

冗長化でも負荷分散でも「短期間に実現可能で低リスク」な方法。

Proxy を使う場合

眠いので簡単に。

Proxy使うの負荷分散は簡単だけど冗長化にならない。フェールオーバ付ければWebサーバの冗長化にはなるけどProxy部分が死んだら終わり。でも現実解に近い。

導入はそれこそ1時間程度でもできるだろうし。Poundとかmod_proxy+mod_rewriteとか。Squidは資料集める時間が・・・でも1日あれば出来ると思う。

マスター側はApacheのポートを8080などに変更して80でProxyを動かすだけ。スレーブ側は通常通りのWebサーバでいい。Proxyで2台に振り分ける。(Proxy専用機が用意できればマスター、スレーブともに通常のポートでいい)

2台のサーバを同時にアクセスするとなるとrsync等によるコンテンツ同期は使えない。

これは共有ディレクトリでコンテンツを共有することで解決できる。

ファイルの共有で思いつくのはSAMBA(SMB/CIFS)とNFSだがCIFSに関してはファイルロックが出来るのかどうか不明。Linuxならば実績の面でもNFSが妥当。

NFS は RedHat Linux ならば最初からインストールされているのでサービスを起動するだけでとりあえず利用可能。 セキュリティを考えるとRPCのポートを固定してiptablesで固める必要があるが、それを含めても2日あればできるか・・・

ここまででWebサーバの冗長化と負荷分散になる。

Proxy部分が死んだら・・・に対しては、Proxy2台用意してハートビート等をつかって冗長化すれば解決できる。ここまでやれれば御の字だけど・・・

自分で書かなくてもすばらしい資料がありました。

NFSに関する覚書

バージョン

カーネル2.4の現在の主流はNFSv3。カーネル2.2のころはNFSv2?

カーネル2.6 では NFSv4 が実装される予定。これは互換性よりも性能を重視して一から書き直されている。

カーネル2.4の現在でもNFSv4のクライアント機能がバックポートされている(らしい)

某サイトのリニューアル

まずは現状のメニューを列挙して整理するところから

KeepAlive Off

ってそんなに効果あるんだ。

あと MaxRequestsPerChild を設定して子プロセスを定期的に殺すか

Poundを試す

http://www.apsis.ch/pound/

Pound - reverse-proxy and load-balancer

wget http://www.apsis.ch/pound/Pound-1.6.tgz
tar xvfz Pound-1.6.tgz
cd Pound-1.6
./configure
make
make install

設定ファイルを作る(/usr/local/etc/pound.cfg)

ListenHTTP 192.168.1.2,8080
UrlGroup ".*"
  BackEnd 127.0.0.1,80,1
EndGroup
最終更新時刻: 2011年06月09日

[Apache] ReverseProxy を使う場合のアクセス解析 / Esehttpdをインストール

ReverseProxy を使う場合のアクセス解析

リバースプロキシ(Pound)を使うとアクセスログに記録されるリモートIPがすべてプロキシのIPになってしまう。

Pound のドキュメントを読んだらその解決策が書いてあった。

Request Logging
 As a general rule, Pound passes all headers as they arrive from the client
browser to the back-end server(s). There are two exceptions to this rule:
Pound may add information about the SSL client certificate (as described
below), and it will add an X-Forwarded-For header. The general format is
X-Forwarded-for: client-IP-address. The back-end server(s) may use this
extra information in order to create their log-files with the real client
address (otherwise all requests will appear to originate from Pound itself,
which is rather useless).

要は X-Forwarded-For というアクセス元の IP をログに記録すればよい

httpd.conf の以下の行を書き換える

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
combined
CustomLog logs/access_log combined

Analog 側に変更のいらない方法

%h を

\"%{X-Forwarded-For}i\"

に置き換える

本当のアクセス元が記録されないという決定的な問題がある。リバースプロキシ経由でない場合や別のプロキシ経由だった場合にもどうなるかわからない。

その代わり Analog 側では変更がいらない。

ログ分析(Analog)側で対応する

こっちのほうがスマート。

httpd.conf の LogFormat の最後に

\"%{X-Forwarded-For}i\"

を追加する

analog.cfg の LOGFORMAT(APACHELOGFORMAT) に変更が必要

Esehttpdをインストール

http://ghost.math.sci.hokudai.ac.jp/esehttpd/

コンパイル・インストール

./configure
make
make install

起動/停止

/usr/local/sbin/esectl start
/usr/local/sbin/esectl stop

設定ファイルの以下の行を変更(/usr/local/lib/esehttpd/conf/esehttpd.conf)

Port                    8081
User                    httpd
Group                   httpd
最終更新時刻: 2011年06月09日

Pound を選択した理由 / Apache のパフォーマンス・チューニング / MRTG で Apache を監視するスクリプト

Pound を選択した理由

20031202#c04 でツッコミをいただいたので自分でもあやふやだった部分を整理。

キャッシュサーバ(Squid)を利用しないのはなぜか

結論から言うと今回のケースではキャッシュサーバの利用は難しい。

その決定的な理由は100%動的ページだから。キャッシュが効く静的コンテンツは画像しかない。

検討段階では「動的といってもリアルタイムに更新してるわけではないから大丈夫」と思ってたけど、

ひとつのページが

  • 認証ユーザ
  • REMOTE_IP
  • COOKIEの値
  • セッション

によって違う内容を出力する場合(プッシュ型コンテンツ?)、キャッシュはそれぞれの条件について必要になる。

また、同じユーザでも何かアクションを起こすたびにページが変化する可能性がある。(Amazonのオススメ商品みたいに)

あとは

  • アクセス数

アクセスはキャッシュサーバまでで、Webサーバにはアクセス記録が残らない。ではキャッシュサーバのログを取ればよいかというと、キャッシュサーバにすらアクセスされずブラウザのキャッシュが使用されてしまう場合もある。設定しだいで解決できる可能性あり。

  • キャッシュとプロキシのセキュリティの確保
    • フォームの確認ページや内部LANからのアクセスでのみ表示するページがキャッシュサーバに溜まってそれを他の人に見られたら?
    • プロキシ経由で他のサーバにアタックされたら?(踏み台)
    • その他もろもろを防御する必要あり。キャッシュだけでも大変、プロキシのセキュリティ確保はもっと大変。しかもクリティカル。

と、クリアしなければいけないハードルがいくつか。「短期間に実現可能で低リスクな解決策」という条件がなければ適用可能だけど、結局動的ページに対しては・・・?

Pound を一台のサーバで運用する意義は?

こっちがメインだったのにキャッシュで時間食ったのでまた明日書き直す

とりあえず http://pc.2ch.net/php/kako/998/998166103.html の 4 が(・∀・)イイコトイッタ!! 7 もイイ!

引用すると

動的コンテンツでも、遅いクライアントのために、重いhttpdで
だらだらとセッションを張りつづける必要も無い。
当然、クライエントの転送終了までセッションをキープしなきゃダメだし
クライエントの速度は色々だし、

でも 9 の言うように負荷は大幅には下がらない。むしろCPUが効率的に利用されて負荷自体は上がる?

そこでロードバランサが登場!!でもバランス取るサーバがいないから先にPoundだけ導入しておいていつでも振り分けれるようにしておこう。上記のメリットもあるし。というのが今回の導入目的。

MRTG で Apache を監視するスクリプト

さし当たって必要なのは

  • Busy Servers(起動しているプロセス数?)
  • Requests per second (リクエスト/秒)
最終更新時刻: 2008年09月01日

[Apache] MaxClients の適正値を求める / 画像(静的コンテンツ)用サーバ

MaxClients の適正値を求める

竹迫さんのmod_perl における C10K Problemを参考に。メモリ容量から計算する。prefork な Apache の場合です。

Apache の最大メモリ消費量=MaxClients×子プロセスのメモリ消費量+親プロセスのメモリ消費量

なのでまずは「子プロセスのメモリ消費量」と「親プロセスのメモリ消費量」を求める。

例えば TOP コマンドの結果がこんな感じだったとする

 PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
21419 httpd     16   0  5616 5412  2852 R     4.7  2.1   0:00   0 httpd
21144 httpd     15   0  5708 5500  2896 S     4.5  2.1   0:01   0 httpd
21312 httpd     16   0  6192 5984  2868 R     3.7  2.3   0:00   0 httpd
21244 httpd     15   0  6224 6020  2872 S     3.1  2.3   0:01   0 httpd
21168 httpd     16   0  6540 6328  2888 S     2.9  2.4   0:02   0 httpd
21297 httpd     15   0  6000 5796  2880 S     2.9  2.2   0:01   0 httpd
20535 httpd     16   0  6544 6332  2888 S     1.9  2.4   0:06   0 httpd
21417 httpd     16   0  5012 4804  2620 R     1.3  1.8   0:00   0 httpd
21418 httpd     15   0  5588 5380  2860 S     1.3  2.1   0:00   0 httpd
21406 httpd     16   0  4420 4212  2672 S     1.1  1.6   0:00   0 httpd
 1050 root      15   0     0    0     0 SW    0.7  0.0   3:48   0 kjournald
 2012 root      15   0   236  216   160 S     0.3  0.0   2:37   0 syslogd
28733 root      23   0   488    4     0 S     0.3  0.0  68:53   0 pound
21323 httpd     15   0  6096 5748  2864 S     0.3  2.2   0:00   0 httpd
21186 httpd     15   0  5628 5420  2896 S     0.1  2.1   0:00   0 httpd

httpd の SIZE が「親プロセスのメモリ消費量」、SIZE − SHARE(親プロセスと共用している部分) が「子プロセスのメモリ消費量」になる

MaxClients は現在デフォルトの150に設定されている、ということは

Apache の最大メモリ消費量=150×(6MB−2.8MB)+6MB=486MB

搭載メモリが 256MB なので MaxClients 150 は大きすぎる。MaxClients 50 だと最大メモリ消費量 160MB でちょうど良い。

メモリを増やしてMaxClientsを50以上にする必要があるかというと、

  • CPU使用率を見る限り 50 以上の実行はきつい
  • 昨日設置したMRTGの「BusyServers」のグラフはピーク時でも30程度

なので必要なし。

画像の説明

画像(静的コンテンツ)用サーバ

PHP 等を使わないただの画像へのリクエストにメモリを 6MB も食う Apache を使うのは効率が悪い。やはり画像サーバを立てて Pound で振り分けるほうが良い。

Esehttpd やモジュールを削った Apache

DocumentRoot を Apache と同じ場所に設定して空いているポートで動かす(例:8081)。

Pound

画像等へのアクセスを振り分け

http://www.geocities.co.jp/SiliconValley/1712/other/pound.htmlを参考に

UrlGroup ".*.(jpg|gif|png|css|js)$"
BackEnd 127.0.0.1,8081,1
EndGroup

を追加

Apache

もう KeepAlive は完全に必要なし

KeepAlive Off
最終更新時刻: 2008年11月07日

[PostgreSQL] pgpool 導入を検討 / [wish] ルータ / [wish] カードリーダ/ライタ / [wish] スイッチング HUB / [wish] メインマシンの CPU

pgpool 導入を検討

プロセスが16(num_init_children のデフォルト)立ち上がるから接続も16個だと勘違いしてた。実際には 1個(max_pool のデフォルト)のみ。

追記:勘違いじゃなかった。 README より

  なお,pgpool全体としては,num_init_children*max_pool 分だけ
  PostgreSQLへのコネクションが張られる点に注意してください.

ルータ

ネットワークの構成を変更したのでルータがもう一台必要になった

カードリーダ/ライタ

外で必要になることが多い。特にデジカメ素材を取り込むとき。

  • 携帯できる大きさ
  • メモリースティック、コンパクトフラッシュ対応
  • USB2.0 対応

スイッチング HUB

画像の説明

ネットワークの構成を変更したのでスイッチング HUB も購入する。 から新製品が出るのでこれを買う予定。

SD205-JP(5ポート) と SD208-JP(8ポート) があるが5ポートでは少ないし値段も大して違わないので SD208-JP にしようかな。

メインマシンの CPU

現在 Pentium4 1.6GHz を使用しているが、メディアプレイヤーの再生でこま落ちが発生するのでパワーアップしたい。

画像の説明

グラフ前半の負荷はメディアプレイヤーの再生、後半は Photoshop の起動によるもの。

最終更新時刻: 2008年07月25日

[wish][book] Linux から目覚めるぼくらのゲームボーイ! / xyzzy

Linux から目覚めるぼくらのゲームボーイ!

最近あちこちで紹介されている気がする。ケーブルと開発環境の入った 1CD LINUX が付属するなど、購入してすぐに遊べそう。

マイコン時代を思い出させるわくわく感のある書籍だと思う。

でもこの本買うならまずゲームボーイ買わなくちゃ・・・

xyzzy

2年くらい前から愛用しているエディタ。

最終更新時刻: 2008年10月13日

[tDiary] RDF をつけてみた / [buy] Intel Celeron 2.8GHz / [buy] ルータ マイクロ総合研究所 NetGenesis SuperOpt70 / [buy] カードリーダー ロアス CRW-7M23BK / [Apache][server] ReverseProxy を使う場合のアクセス解析(2) mod_rpaf を導入 / RSS リーダ / [PostgreSQL][server] pgpool をインストール

RDF をつけてみた

Intel Celeron 2.8GHz

ルータ マイクロ総合研究所 NetGenesis SuperOpt70

カードリーダー ロアス CRW-7M23BK

ReverseProxy を使う場合のアクセス解析(2) mod_rpaf を導入

20031203#p01 の続き

竹迫さんの2003.12.05 mod_rpaf を試してみましたを参考に mod_rpaf を入れてみた。今回のサーバは Apache 2.0 系なので mod_rpaf-2.0.c をコンパイル。

tar zxvf mod_rpaf-0.4.tar.gz
cd mod_rpaf-0.4
/usr/local/apache2/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

/usr/local/apache/conf/httpd.conf に設定を加える

LoadModule rpaf_module        modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1

Apache 内部の変数が書き換えられるので、ログに記録される IP はもちろん、CGI や PHP が受け取る環境変数 REMOTE_ADDR もアクセス元のIP になるからすごく便利。

追記: Apache の KeepAlive が On だと正しく動作しなかった。Off にすることで解決。

KeepAlive On になっているときはリモート IP の値が意味不明な文字列になったり空欄になったりした。

RSS リーダ

ZDNET - RSSリーダー総まくり

最近新しく使うツールを探すときに「オープンソースか否か」がかなり重要なポイントになってる。

pgpool をインストール

アプリケーション(AP)サーバが複数台、データベース(DB)サーバが1台。各 AP サーバに pgpool をインストール。

ftp://ftp.sra.co.jp/pub/cmd/postgres/pgpool/pgpool-0.1.6.tar.gz
tar xvfz pgpool-0.1.6.tar.gz
cd pgpool-0.1.6
./configure
make
make install

設定ファイルを書き換え(サンプルをコピー mv /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf)

allow_inet_domain_socket = 1
backend_host_name = 'db.example.com'

PHP スクリプト中の DSN を定義している個所を変更(PEAR DB を使用している場合)

pgsql://user@:9999/database
最終更新時刻: 2008年09月01日

このサーバの HDD がクラッシュしました / Esehttpd を入れる予定 / メインマシンのマザーボードとCPUを交換 / 「明日書く」 / 予定表メールサービス

このサーバの HDD がクラッシュしました

異音、セクタエラーメッセージ、そしてクラッシュ。

段階を踏んでくれてたのでデータのバックアップが出来たのが幸いです。でも夜中の2時に逝っちゃうのは勘弁して欲しかった・・・

現在は仮サーバとして、リプレースする前に使ってた SOTEC ノート。

本気で半永久的に使える記録メディアが欲しくなったけど、夢見ててもしょうがないので HDD を換装中。

Esehttpd を入れる予定

静的コンテンツ用として導入予定。

まずはテスト機に入れてみた。今度書く。

メインマシンのマザーボードとCPUを交換

新しいマザーボード(AOpen AX4PE Max)は調子が悪かったので、結局元の(GIGABYTE P4 Titan 667)に戻して CPU のみ交換。

グラフィックカードとの相性かも。今度別ので試す。

CPU は Pentium4 1.6GHz から Celeron 2.8GHz に換装。動画再生時のコマ落ちが無くなったので目的達成。

「明日書く」

「明日書く」と書いても実現できてないことが多いことがわかった。

次からは「いつか書く」にしよう。

予定表メールサービス

http://chizuru.bunkasha.co.jp/~kisara/yms.html

面白い。

最終更新時刻: 2008年11月21日

[server] Debian にする予定 / [server]Pound のログ出力 / [server]Esehttpd をインストールした / [server]各デーモンの起動順序 / [server]年末年始のアクセス増加(2) / xyzzy で使えるリファレンス / [retropc] PC-8801 シリーズ

Debian にする予定

長らく使ってきた RedHat Linux が無くなってしまったので次は Debian にする。

他の候補としては

  • Gentoo Linux
  • Vine Linux
  • Turbo Linux
  • SUSE Linux

など。

決めた理由はコミュニティ主導だから潰れる可能性が低い。あと信頼性が高いと言うイメージ。

それに Debian 覚えておけば Knoppix のカスタマイズもやりやすい。

Pound のログ出力

Pound はデフォルトで syslog にアクセスログを吐き出すので、そのままだとあっという間に /var/log/messages が埋め尽くされる。

Pound にファシリティを指定してインストールしなおす。

./configure --with-log=LOG_LOCAL1 --with-ssl=/usr/local/ssl

syslog でログを振り分ける

# /etc/syslog.conf
# local1.none を追加して、local1 を /var/log/messages に記録させない
*.info;mail.none;authpriv.none;cron.none;local1.none   /var/log/messages
# local1 を /var/log/pound に書き出す
local1.*                                               /var/log/pound

ログ集計はバックエンドのApacheで行うのでPoundのログは参考程度。

logrotate で /var/log/pound もローテーションするように /etc/logrotate.d/syslog を書き換える

Esehttpd をインストールした

静的コンテンツ用。

さきに OpenSSL を入れておく。(RedHat Linux9 で最初から入ってた SSL では駄目だった)

コンパイル・インストール

tar xvfz esehttpd-0.308.tar.gz
cd esehttpd-0.308
./configure --with-openssl=/usr/local/ssl
make
make install

設定

# /usr/local/lib/esehttpd/conf/esehttpd.conf
ServerRoot              /usr/local/lib/esehttpd
Port                    8077
User                    httpd
Group                   httpd
BindAddress             *
TypesConfig             conf/mime.types
DefaultType             text/plain
CustomLog               log/access_log
DocumentRoot    /var/www/localhost/htdocs

Pound に振り分け設定を追加

ListenHTTP 192.168.1.1,80
# jpg/gif/png/css/js を esehttpd(8077) に振り分ける。
UrlGroup ".*\.(jpg|gif|css|js)$"
  BackEnd 127.0.0.1,8077,1
EndGroup
UrlGroup ".*"
  BackEnd 127.0.0.1,8080,1
EndGroup

各デーモンの起動順序

ここ最近インストールしたデーモンの起動順序のメモ

  • pgpool
  • esehttpd
  • apache2
  • pound

条件

  • 静的コンテンツサーバは他のサービスに依存しないのでいつでも良い
  • pound が起動するのはバックエンドの後
  • pgpool は php(apache) より前
  • メール配信は php(apache) より前

で、できたのがこの順序

# /etc/rc.d/rc.local
csh -cf '/var/qmail/rc &'
/usr/local/sbin/esectl start
/usr/local/bin/pgpool
/usr/local/apache2/bin/apachectl start
/usr/local/sbin/pound

年末年始のアクセス増加(2)

2日 から今日までの1週間で pound,pgpool,pgpool 等を入れたり Apache のチューニングをしたり。

金をかけないでできる部分はとりあえず完了。ここから年末までは様子を見る。

PC-8801 シリーズ

今でも何台か所有。でも初代88は引越しのときに泣く泣く捨ててしまいました・・・

最近はエミュレータもあるので収集熱は冷めた。

最終更新時刻: 2008年07月23日

[retropc] goo - レトロゲーム / [PostgreSQL] ログを syslog に出力 / [wish] ジェルキーボードレスト/ジェルマウスパッド / カテゴリの利用法 / 今年の仕事は終了

goo - レトロゲーム

http://game.goo.ne.jp/retro/

ログを syslog に出力

syslog でログファイルを振り分ける設定

# /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none;local0.none   /var/log/messages
local0.*                                               /var/log/postgres

再起動

/etc/rc.d/init.d/syslog restart

PostgreSQL の syslog 出力を設定

# /var/pgsql/data/postgresql.conf
syslog = 2  # syslog にのみ出力
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'

再起動

/etc/rc.d/init.d/postgres restart

/var/log/postgres のローテーションを /etc/logrotate.d/syslog に追加

ジェルキーボードレスト/ジェルマウスパッド

店頭でさわってみてレスト付きのマウスパッドが欲しくなった。

キーボードレストは8の字に湾曲してる形のがいい。前に直線のを買ったがすぐに邪魔になった。

まくらと一緒で自分に合わないと気持ち悪い。実物を触って慎重に選ぶ予定。

追記: 店頭でさわったのはエレコムのディンプルゲルシリーズのものだった。

カテゴリの利用法

カテゴリってどんどん使い捨てていく使い方でもいいんだろうか。

何か関心事があったら新カテゴリを作って、関心がなくなったらそのカテゴリを使わなくなる。

ここ最近のWebサーバのチューニングネタもカテゴリ化していたら抽出しやすかった。

今年の仕事は終了

といっても仕事しないのではなく、

  • 今年中に「やるべき」仕事が終了

したので、明日からは来年のための仕事。

あと

  • 稼動中のシステムに新機能を追加しない

稼動中のサーバーの設定、プログラムにバグ修正以外しない(予定)。コードフリーズ。

最終更新時刻: 2008年09月01日

図を書くツール / [server] Debian GNU/Linuxのインストールでつまずく / [buy] リストレスト エレコム MOH-002ZEB 税抜1280円 / [buy] ジェルマウスパッド エレコム MP-062ZEB 税抜1080円 / [buy] 太陽誘電 CD-Rメディア 700MB×10枚 / [server] Bonzai Linux のインストールに成功 / メインマシンの Windows XP を再インストール

図を書くツール

UMLmemo とDicon はお手軽なので明日からでも使えそう。

両方とも汎用のフォーマットではないけど再利用を考えないメモなどに使える。考えながら書いてる下書き用のツールとして利用したい。

Debian GNU/Linuxのインストールでつまずく

インストーラで固まる。いろいろな箇所で。Ctal+Alt+Del も効かないという根性の入った固まりよう。

ディスクアクセス時に止まっているような気がしたので交換したが駄目。ためしに RedHat Linux 9 入れたらすんなり入った。このまま行こうかな。

余力があれば今度テキストモードで試してみる。

それにしても Unix User 2003年4月号付属 CD では bf24 の指定ができないんだけどもともとカーネル2.4なのかな?

リストレスト エレコム MOH-002ZEB 税抜1280円

ちょっと短い。二つ繋げるといいかな?

ジェルマウスパッド エレコム MP-062ZEB 税抜1080円

ちょうどいい感じ

太陽誘電 CD-Rメディア 700MB×10枚

Bonzai Linux のインストールに成功

今日のねういちさんのツッコミ で教えてもらった Bonzai のインストールにあっさり成功。ありがとうございますねういちさん。

さて、まずはパッケージの更新。 apt-get なんたらするんだと思う。

その後 OpenSSH 入れて、リモートで作業できる環境を作る。

そして足りないツールやライブラリをそろえる。wget など。

あとは iptables でポート閉めて apache やら Ruby やら PHP 入れる。

最後にデータを移行して今の仮サーバをリプレース。

メインマシンの Windows XP を再インストール

ここ数日 OS の再インストールばっかり。

OS のセットアップが終わったら

  • NIC のドライバを入れる
  • ネットワークの設定
  • Windows Update で最新の状態にする

Linux の場合とやってることは同じ。

  • 各種ドライバをインストール
  • 各種アプリケーションをインストール
    • MS Office
    • 画像編集
    • Web 制作
    • becky2, xyzzy, ffftp, explzh, teraterm, ttssh

合間に細かい設定

  • フォルダオプションを変更
    • 拡張子を表示する
    • アドレスバー/タイトルバーにパス名を表示する
    • 隠しファイル/フォルダを表示する
    • システムフォルダの内容を表示する
    • 縮小版をキャッシュしない
    • ネットワークのフォルダとプリンタを自動的に検索しない
  • 画面のプロパティ
    • デスクトップアイコンをすべて表示
    • ClearType を有効にする
  • タスクバーとスタートメニューのプロパティ
    • クイック起動を表示
    • タスクバーボタンをグループ化しない
  • IE
    • ホームページを google に
    • Google ツールバー
最終更新時刻: 2008年11月13日

[server] Debian GNU/Linuxインストール後の設定

apt-setup
apt-cache search ssh
apt-get install ssh
apt-get upgrade -s
apt-get upgrade
最終更新時刻: 2008年09月01日

[PostgreSQL] pgpool が大量にメモリを消費? / 中指のさきっちょの怪我 / time-nw.nist.gov と NTP で同期が取れなくなってた / mail コマンドでメールを送る / [todo] MRTG に RRDtool を組み込む

pgpool が大量にメモリを消費?

MRTG のメモリグラフでフリーメモリの空きが少なくなっている事に気づいた。

TOP コマンドで見てみるとスワップメモリが大量に使用されている。

ps コマンドで見てみると pgpool のプロセスが 100MB 以上消費していたので一旦止めて再度スタート。

pgpool stop
pgpool

スワップの使用量が正常に戻った。要調査。

グラフ:物理メモリの空き・スワップメモリの空き

現状思いつく原因は

* 間抜けな SQL を発行して大量にメモリを消費
* 後処理を忘れている

など。

child_life_time
connection_life_time

あたりを設定して、定期的にプロセス/接続をリセットすればいいか。

pgpool の README より

  connection_life_time
  コネクションプール中のコネクションの有効期間を秒単位で指定します.0
  を指定すると有効期間は無限になります.connection_life_timeのデフォ
  ルト値は0です.

child_life_time のことが書いてないのは実装がまだだからかも?

とりあえず connection_life_time を600(10分)に設定して様子を見る。

中指のさきっちょの怪我

昨日プラスチックの破片で切った。「k」を打つと痛い。つーかキーボード打ってると傷が塞がらないヨ!

time-nw.nist.gov と NTP で同期が取れなくなってた

以前は取れてたはずなんだけど。

# ntpdate time-nw.nist.gov
15 Dec 14:07:09 ntpdate: no server suitable for synchronization found

ためしに別の NTP サーバ(福岡大学)だと

# ntpdate clock.nc.fukuoka-u.ac.jp
15 Dec 14:07:12 ntpdate: adjust time server 133.100.9.2 offset 0.000779 sec

mail コマンドでメールを送る

$ mail メールアドレス
Subject: ここに件名を書く
ここに本文を書く
ctrl+d で終了
Cc: CC のメールアドレスを書く

これだけなら Windows でやればいい話なんだけど、

 $ mail メールアドレス
 Subject: 件名
 ~r/home/user/hoge.txt
 Cc:

とすると /home/user/hoge.txt の内容を送ることができる。長い設定ファイルを送るのに FTP を使う必要が無いので便利。

常識?(;・∀・)

MRTG に RRDtool を組み込む

取得データ/サーバが多くなってきたので重たくなってきた。RRDtool ベースに移行したい。

最終更新時刻: 2008年10月27日

[PostgreSQL][server] pgpool が大量にメモリを消費? (2) / [server] Pound が大量にメモリを消費する / スワップの有効利用? / [server] iptables 設定メモ / [server] Apache をインストール

pgpool が大量にメモリを消費? (2)

$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root     26167  0.0  0.0  1724    4 ?        S    Dec15   0:00 pgpool
root     26170  0.3  2.8 49024 7184 ?        S    Dec15   4:58 pgpool
root     26171  0.0  1.8 13264 4808 ?        S    Dec15   1:04 pgpool
root     27191  0.0  1.5 11440 3872 ?        S    Dec15   0:55 pgpool
root     24147  0.3  3.2 39992 8200 ?        S    Dec15   3:55 pgpool

Pound が大量にメモリを消費する

pgpool だけじゃなく pound も・・・

$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root     27894  2.8  1.3 178976 3456 ?       R    Dec10 234:38 pound
                         ^^^^^^ 仮想メモリを約180MB使用?

pound をリスタートしてみる。ついでなので設定を追加(User, Group, Client, Server, Alive

ListenHTTP 192.168.0.2,80
User httpd
Group httpd
Client 300
Server 3600
Alive 10
UrlGroup ".*\.(jpg|gif|css|js)$"
  BackEnd 127.0.0.1,8077,1
EndGroup
UrlGroup ".*"
  BackEnd 127.0.0.1,8080,1
EndGroup

で、kill してから pound コマンドで起動した結果

httpd    14332  0.0  0.5  2584 1336 pts/0    S    10:44   0:00 [pound]
httpd    14333  2.9  1.7 340292 4516 pts/0   S    10:44   0:14 [pound]

仮想メモリの値は瞬間瞬間で100MB程度から500MB以上まで大きく変化する。

ちなみにテスト機では

root     21351  0.0  0.7  3028 1492 ?        S    Dec10   0:00 pound
root     21352  3.8  0.8 10196 1684 ?        S    Dec10 323:51 pound

接続数に大きく左右されてる?

スワップの有効利用?

pgpool も pound もスワップ領域を有効利用してるだけ?

$ vmstat 3
  procs                      memory      swap          io     system      cpu
r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
2  0  0 129960 106580  40952  21792    6   10    13     8    2     0  9  3  0
0  0  0 129960 106548  40992  21796    0    0     0   447  304   602 24  5 71
0  0  0 129960 106204  41016  21804    0    0     4   155  192   410 21  2 78
0  0  0 129960 106212  41032  21808    0    0     0   172  210   299 19  3 78
0  0  0 129960 106220  41032  21812    0    0     0    99  138   156  8  1 91
0  0  0 129960 106204  41044  21828    0    0     0   159  233   427 26  3 70
0  0  0 129960 104868  41064  21820    0    0     0   148  208   281 28  2 70
0  0  0 129960 104868  41088  21840    0    0     0   236  272   426 23  4 73
  • si、so (スワップイン/アウト)がほとんど無い
  • 実メモリの空きは確保されてる

今のところ実害(パフォーマンスの低下等)が無いので様子を見る。

iptables 設定メモ

先日 からの続き。SSH 接続で設定。

vi /etc/iptables.sh

で、ルールを貼り付けたらコメントの日本語が化けた。コメント取ればいいけどこれから先困るので vim をインストール。

apt-get install vim

改めてルールを貼り付けて実行

# sh /etc/iptables.sh
iptables v1.2.6a: invalid TCP port/service `snmp' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: invalid UDP port/service `ftp' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: invalid UDP port/service `ftp-data' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: invalid TCP port/service `microsoft-ds' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: invalid UDP port/service `microsoft-ds' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: invalid TCP port/service `snmp' specified
Try `iptables -h' or 'iptables --help' for more information.

と定義していないサービス名を使っていたので /etc/service に以下を書き加える。 (ルールのほうを番号で書き直したほうがいいな・・・後で)

snmp            161/tcp                         # Simple Net Mgmt Proto
snmp            161/udp                         # Simple Net Mgmt Proto
ftp-data        20/tcp
ftp-data        20/udp
ftp             21/tcp
ftp             21/udp          fsp fspd
microsoft-ds    445/tcp
microsoft-ds    445/udp

改めてルールを適用した。

起動時に自動でこのルールがリストアされるように設定

/etc/init.d/iptables save active

設定を有効にするために

dpkg-reconfigure iptables

で、

Enable the iptables init.d script?

に対してyesを選択

Apache をインストール

まずはソースをゲットするために wget が必要

apt-get install wget

wget で Apache のソースをゲットして configure

tar xvfz httpd-2.0.48.tar.gz
cd httpd-2.0.48
./configure \
--enable-so \
--enable-deflate \
--enable-dav_fs \
--enable-dav \
--enable-rewrite

結果

configure: error: no acceptable C compiler found in $PATH
configure failed for srclib/apr

ギャフン!コンパイラが入ってない。

apt-get install gcc
apt-get install make
apt-get install libstdc++3
apt-get install libstdc++3-dev
# mod_deflate で必要
apt-get install zlib1g-dev

ようやくコンパイルとインストール

make
make install

ユーザを追加

groupadd -g 80 httpd
useradd -g httpd -u 80 httpd
passwd httpd

ディレクトリを用意

mkdir /var/www/
chown httpd.httpd /var/www
mkdir /var/log/httpd
chown httpd.httpd /var/log/httpd
mkdir /var/lock/httpd
chown httpd.httpd /var/lock/httpd
su - httpd
mkdir /var/www/www.mylab.jp
mkdir /var/www/www.mylab.jp/htdocs
mkdir /var/log/httpd/www.mylab.jp
mkdir /var/log/httpd/dav.mylab.jp

後で自動起動の設定する

最終更新時刻: 2008年11月12日

[server] ソフトウェア類をちょこちょこ / ドキュメントページ(hiki)復活 / qmail-inject を使って VERP 付きのメールを送る方法

ソフトウェア類をちょこちょこ

サーバ(Debian GNU/Linux)にソフトウェア類をインストール。

proftpd FTP サーバ

apt-get install proftpd

ウィザード形式で設定ができた。

/etc/proftpd.conf の LsDefaultOptions "-l" だけ "-la" に変更。

FFFTP で接続できることを確認できた。

exim メールサーバ

もともとインストールされてたので設定を行うだけ

eximconfig

ドキュメントページ(hiki)復活

amrita を入れ忘れてて動いてなかったのを修正。

qmail-inject を使って VERP 付きのメールを送る方法

qmail-inject の使い方をおさらい

echo to: recipient@example.com | /var/qmail/bin/qmail-inject
  1. リターンパスは user@example.com (コマンドを実行したユーザ)になる。

最初に考えたパターン

echo to: recipient@example.com | \
QMAILINJECT="r" /var/qmail/bin/qmail-inject -f 'sender@example.com'

が、これだとリターンパスが sender@example.com になってしまった

環境変数 QMAILINJECT の r は

宛先ごとの VERP を使用します。 qmail-inject は、宛先に送られるコピーの表書
き発信者に、各宛先アドレスを付け加えます。

-f は

-fsender
表書き送信者アドレス(envelope sender address)として、 qmail-queue に、引数
sender を渡します。このオプションは、 Return-Path とすべての環境変数を無効
にします。

つまり“すべての環境変数を無効に”されてしまうので QMAILINJECT も無効になっ ていた

正しいパターン

表書き送信者アドレスも環境変数で書き換える

export QMAILSUSER='sender'
export QMAILSHOST='example.com'
export QMAILINJECT='r'
echo to:recipient@example.com |  \
/var/qmail/bin/qmail-inject

リターンパスは sender-recipient=example.com@example.com でちゃんと VERP になっ た。

この環境変数はホスティンスサービスのときにも使える。各ユーザの CGI に -f を つけさせる必要が無い。

おまけ 送信者と受信者のドメイン名が違う場合

export QMAILSUSER='sender'
export QMAILSHOST='example.com'
export QMAILINJECT='r'
echo to:recipient@mail.example.com |  \
/var/qmail/bin/qmail-inject

この場合のリターンパスは sender-mail.example.com-recipient=mail.example.com@example.com

recipient のドメインが被ってるのはなぜ?

参考ページ

最終更新時刻: 2008年11月10日

[携帯電話] キャリアを変更する / ナンバーポータビリティ / [PHP] メールを受け取る

キャリアを変更する

今 Docomo だけど気になる点がいくつか。

  • メールスパム
  • 電波悪い
  • メール機能が弱い(reply-to が無いなど)

http://asdnof.hp.infoseek.co.jp/q02.html

au が最有力候補。

ナンバーポータビリティ

これだけのニーズがあるのに、

ドコモやる気なし・・・

最新の記事

番号はまだ先みたいだし、とりあえずメールアドレスだけでも一本化しよっと。

プロバイダ、フリーメール、自鯖メールのいずれかのアドレスから携帯に転送。

携帯からの発信には「返信は ****@****.*** にしてください」と入れて、できれば「reply-to」を指定する。(大抵の携帯端末は reply-to 無視するんだけど)

メールを受け取る

環境変数と標準出力を出力する

どんな情報が得られるのかをファイルに出力して確かめる。

.qmail

|/home/hajime/env.php > /home/hajime/mail.txt

env.php

#!/usr/local/bin/php
<?php

print_r($_ENV);
while(!feof(STDIN)){
    echo fgets(STDIN, 4096);
}

exit(0);
?>

FROM を抽出

FROM を抽出してリスト化してみる

.qmail

|/home/hajime/from.php >> /home/hajime/list.txt

from.php

#!/usr/local/bin/php
<?php
while(!feof(STDIN)){
    $line = fgets(STDIN, 4096);
    if(preg_match('/from:.*?([^<)\s]+@\S+\.[^>(\s]+)/i', $line, $regs)) {
        $from = $regs[1];
        break;
    }
}

echo $from . "\n";

exit(0);

?>

キャリアを変更する(2)

au の INFOBAR の値段を聞きに au ショップに行ったら売り切れだった。

Debian GNU/LinuxにMRTGをインストール

apt-get install mrtg
apt-get install snmpd
最終更新時刻: 2008年02月29日

[携帯電話] メール転送

メールに関してメモ

公開アドレス

  • プロバイダに依存しない
  • 転送ができる
  • 堅牢

で、ここからメールをフィルタ、保管、携帯電話に転送。

これは自宅サーバでやるかプロバイダのメールでやるかする。

いずれにせよ窓口となる公開アドレスは変更しないからバックエンドのサーバはいつでも交換・拡張がきく。

やりたいこと

  • PC で保管したい
  • フィルタしてから必要なメールだけ携帯に転送したい
  • できる限りメールアドレスの変更をしたくない
最終更新時刻: 2008年11月12日

[retropc] M88 - PC-88 エミュレータ

http://www.retropc.net/cisc/

忘年会でレトロ PC の話題になったのでまた使ってみる。

「ラグランジュ L-2」と「キャッスル」というゲームを薦められた。

最終更新時刻: 2008年07月18日

[PostgreSQL] pgpool が大量にメモリを消費? (3) / SoftEther

pgpool が大量にメモリを消費? (3)

スワップ領域の使い果たしでサーバがダウンした。

自動的にスワップを開放してくれると思ったけど甘かった。

グラフ

毎日早朝4時に動かしている DB の更新スクリプトが臭い。 tmp_table を CREATE して、明示的に DROP してないし。

ただ、それ以外の時間でもスワップが減少しているのが気になる。

pgpool が原因なのかどうかを特定するためにも、一旦 pgpool を外して様子を見ることにした。

SoftEther

SoftEther.com - SoftEther 仮想イーサネットシステム

VPN みたいなものだけど簡単に導入できてしまうところが面白い&恐い。

最終更新時刻: 2008年11月04日

大そうじ / mylab.jp へのアクセスを www.mylab.jp へリダイレクト

大そうじ

LAN の配線を見直したら長いケーブル(3、5メートル)が多すぎて邪魔だと気づいた。1m のケーブルを買ってこよう。

机の前に本棚を置いた。

mylab.jp へのアクセスを www.mylab.jp へリダイレクト

<VirtualHost *>
    ServerName mylab.jp
    RedirectPermanent / http://www.mylab.jp/
</VirtualHost>
最終更新時刻: 2008年07月15日

[PostgreSQL] pgpool が大量にメモリを消費? (4) / 自宅ネットワーク(1) / 自宅ネットワーク(2) / 自宅ネットワーク(3) / 自宅ネットワーク(4) / 自宅ネットワーク(5) / 影舞 - Ruby でかかれたバグトラッキングシステム

pgpool が大量にメモリを消費? (4)

月曜日に pgpool を止めたらスワップの減少がなくなった。

画像の説明

年明けに詳しく調査してみたい。

自宅ネットワーク(1)

Dicon の練習がてらネットワーク図を書いてみた

PC ルータを使用していた頃 8月23日の日記9月13日の日記

  • ルールを書くのが面倒
    • WAN<->DMZ、WAN<->LAN、DMZ<->LANの3経路×2方向で6パターンのルールを書かなければいけない
  • UPNP が使えない
  • 遅い
    • Pentium 166MHz
    • WAN 側 NIC が ISA の 10Base-T のカード
  • 音がうるさい
    • 古いマシンなのでファンの音がでかい
#
          INTERNET
              +
              |
              |
              |
              |
              |
         +----+---+            DMZ
         |floppyfw+-----------+---------------+
         +----+---+           |               |
              |          +----+-----+   +-----+---------+
              |          |Web Server|   |Mail/DNS Server|
              |          +----------+   +---------------+
              |
              |      LAN
              +-------+---------+
              |       |         |
         +----+-+  +--+---+  +--+---+
         | PC1  |  | PC2  |  | PC3  |
         +------+  +------+  +------+

自宅ネットワーク(2)

PC ルータ置き換え後

2段ルータ(NAT)なのでUPNP使用不可

#
          INTERNET
              +
              |
              |
         +----+----+
         |BA8000PRO|
         +----+----+
              |              DMZ
              +---------------+---------------+
              |               |               |
         +----+------+   +----+-----+   +-----+---------+
         |BEFSR41C-JP|   |Web Server|   |Mail/DNS Server|
         +----+------+   +----------+   +---------------+
              |
              |      LAN
              +-------+---------+
              |       |         |
         +----+-+  +--+---+  +--+---+
         | PC1  |  | PC2  |  | PC3  |
         +------+  +------+  +------+

自宅ネットワーク(3)

B フレッツ導入後

2セッション張ってる。UPNP が使える。

#
                                 INTERNET
                                     +
                                     |
                        +------------+--------------------+
                        |                                 |
                   +----+----+                      +-----+-----+
                   |BA8000PRO|                      |BEFSR41C-JP|
                   +----+----+                      +-----+-----+
                        |                                 |
               +-------------------+             +--------+---------+
               |        |          |             |                  |
           +---+--+  +--+---+  +---+--+   +------+--------+  +------+---+
           | PC1  |  | PC2  |  | PC3  |   |Mail/DNS Server|  |Web Server|
           +------+  +------+  +------+   +---------------+  +----------+

自宅ネットワーク(4)

サーバセグメントと LAN を接続(現在)

#
                                 INTERNET
                                     +
                                     |
                +--------------------+--------------------+
                |                                         |
           +----+----+                              +-----+-----+
           |BA8000PRO|                              |BEFSR41C-JP|
           +-+-------+                              +--------+--+
             |                                               |
    +-------------------+--------+     +------------+--------+---------+
    |        |          |        |     |            |                  |
+---+--+  +--+---+  +---+--+  +--+-----+---+ +------+--------+  +------+---+
| PC1  |  | PC2  |  | PC3  |  | NetGenesis | |Mail/DNS Server|  |Web Server|
+------+  +------+  +------+  +------------+ +---------------+  +----------+

自宅ネットワーク(5)

次は BA8000PRO で VLAN を切る予定

影舞 - Ruby でかかれたバグトラッキングシステム

http://www.daifukuya.com/kagemai/

最終更新時刻: 2008年07月18日

[server] HDD から異音 / アロマテラピーのお店の演奏会 / [携帯電話] メールアドレス / 今作ってる CGI

HDD から異音

また HDD が壊れそうな予感。この INSPIRON 4100(Debian GNU/Linux) は発熱がすごくてサーバ向きじゃないのかも?

アロマテラピーのお店の演奏会

昼食後に行ってきた。久しぶりに耳の保養ができた気がする。

ネトルという飲み物を頂く。

・・・酔っ払ったような気がするんですが(汗)

メールアドレス

現状の不満

  • キャリアを変えるたびにメールアドレスが変わる
  • 細かいフィルタができない
  • PC でも受信したい

これらを解決するために公開アドレスと受信アドレスを分ける。

公開アドレスは変わらない。フロントエンド的な役割。なので長く使えるアドレスがいい。候補は

  • 自分のドメイン(サーバ)のアドレス
  • プロバイダのアドレス
  • フリーメール

自分のドメインを使うメリットは

  • ドメインを更新する限りサーバが変わっても使えるのでもっとも不変。
  • 自分のサーバなので細かいフィルタリングが可能

デメリットは

  • 自分のサーバなので不安定。信頼性が低い。

プロバイダのアドレスを使うメリットは

  • 信頼性が高い

デメリットは

  • プロバイダを変更したらメールアドレスが変わる

今回の目的にはそぐわないので却下。

フリーメールはサービスにもよるが

  • 信頼性そこそこ
  • ドメイン変わらない
  • 中にはフィルタリングもできるサービスがある。

と、今回の目的にピッタリ。

Yahoo のメールから携帯に飛ばすことにした

が、Yahoo のメール転送サービスはメールが残らない。転送したらしっぱなし。

これでは PC で受信すると言う目的が果たせないので、もう一つアドレスを経由する。

今作ってる CGI

テンプレート機能なんて飾りです。偉い人にはそれがわからんのですよ。

・・・言ってみたかっただけです。

最終更新時刻: 2008年07月31日

[server] Pound + WebDAV / サーバー構成

Pound + WebDAV

設定ファイルに WebDAV のリクエストメソッドを通すように設定

# /usr/local/etc/pound.cfg
# 次の2行を追加
ExtendedHTTP 1
WebDAV 1

しかし DreamWeaver MX から接続すると501エラーになる。

pound のログにも bad request が出ていた。PROPFIND メソッドが通っていない。

configure 時に --enable-msdav オプションを追加することで解決。

./configure --with-log=LOG_LOCAL1 --with-ssl=/usr/local/ssl --enable-msdav

追記:

一部のファイルで 501 Not Implemented が出た。画像等を Esehttpd に振り分けていたのが原因。ちょっとはまった。

UrlGroup ".*\.(jpg|gif|css|js)$"

サーバー構成

またも DICON の練習

# Web Server + DB Server
                              +-----+
                              |users|
                              +--+--+
                                 |
                    +---------------------------+
                    |            |    Web Server|
                    |         +--+--+           |
                    |         |Pound|           |
                    |         +--+--+           |
                    |            |              |
                    |     +------+------+       |
                    |     |             |       |
                    |  +--+---+     +---+----+  |
                    |  |Apache|     |Esehttpd|  |
                    |  +--+---+     +--------+  |
                    |     |                     |
                    |   +-+--+                  |
                    |   |PHP |                  |
                    |   +-+--+                  |
                    |     |                     |
                    |  +--+---+                 |
                    |  |pgpool|                 |
                    |  +--+---+                 |
                    |     |                     |
                    +---------------------------+
                          |
                    +---------------------------+
                    |     |            DB Server|
                    |  +--+-------+             |
                    |  |PostgreSQL|             |
                    |  +----------+             |
                    |                           |
                    |                           |
                    +---------------------------+

今は pgpool 外してます。

サーバが増えたら(Web Server2)以下のような構成になる?

# Web Server * 2 + DB/File Server
              +-----+
              |users|
              +--+--+
                 |
    +-----------------------------+     +-------------+
    |            |     Web Server1|     | Web Server2 |
    |         +--+--+             |     |             |
    |         |Pound|             |     |             |
    |         +--+--+             |     |             |
    |            |                |     |             |
    |     +------+------+---------|-----|-----+       |
    |     |             |         |     |     |       |
    |  +--+----+    +---+----+    |     | +---+---+   |
    |  |Apache |    |Esehttpd|    |     | |Apache |   |
    |  |+PHP   |    +---+----+    |     | |+PHP   |   |
    |  |+pgpool|        |         |     | |+pgpool|   |
    |  +--+----+        |         |     | +---+---+   |
    |     |             |         |     |     |       |
    +-----------------------------+     +-------------+
          |             |                     |
          +------+------+-----+---------------+
                 |            |
    +---------------------------------------------------+
    |            |            |           DB/File Server|
    |       +----+-----+    +-+-+                       |
    |       |PostgreSQL|    |NFS|                       |
    |       +----------+    +---+                       |
    |                                                   |
    |                                                   |
    +---------------------------------------------------+

これだと管理が大分楽になる

極端な話「Web Server 1」と「Web Server 2」には HDD が載って無くてもいい。

次の図は役割ごとにサーバを分けた場合の図。

#
                 +-----+
                 |users|
                 +--+--+
                    |
            +------------------------+
            |       |    Load Blancer|
            |    +--+---+            |
            |    |Pound |            |
            |    +--+---+            |
            |       |                |
            +------------------------+
                    |
        +-----------+------------------------+
        |           |                        |
   +----|------------------------+     +------------------+
   |    |           | Web Server1|     |     | Web Server2|
   |    |           |            |     |     |            |
   |    |           |            |     |     |            |
   | +--+----+  +---+----+       |     | +---+---+        |
   | |Apache |  |Esehttpd|       |     | |Apache |        |
   | |+PHP   |  +---+----+       |     | |+PHP   |        |
   | |+pgpool|      |            |     | |+pgpool|        |
   | +--+----+      |            |     | +---+---+        |
   |    |           |            |     |     |            |
   +-----------------------------+     +------------------+
        |           |                        |
        +-------+---+------------------------+--+
                |                               |
   +------------------------------+      +----------------+
   |            |        DB Server|      |      |      NAS|
   |       +----+-----+           |      |    +-+-+       |
   |       |PostgreSQL|           |      |    |NFS|       |
   |       +----------+           |      |    +---+       |
   |                              |      |                |
   |                              |      |                |
   +------------------------------+      +----------------+
最終更新時刻: 2008年10月28日

[server] またもセクタエラーでサーバダウン

サーバー(Debian GNU/Linux)がダウン。そろそろだめかも。

電源 ON/OFF 復旧した。ひとまずの発熱対策として PC の下に割り箸をはさんで風通しを良くしてみた。

最終更新時刻: 2008年12月28日

Web アプリケーションのセキュリティチェックポイント

以下のような弱点がないか

  • クロスサイトスクリプティング
  • SQL インジェクション
  • シェルコマンドに不正な文字列が渡っている

共通するのはクライアントからの入力をチェックし、適切にエスケープしているかどうかどうかという点。

クライアントから渡される情報は、一切信用できない。(UserAgent、Referer、GET文字列、POSTデータ、COOKIEデータ等)

ちょっと検索してみただけでもいろいろな資料が見つかった。

最終更新時刻: 2008年06月19日

仕事納め

最終更新時刻: 2008年10月31日

風邪ひいた(1)

親類曰く

「おまえ、去年だったか一昨年だったかも正月に風邪ひいてたぞ」

とのこと。成長してない・・・

最終更新時刻: 2008年07月25日