タグ » Linux «

2010/11/27 土曜日 | 投稿者: aqua

こんばんは、aquaです。

忙しいときに限って自宅サーバが壊れる。一時的に読み込み専用のファイルシステムになったのに、再起動したら直っちゃったから先延ばしにして使い続けたからかな。遂に再起動しても読み込み専用のままで書き込みできなくなってしまった。ディスク2枚あったしミラーしていたはず、とか思いつつ見てみると何もしていなかった。ミラーだとオペミス救えないから、手動で同期しようと考えて何もしていない。自宅サーバの運用はずさんの典型になるね。読み込みだけできるうちに別のディスクへデータを退避。

実際にはあらゆるメールを自宅サーバで受け取っていたので想像以上に不便。一刻も早く直したいが仕事は忙しいし、細かい移行を考えている余裕がない。思い出したのが、さくらのVPS。仕事でも仮想サーバは使っていたし、思ったよりも便利な印象。もともと、さくらの専用サーバには入っていて、そこで動かしている機能をVPSに移して、毎年10万円以上かかっている専用サーバをやめようとも考えていた。4、5年前のサーバスペックに10万円かかるって、コストパフォーマンスが異常に悪く感じてしまう。

さくらのVPSはすぐに使えるって事で、早速申し込む。リソースはメモリ512MB、ディスク20MBと少な目だが、DNSやメール程度であれば充分。仮想化はKVMで完全仮想らしい。しばらくすると準備が整って、VPSコントロールパネルから操作してみる。CPUとかトラフィックがグラフで見れる。リモートコンソールで、普通にコンソール作業も出来るね、便利。rootのパスワード変更がわからないので、とりあえず再インストールを試してみる。CentOS5の64bitでセットアップが完了。ログインしてみると、特にエコーバックの遅延もなく快適に使える。

DNSは専用サーバの方で動かしていたので、とにかくメールサーバを移行する。postfix + postfixadmin + cyrus-sasl + dovecot + mysqlで構築。自分で作ったとはいえ、めんどいな。既に仕事で徹夜続きなのに、この対応作業で更に眠れない。が、死ぬ気で作るとすごい早さ。人間の底力って侮れないねwww 何とか出来たもののsmtpのポートが動かない。iptablesを取っ払っても変わらず。改めてさくらのHPを見直すと、評価期間中はsmtp使えない模様。即座に本契約に切り替えてメールサーバ復活!!疲れた・・・。

カテゴリ: 技術系  | タグ: , ,  | コメント
2010/04/12 月曜日 | 投稿者: aqua

こんばんは、aquaです。

以前の記事で紹介したとおり、ファイルサーバ上に貯まった動画や音楽をネットワーク上で共有するために、LinuxのDLNAサーバであるmediatombを利用している。ファイルサーバはsambaで公開されているので、Linux側ではsmbmountしてmediatomb上で公開している。DLNAクライアントは今のところPS3しかない。一般的な動画や音楽は再生できているが、幾つか気になる問題が残っていた。その1つが主題にもなっているコンテンツの日本語タイトルにおける文字化けだ。sambaサーバ上でコンテンツを管理しているため、ややこしい状況になってしまっている。

sambaサーバ上の文字コードだが、ファイルサーバであるtera stationなので細かい設定を確認する事は出来ない。が、windows環境から文字化けせずに見えているので、おそらくSJISだろう。これをmediatombのブラウザでアクセス出来る管理ツールで確認すると、既に文字化けしている。まずはここから修正を試みてみよう。これについてはそれほど難しくなく、mediatombのconfig.xmlにてファイルシステムとmediatombの文字コードをSJISに指定すればよい。具体的には以下のような設定を追加した。

<filesystem-charset>CP932</filesystem-charset>
<metadata-charset>CP932</metadata-charset>

この設定でブラウザ上で確認できる文字化けは解消する事が出来た。しかし、それはFilesystemタブ側だけの話で、Database側の文字化けは依然続いていた。DBにはmysqlを使用しているのだが、ここのテーブルの文字コードはutf8が指定されている。ここも同様にSJISに直さなければならないだろう。タイトルが含まれるテーブルはmt_cds_objectというテーブルなので、この表だけSJISで作成し直した。この変更はテーブル定義を修正する形で対応した。こちらも具体的には以下のDDLを実行した。

ALTER TABLE mt_cds_object CHARACTER SET sjis;

