Serverの最近のブログ記事

 ちょっとしたTipsですがこれは便利ですね。意外とコマンドのオプションって実装が違ったり、バージョンアップで増えていても気がつかなかったりするので定期的に見直してみるのも良いかもです。

$_

直前に打ったコマンドの最後の引数。
これはシェル組んでいると結構使ってますね。

watch -d ls -l

活用方法がわからなかったのですが、そういう使い道があったんですね。

cd -

直前にいたディレクトリへジャンプ。この方法の存在は知っていましたが、一回忘れてしまってからずっと思い出せないままでした。

mkdir -p

これは絶対使う。特にインストーラーやシェルバッチで!

あなたが知らないかもしれないLinuxのコマンドいろいろ  IDEAIDEA
http://www.ideaxidea.com/archives/2008/06/linux.html

 Open TechにApacheの設定に関するコラムをまとめて紹介したページがありました。特にログの設定法は必見です。

Open Tech Press  Apache設定・運用術[6-27更新]
http://opentechpress.jp/special/08/02/20/0528205.shtml

 crontabの管理についてリポジトリで管理せよという技を見つけました。確かにeとrはキーボード上隣同士ですからね。ミスったことは無いのですが考えてみると怖い話です。

因みに

crontab -l > ~/var/crontab.back

には目からウロコ。これなら誤って削除してしまっても大丈夫ですね。でも複数人でcrontabを操作してたりすると誰が何のために設定したバッチか不明なものが氾濫したりいろいろと管理上大変なので最終的にはリポジトリ管理にしたいですね。

恐怖のcrontab -r. 設定ファイルはレポジトリ管理せよ - Slow Dance
http://d.hatena.ne.jp/LukeSilvia/20080621/p1

 昨日からSSHで接続できなくなったFreeBSDが一台あり直接本体で確認したら、システムがクラッシュしていた。HDDが部分的にクラッシュしている可能性が最も高いのだがそれでも一応OSだけは起動するんですね。NICが無効になってれば役に立ちませんが…。元々サーバー構築テスト用の予備機だったのでデータ被害は無いのですがテスト構築はVPCでも出来るので今更HDD変えて復旧する気になれなかったりします。復帰してもメモリーが512MBだしね…。

 C言語のCGIは速いと思っていましたが実は遅かったんですね。Servletみたいにプログラムがメモリに常駐されていればディスクアクセスが発生するCGIに勝ち目は無いのか・・・でもFastCGI組み込んだらどうなんだろ?

 以下の記事はCGIをC言語で作るというより、Apacheモジュールの作り方に重点を置いています。Webシステムのモジュールをバイナリ形式で配布する際にとても参考になりそうです。

ApacheModuleでWebアプリケーションをつくろう:CodeZine
http://codezine.jp/a/article/aid/2502.aspx

 これは使えるかも。UNIX同士でファイル共有するのは私の周りではサーバー間のコンテンツ共有(Apacheは分散するけどユーザコンテンツは一箇所にするとかの場合)にnfs使ったりしていますが、これが後で負荷が増えたからという理由でウェブサーバー追加しても、データセンター上で別ラックになってLANは無理ですなんて事もある。そういうときの最終手段として暗号化nfsはいいかも。

sshでリモートサーバーをマウント、便利にsshfs - Unix的なアレ
http://d.hatena.ne.jp/wadap/20080603/1212506793

 このブログのサーバは対象IPから外れていて被害は無かったのですが専用サーバなのに周辺サーバまで被害を受けるってちょっと怖いですね…。詳細は下記URLで確認ください。

お 知 ら せ -- さくらインターネット サポート
http://support.sakura.ad.jp/page/news/20080602-001.news

ちなみに該当サーバは隔離されたとありますが、そのサーバを契約者への対応ってどうなるのかな?すごーく気になります。何かしらペナルティはあるのでしょうかけれど、別のサーバを立てる必要があれば移設とかありそうだし…?これは個別に聞いたほうが良さげかな?

続報:2008/06/05 22:25
弊社ネットワーク内ホスティングサーバへの攻撃による影響について
http://www.sakura.ad.jp/news/archives/20080605-002.news

続報が出ました。今回のハッキングと不正コード混入となった範囲のサイトにアクセスした可能性のある方は緊急で検査と対策をおねがいします。

 先日発売したばかりのTracの本も購入したので再度FreeBSDにSubversionとTracをインストールしようと考えている最中ですが、ブラウザ上でリボジトリ管理できる「USVN」といツールが紹介されていました。まだすぐに使う準備はできていないのですが、これTortoiseSVNの代わりに使えたらSubversionの導入がずっと楽になりそうな気がします。

moongift » ブラウザベースのSubversion管理ツール「USVN」オープンソースを毎日紹介
http://www.moongift.jp/2008/05/usvn/

 phpspotで下記のようなサンプルがあったので現状使い道無いけど、将来ウェブアルバムとか作ることがあったら使うかもしれないので試してみた。