しかし、それでも文字化けは解消しない。ほぼ諦めかけていたのだが、もう一度DBの中身を確認してみると文字化けしたままの状態だった。何となく一度データを消して、コンテンツを再登録してみると・・・上手くいった!これで日本語を多く含む音楽データもDLNAサーバ上で扱う事が可能となった。ついでにATRAC3のaa3ファイルを対応させようとしたが、PS3では再生する事が出来なかった。ファイル名の拡張子をomaにして、以下の設定を追加すると再生出来るのだが。ATRAC3のハンドリングがいい加減面倒になってきたのでmp3に移行しようかな・・・。

<map from=”oma” to=”audio/x-sony-oma”/>

カテゴリ: 技術系  | タグ: , ,  | コメント
2010/02/08 月曜日 | 投稿者: aqua

こんばんは、aquaです。

前回ユーザビリティの改善のために各文言の和訳や表示順の入替などを実施した。この変更は図らずもページタイトルのフォーマットにも及ぶ事になった。基本的にはPVを上げるための施策だったが、結論から言うとPVは激減した。正確な因果関係は不明だが、状況としてはgoogleの検索結果順序が大きく落ち込んでしまった。やはりgoogleのクシャミ一つでネット上でのポジションが大きく変わるというのは相変わらずのようだ。以前に運用していたサイトも、この手の問題でやる気がなくなって実質凍結状態にした事を思い出した。他の誘導パス作りをさぼっていたのがいけないんだけどね。

そんな訳で、すっかりPVも減ってしまったので、今まで試せなかった実験的な変更を追加していく。主にSEO対策まとめ系のページを参考にした。カテゴリにシングル・バイトのスラッグを準備していたが、これを日本語に戻した。URL内の日本語がどういう意味を持つか怪しいものだが、とりあえず様子を見てみる。更に記事のURLも『/%year%/%monthnum%/%postname%/』から『/%category%/%postname%/』に変更した。この変更により記事ページのURLが世の中的には重複する事になるので、それを防ぐためのcanonical属性導入を考える。

canonical属性は、検索エンジンに任意の記事について正しいURLを認識させるために使用される。canonical属性の追加には幾つかのプラグインが用意されている。『All in One SEO Pack』を試してみたが、タイトルの変更も行われてしまう。タイトルを処理に任せると日付の表示が『YYYY MM月 DD』のようにイマイチになる。ここは手元で修正したので、canonical属性のみ対応してくれるプラグインに変更する。その名も『Canonical URL’s』。プラグインとしてのインストール以外は何も設定できないツールだが、期待通りきちんとcanonical属性の追加は行われている。

ここまで作業が完了したところで、『404 not found』がちょこちょこ起きている事に気付く。過去のスラッグに対するアクセスが404になっていた。直接『.htaccess』を修正しようかとも思ったが、それ用のプラグインである『Redirection』を発見したので、旧スラッグURLを新スラッグURLに転送するように設定。ここでふと気付いたのだが、外からawstatsへのアクセス可能になっている。awstatsは元々、狙い済ました直接アクセスが非常に多い。調べてみたところ、httpd.confにアクセスを許可する設定が追記されていた。以前にawstatsを再構築した際に、スクリプトか何かで入り込んだのだろう・・・、こわやこわや。

カテゴリ: 技術系  | タグ: , , , , ,  | コメント
2010/01/24 日曜日 | 投稿者: aqua

こんばんは、aquaです。

ここ最近のUU及びPVは右肩上がり。とは言っても元々が大したトラフィックではないけど。年末と正月の投稿ラッシュで誘導が増えたのかな。そんな訳で、前回もblogそのものを修正したのだが、今回はアクセスログ解析であるawstatsを久々に修正していく。awstatsはドメインごとに準備する『awstats.www.domain.com.conf』というファイルをカスタマイズする。まずは内輪からのトラフィックがノイズになりつつあるので、カウントしないように設定する。『SkipHosts』というパラメータにスペース区切りで必要なIPを記載する。正規表現も使える。今回は以下。

SkipHosts=”REGEX[^192\.168\.0] 123.234.56.254″

次に24時間に一度しか更新していなかったバッチを1時間ごとに変更する。最近のapacheのアクセスログはrotatelogsによって、日次でログファイルを分断する事が多い。その為、現在は昨日の日付になっているアクセスログを読み出す、という設定になっている。これを昨日のアクセスログと本日のアクセスログの両方を見るように修正する。本日のだけだと前日てのログが完成する24時の時点で解析してくれない事になるからだ。アクセスログのファイル指定は『LogFile』というパラメータに対して設定する。コマンドも使える。今回は以下。

LogFile=”cat /usr/local/apache/logs/access-%YYYY-24%MM-24%DD-24.log /usr/local/apache/logs/access-%YYYY%MM%DD.log|”

そして検索文字列の問題も検討する。googleなどからどのような検索文字列で誘導されたかをレポートしてくれるのだが、その際に全角スペースなどが使われてしまうと、それ前後の言葉と合わせて1語と判断されてしまい、ノイズになってしまう。ググってみると幾つか対応方法はありそうだが、今回は修正が簡単そうなこちらのページにあるパッチを当てる事にした。パッチ適用後に念のため全データをリフレッシュすると、検索文字列も妙な重複や文字化けが解消し、すっきりと期待通りに表示されるようになった。

最後は似たような問題で、ページ表示ランキングでよく見られたURLをまとめてくれるのだが、何故か同じページが幾つかに分かれてしまったり、そもそもURLEncodeされているため一見してどのページが分からない。このURLEncodeも変換出来ないか調べてみた。こちらのページにて、アクセスログのURLEncodeを変換するコマンドが準備されていたので利用してみたが効果なかった。自力で簡単な修正もしたが変化せず。設定ファイルをよく見ていくがそれらしきパラメータはない。しかし、偶然『URLNotCaseSensitive』というパラメータを見つけた。これを1に設定すると、URLの大文字小文字を無視して集計してくれる。400種類近かったURLが半分近くまで減って分かり易くなったので、今回はこれでよしとした。

カテゴリ: 技術系  | タグ: , ,  | コメント
2009/12/30 水曜日 | 投稿者: aqua

こんばんは、aquaです。

以前から頭を悩ましている問題の1つに、ビデオカメラで撮影した動画の再生方法がある。ビデオカメラはsony初のハードディスクモデルであるHDR-SR1で、全てAVCHD(m2ts)ファイルで保存してある。撮影した動画ファイルをSonyPictUtilというソフトでVAIOに取り込む。VAIOもノートPCなので、それほどハードディスクには余裕がない。sambaで利用可能なTeraStationへデータを移す事にしている。TeraStationはRAID5で冗長化されている上に、もう1台のTeraStationに同期しているので、安全性はかなり高い。しかしSonyPictUtilの再生ツールはネットワーク越しのフォルダを参照できない。

という訳で、SonyPictUtil以外での再生環境を調べてみた。klmcodec425.exeをインストールすれば、Media Player Classicで再生可能となるようだ。これで再生可能にはなったものの、マシンスペックが足りないせいか映像が途中で停止してしまう。他に良い方法がないか検討してみたところ、PS3のDLNAクライアント機能においてAVCHD(m2ts)の再生が可能とわかった。PS3はPSPgoとの連携(リモートプレイやbluetoothコントローラの転用など)も楽しめそうだし、金額的にもかなりリーズナブルになってきたので早速購入する方向で考える事にした。

ネットワークやら時刻やらの初期設定を終えて、まずは東芝レコーダRD-X9のDLNAを使えるか試してみる。特に何の設定もせずに録画データを参照することが出来た。VAIOでは再生不可だったHD画質の番組も再生可能。次にビデオカメラで撮影したファイルを参照出来るように、LinuxサーバでTeraStationをsambaマウントした上で、mediatombと呼ばれるDLNAサーバを構築した。今回はmediatombをmakeする形でセットアップしたが、特にはまりどころもなく普通にインストール出来た。尚、AVCHD(m2ts)を再生するにはmediatombの設定ファイルに追記する必要がある。

mediatombは構築したサーバの50500ポートにて、HTTP経由で設定を行う。Filesystemの中で公開したいディレクトリを選択し、右上の『+』ボタンで追加すればDLNAで参照可能になる。定期的に公開内容をリフレッシュした場合は、矢印に囲まれた『+』ボタンをクリック。『Scan Mode』を『Timed』に設定し、『Scan Interval』を適当な値に設定すればよい。ついでに、動画だけでなく写真画像やiPod用に作った音楽ライブラリなどもDLNAで公開した。各メディアともPS3から参照可能になり、動画再生だけでなく写真のスライドショーや音楽再生も可能となった。あ、ゲーム買ってないな・・・w

以下、参考までに。
mediatombのインストールと構築