PHPで画像のEXIF情報を読み取るサンプルphpspot開発日誌
http://phpspot.org/blog/archives/2008/04/phpexif.html

 結果、関数が組み込まれてなかった。。。GDとかJPEGライブラリ入れているのであると思っていたのが勘違いwググってみたらやはり、--enable-exifをつけてコンパイルしないといけないらしい。

php exif_read_data()が使用できないとは - Yaskey Diary
http://www.yaskey.cside.tv/mapserver/diary/diary.php?mode=main&COM=232

 しょうがないので追加モジュールとしてインストールしようとしたら自宅BSDでは

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.

とエラーが発生。確かにautoconfは今使ってないな。。。昔入れたけど不要になって消した。(元々OSに入ってるはずのm4はm4.orgにしたままだったwww)

下記が以前autoconf入れたときのメモだが、m4は--prefix=/usrで/usr/bin/m4にインストールされるようにしないと後で面倒です。デフォルトだとで/usr/local/bin/m4になってしまう。

autoconf automake libtoolをインストール

これはまた必要になったときにやってみよう。。。ソフトウェアの再利用とか大賛成だけど、どのライブラリを使用しているとか表示義務が欲しいですよね。ソースが見れるからって一々解析するのも面倒。

mysqldoc

| | コメント(0) | トラックバック(0) このエントリーを含むはてなブックマーク

 最近はphpDocumentor等なるべく資料は自動生成もので済まそうとしているのですが、MySQL用の自動ドキュメント生成ツールを見つけたので紹介。一応XML/HTML/TXT形式での出力が可能ですが見た目的に印刷向きではないようです。XML形式が使えるので整形ツールを別に作成すれば凄いことができそうです。

 mysqldocはPerlで書かれた単体のプログラムで下記のモジュールが必要です。

  • DBI
  • DBD::mysql
  • Pod::Usage
  • Getopt::Long
  • Switch
  • またテストされた環境は配布サイトによるとMySQL5.0とFreeBSDだそうですが、とりあえずfedora7で問題なく動いてます。

    使い方は--helpに対応しているのでそれを見たほうが早いのですが、ドキュメントは標準出力されるのでリダイレクトしてファイルに書き込んでください。

    例)

     ./mysqldoc \
    --databases=データベース名 \
    --host=サーバのIPアドレス \
    --port=ポート番号 \
    --user=DBユーザ名\
    --output=[XML|HTML|TXT]から選択 > 出力先

    phpMyAdminで印刷用出力が出来るから必須ではないかな…。

    参考:mysqldoc - Google Code
    http://code.google.com/p/mysqldoc/

    記事:moongift » MySQLのドキュメント作成「mysqldoc」オープンソースを毎日紹介
    http://www.moongift.jp/2008/04/mysqldoc/

    PHPにモジュールを追加

     先日Apacheのモジュールを別途追加したばかりですが、今度はPHPでも同様の事をやってみたのでメモ。

    例としてpdoとpdo_mysqlを入れます。
    まずはPHPのソースに飛ぶ

    # cd /usr/local/src/php-5.2.3/ext/pdo

    # ls
    CREDITS        config.m4     pdo.php                pdo_sql_parser.lo  pdo_stmt.lo
    EXPERIMENTAL   config.w32    pdo_dbh.c              pdo_sql_parser.re  php_pdo.h
    Makefile.frag  package2.xml  pdo_dbh.lo             pdo_sqlstate.c     php_pdo_driver.h
    README         pdo.c         pdo_sql_parser.c       pdo_sqlstate.lo    php_pdo_int.h
    TODO           pdo.lo        pdo_sql_parser.c.orig  pdo_stmt.c         tests

    何もしてなければ上記の通り、configureファイルが無いのでphpizeする。

    # which phpize
    /usr/local/bin/phpize

    # phpize
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519

    これでconfigureファイルができましたので設計します。

    # ./configure --with-pdo

    --with-pdoは無くてもできたかも。

    # make
    # make install
    Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
    Installing header files:          /usr/local/include/php/
    Installing PDO headers:          /usr/local/include/php/ext/pdo/

    以上でpdoのインストールが終わりました。
    続いてpdo_mysqlのインストールを行います。

    # cd /usr/local/src/php-5.2.3/ext/pdo_mysql
    # phpize
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519

    今度はmysqlに関連するモジュールのためmysqlがインストールされているディレクトリを指定します。
    # ./configure --with-pdo-mysql=/usr/local/mysql/

    # make
    # make install

    最後にphp.iniに下記2行を追加します。

    extension=pdo.so
    extension=pdo_pgsql.so

    php -m コマンドで確認します。

    # php -m
    [PHP Modules]
    ctype
    curl
    date
    dom
    ffmpeg
    filter
    gd
    hash
    iconv
    json
    libxml
    mbstring
    mysql
    pcre
    PDO
    pdo_mysql
    pdo_sqlite
    posix
    Reflection
    session
    SimpleXML
    SPL
    SQLite
    standard
    tokenizer
    xml
    xmlreader
    xmlwriter
    zlib

    [Zend Modules]

    参考:phpize で共有 PECL 拡張モジュールをコンパイルする方法
    http://php.plus-server.net/install.pecl.phpize.html

     Apacheでwwwサーバを構築していて良くあるのが、最初は最小構成で構築していたものの後からモジュールだけ必要になる場合。全く同じOSの別サーバがあればそこからsoファイルを持ってくるという荒業もありますが、正当な方法で追加モジュールを組み込みたいとググってみました。

    apxsでapacheにモジュールを追加する
    http://kazmax.zpp.jp/apache/apache3.html

    なるほどapxsでコンパイル・インストールすることでモジュールを追加できるようです。PHPのオプションにapxsの項目があるのはそういうことなんですね。

    Apache2.2.4で追加した時は以下のように操作しました。

    Rewiteのインストール
    # cd /usr/local/src/httpd-2.2.4/modules/mappers
    # /usr/local/apache/bin/apxs -c mod_rewrite.c
    # /usr/local/apache/bin/apxs -i -a -n rewrite mod_rewrite.la

     サウンドハウスの個人情報流出事実が発覚した3/21から4/16までの対応内容が時系列でレポートされ公開されています。特に事実が発覚したときに何処に連絡を取りしかるべき対処すべきか参考になると思います。

    不正アクセスに伴うお客様情報流出に関するお詫びとお知らせ
    http://www.soundhouse.co.jp/news/20080418.pdf

    このレポート中で気になる点があったので取り上げてみます。

    • LACによるログ分析

    同じタイミングでIPAから次のプレス発表がありました。

    情報処理推進機構:情報セキュリティ:ウェブサイトの脆弱性の検出ツール
    http://www.ipa.go.jp/security/vuln/iLogScanner.html

    開発会社が同じということもあって同一ツールかもしれません。公開の目的は、今回のサウンドハウスが氷山の一角で他にも個人情報を抜かれているシステムを検知し被害の拡大を抑えるためかもしれません。

    • 3Dセキュアを使用した不正利用

    これはもう少し詳細が欲しいところです。3Dセキュアを不正使用するにはカード番号だけではなく「クレジット会社側が保有しているはずのパスワード」が必要なはずですがそれは何処から手に入ったのでしょうか?もうひとつは3Dセキュアを過信し油断したらしいのですがどうも責任転嫁と取れる書き方なので落ち着いたらもう少し客観的な調査報告が欲しいところです。3Dセキュアの導入の条件でサイト側のセキュリティレベルを下げる必要が本当にあったのか?

    • ガンホー名指しですが…

    今回の流出及び不正使用の原因となっているのかどうか?不正利用者が主にガンホーで商品購入していたのであればガンホーも被害者側ですがどうなんでしょうか?流出したサウンドハウスのサイトにログインするパスワードと3Dセキュアのパスワードが同じだったということであればもう目も当てられません。

     レポート全体の内容としては気持ちは大変わかります。要は騙された感いっぱいで腹立たしいことばかりなんでしょうけど現実そんなもんですよ、基本は自衛で無理があるなら保守丸ごと外注するしかない。まず最初にやる事は公開しているページのセキュリティをプログラムレベルでしっかり高めておくことで、ファイヤーウォールやIDSやその他セキュリティーツールは水際で阻止するための前衛部隊としてパフォーマンスやコストを気にしながら使うものです。

    サーバーの選定とかについては別のエントリーで…。

    さくらインターネット株式会社より4月15日から提供される新プランの発表がありました。

    ベーシックプランのさらにリーズナブルなエントリープランと既存プランの価格・構成変更がありました。

    SAKURA Internet -- ニュース
    http://www.sakura.ad.jp/news/archives/20080401-001.news

    Xeon借りたかった…全オレが涙目。orz

     monitのことですがモニットって呼んでいいのかな?(勝手にそう呼んでいるので違ってたらすみません)。今まで自作デーモンのCPU不可やサービス停止はシェルスクリプトでcron利用の監視をしたりまたはシェルスクリプト自身を常駐プログラム化させたりしてやってましたがこれをmonitに置き換えると共通化・共有化によって追加プログラムの監視等は楽になりそうですね。

    ウノウラボ Unoh Labs プロセスの監視を行う デーモン monit
    http://labs.unoh.net/2008/03/_monit.html

    このアーカイブについて

    このページには、過去に書かれたブログ記事のうちServerカテゴリに属しているものが含まれています。

    前のカテゴリはProject MMOです。

    次のカテゴリはTV・ニュースです。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    Powered by Movable Type 4.1