SONY  CECH-2000A  新型プレイステーション 3/PlayStation3/PS3 【送料無料】 SONY CECH-2000A  新型プレイステーション 3/PlayStation3/PS3 【送料無料】

カテゴリ: 技術系, 製品  | タグ: , , , , ,  | コメント
2009/12/12 土曜日 | 投稿者: aqua

こんばんは、aquaです。

なんと技術系のネタは夏以来。もともとは技術ブログのつもりだったのに何てことだ・・・。過ごし易い季節だったので、外ばかり行ってたとはいえ。そんな訳で、すっかり寒くなってきたせいか家で何かをする時間が増えてきた。今回は特定の使い方をすると、kernel panicを起こす現行のkernelをupdateしてみる。昔はmakeやら何やらでえらい時間がかかったものだけど、今はyumで一瞬で終わる。しかし、yumはその時点で最新のものに更新してしまうので、インストールしたrpmをローカルに保持しておく。何かあったら、この実績の出来るであろうカーネルに再び戻せるようにするためだ。

さっそく以下のコマンドで更新対象カーネルを確認する。
yum list | grep kernel

今回は kernel.x86_64 2.6.9-89.0.11.EL のカーネルになる。特に問題なければ更新する。
yum install -y kernel*

/etc/grub.confに選択できるkernelが追加されているので、今回構築したカーネルを選ぶ。defaultパラメータに番号でしているするのだが、選択肢はゼロスタートで上から連番にIDが振られている。今回はCentOS (2.6.9-89.0.11.ELsmp)が2番目にあったので、『default=1』と指定する。ここまで出来たら再起動する。再起動後に『uname -a』で更新されたカーネルかどうかを確認する。
reboot

再起動後に以下の確認。
uname -a
Linux ns 2.6.9-89.0.11.ELsmp #1 SMP Tue Sep 15 07:08:59 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

今回、導入されたkernelのrpmは/var/cache/yum/baseにキャッシュとして残っている。これをローカルのyumリポジトリに登録しておく。yumリポジトリを構築するには createrepo と言うコマンドが必要なのでインストールしておく。
yum install createrepo

リポジトリ用のディクレトリを作成し、これをウェブサーバで公開しておく。今回は/yum/repos/centos4/x86_64というディレクトリを準備し、/yumをapacheで公開した。作成したディレクトリに先ほどのrpmを置き、createrepoして準備完了。
scp ns:/var/cache/yum/base/*.rpm /yum/repos/centos4/x86_64
createrepo /yum/repos/centos4/x86_64

このリポジトリを使う場合は、対象サーバの/etc/yum.repos.d/CentOS-Base.repoにてローカルサーバを見るように修正する。

[update]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

[update]
name=CentOS-$releasever – Updates
baseurl=http://repo.domain.com/yum/repos/centos$releasever/$basearch/

変更が終わったらリストを確認してみる。外のリポジトリを見た後だと、キャッシュが残っていてローカルのリストを取りにいかないので、以下のファイルを削除してキャッシュを無効にする。
rm /var/cache/yum/update/cachecookie

あとは前述した通りに、カーネルを更新すればよい。本当に簡単に出来るようになったね。

カテゴリ: 技術系  | タグ:  | コメント
2009/08/16 日曜日 | 投稿者: aqua

こんばんは、aquaです。

以前から気になっていたサーバ単位での冗長化を実現すべくロード・バランスの方法を検討してみる。一般的に考えて、自宅環境で実現可能なロード・バランスは、DNSラウンドロビンかLVSといったところ。専用ハードの導入は当然ながら無理。障害時のホット・スタンバイやダウンしたサーバの自動切り離しを実施したい場合はLVSが現実的である。うちのDNSはmydnsなので動的な変更も難しくはないが、機能の本質を考えてLVSを採用する。いまどきのlinuxであれば特に障壁もなく使えてしまう、というのもLVSを使い易くなった理由の一つである。

早速LVSの構築に入るが、CentOS 5系で必要な作業はipvsadmとkeepalivedのインストール。今回は実績のあるipvsadm-1.24とkeepalived-1.1.13を使用する。この2つの導入については特に何の問題もなく、いつものmake;make installでインストール出来た。ちょっと特殊な点としては、keepalivedに幾つかパッチを当てた。1つはkeepalivedのヘルスチェックを強化するパッチ(keepalived-extcheck.patch)と、もう1つはkeepalivedの設定ファイルをインクルードで別ファイル化できるようにするパッチ(keepalived-include.patch)である(幾つかのサービスを扱う場合、設定ファイルを別ファイルに整理できる方がベター)。

ロードバランスするための環境としてDSRを前提とする。DSRの特徴として戻りパケットをLB通さないで済む、というメリットがあるのも見逃せないが、それよりもサービスからの切り離しを容易に行えるのが採用のポイント。DSRを利用するサーバでは、バーチャルなループバック・インターフェースを使用するので、余計なarpを投げないように設定をする必要がある。実際にラウンドロビンの設定で動きを試したところ、ループバックVIPをダウンさせてもサービスから切り離されなかった事を除いて、あとは期待通りの動作をしてくれた。ループバックVIPの動きについては、よくあるLBとは異なる動きなので気を付ける事。

最後に簡単な負荷試験をしてみた。MySQLサーバ2台(ラウンドロビン)を使って負荷をかけてみたところ、軽く秒間3万クエリーは捌いていた。差し当たって性能面に不安点はなさそうだ。しかし、LVSサーバのリソースをウォッチしていると、リクエスト量に応じてCPUのsysは変動するが、usrは微動だにしない(常にゼロ)。何を以ってLVSサーバの限界点を見極めるかにもよるが、運用上において注意が必要そうだ。総論として、シンプルな使い方をするのであればLVS構築は非常に容易なので、積極的に使用を検討すべきである(但し、運用面で幾つか注意点あり)。

カテゴリ: 技術系  | タグ: , ,  | コメント
2009/04/30 木曜日 | 投稿者: aqua

こんばんは、aquaです。

ブログを書き始めてから9ヶ月。どうせ途中で飽きるかと思っていたけど、意外にもまだ続いている。記事を書く度に、誘導キーワードが増えていき、PVが伸びるのがモチベーションに貢献している。その割りにさぼっていたのがPV解析だ。まあ趣味の範囲だし、SEOやら被リンク対策など何もしていないので、大して意味はないんだけど。一応、wordpress上で動作するStat Traqというプラグインは入れているが、何となく取れている数値は一部怪しい気がする。自分がアクセスするソースIPを対象から外していないせいかもしれないが。

と言うわけで、アクセスログ解析。今までのツールに合わせてLAMP構成で探してみたが、ちょっと求めているものとは違うものしか見つからない。結局、新しいものを探すのは諦めて、使った事のある解析ツールから選ぶ事に。HTML生成型として、以下の一般的に人気のあるツールがある。

  • analog
  • webalizer
  • awstats

今まで、analog → webalizer → awstats とツールを変えてきた。awstats以外は今となっては古いバージョンしか使っていないので最近のものについては知らないが、当時はリファラ周りの解析が不足していた。今回もまずはawstatsを使う事に。以前、使っていたときの不満としては以下。

  • URLEncodeしたURL内の日本語がデコードされない
  • リファラ上の検索キーワードが検索サイトによっては文字化けする
  • 日本語化がちょっと面倒

とりあえず、本家の最新版を落として構築してみる。落としたアーカイブを解凍して/usr/local辺りに配置。tools配下に存在するawstats_configure.plに設定されているパスを自分の環境に合わせて修正する。そして、このファイルを実行するとコンフィグを生成するか聞かれるので『y』と答える。次にサイト名を聞かれるので、それも正しく答える。最後にコンフィグを配置するディレクトリを聞かれるので、自分の環境に合わせて答える。すると、該当ディレクトリに『awstats.ドメイン名.conf』というコンフィグ・ファイルが出来上がる。うちの場合、apacheのアクセスログをデフォルト名から変えているので、それに合わせてコンフィグ・ファイルを修正する。あとは、以下のコマンドですぐにデータを生成できた。

${AWSTATS}/tools/awstats_updateall.pl now

データ生成後は以下のようなURLでawstatsのHTMLインターフェースにアクセスできる。

http://ドメイン名/awstas/awstats.pl?config=ドメイン名

軽い気持ちで作ってみたところ、HTMLの日本語化は普通に行われていた。リファラの検索文字列もきちんと日本語で表示されている。唯一、URLのURLEncodeは相変わらずエンコードされたままの表示。但し、firefoxの場合はURLをフォーカスするとステータスバーに日本語に変換されたURLとして表示される。HTML上でも同様に表示された方がわかりやすいが、わからないよりは遥かにまし。awstatsで求めていた機能が全て満たされてしまったので、今回もawstatsで解析をする事に決定した。

カテゴリ: 技術系  | タグ: , ,  | コメント