サーバー管理の最近のブログ記事

セキュリティの関係で WEBサーバーとWEBサーバーからしかアクセスできないDBサーバーの構成で・・・
一部プログラムをDBサーバー側に置く必要があるがDBサーバーには直でつなげないから
WEBサーバーに一度アップしてsftpでコマンド毎回たたいて送ってたけどメンドいのでlftpを使ってみた。

lftpのmirrorを使って完成~♪

#!/bin/sh

LOCAL_DIRNAME=$1
REMOTE_DIRNAME=$2
USERID=$3
PASSWAD=$4
FTPSITE=$5

if [ -d $LOCAL_DIRNAME ]
then
lftp <<- END
open -u $USERID,$PASSWAD $FTPSITE
lcd $LOCAL_DIRNAME
cd /$REMOTE_DIRNAME
mirror -Rv
END
else
echo "No such directry."
fi

けどなぜか転送できていないケースがある。
毎回じゃなくて短いスパンで何度も更新してると効かないことがある。
短いスパン+ファイルサイズが変更されていない場合に起きるみたい。

更新された、、、って判定条件がタイムスタンプとファイルサイズの両者なのかな?
ってことで--ignore_sizeオプションを入れるも変化なし。。。

なんでやねん?
っていろいろ調べた末 どうもタイムスタンプが悪さをしているみたい

ようは新しいかどうかローカルとリモートでタイムスタンプ比較しているわけだけど
比較の際にローカル時刻とGMTの時刻を比較してたみたい。


以下を追加したら無事毎回転送されるようになりました。
set ftp:use-mdtm no
set ftp:timezone -9


これ、lftpのバグって言ってもいいレベルじゃない?
結局2時間ぐらい悩んだわけだけど だったら自分でファイル転送プログラム書いた方が速かった気がするw
まぁ次回から役に立つわけでよかったけれど・・・


ちなみにlftpでmirrorするのは今回が2回目なんだけど 前回はこんなオプション入れていないから・・・
こっそりなおしておきました。
まぁ前回はバックアップ目的だったから実行が1日1回とかだから上のバグ条件に当てはまるケースはあまり多くはなかったとは思いますけどね。

現在運用中のWebサービス。
最近バグ報告もあがって来ないからほぼほったらかしで 記憶から消えかけてたんだけど・・・
突然 エラーになる、、、って連絡が(汗

ここ1ヶ月いじってないのになんでやねん!
なんかで間違えて更新しちゃった?

試してみると確かにエラーになる。

むむむ。。。
何かで間違えて更新しちゃった?



ある案件の兼ね合いで国内最大手の某S社で専用サーバーとSSL証明書の取得を申し込みした。

SSL証明書なんて海外の安いところ行けばシングルルート証明書でも30ドルとかで取れるけど お客さんのとこの稟議通すの面倒そうだから 一緒にサーバー屋さんで申し込むことにしたのだけれど・・・

申し込みの際に サーバーの申込書、とSSL証明書の申請のための申込書でデッドロックw
SSL証明書の1項目で証明書の送付先のメールアドレスって項目があってそれは
admin@取得するコモンネームのドメイン じゃないといけないらしい。
まぁadmiistrator@とかwebmaster@とか選択肢はあるけど とりあえずこのドメインのメールアドレスが必要・・・
けどそのドメインが使えるようにする専用サーバーの申し込みをしているわけだから当然今の時点でそのメールアドレスが使えるわけもなくw


うん。まぁ おとなしくサーバーの申し込みだけ先に完了させてメールアドレスを作成し その後SSLの申込書を出せばいい話なんだけど
S社さんはふつうに同時に出せ~って書類送りつけてきて その後も書類不備ですって
このメールアドレスのことで指摘してきてるんだけどこの矛盾に気づいてないのかなぁ?w
新人か2年目の営業さんって感じだったから本気で気づいてないのかもしれない。。。

とか連休中 メールチェックしてたら笑えるメールが入ってたのでこうして書いてみた(笑)
あるサーバーにあるデータを別のサーバーに転送するプログラムを作った。

といってもたいそうな物じゃなくて lftpのmirrorコマンドたたくだけ~って
作ったと言えるかどうか怪しいレベルのプログラム。

うちのサーバーでテストしてきちんと動くしいざ本番♪と 本番環境に投入したらなぜかエラーになる。。。
Passive modeの問題か?ってオフにするも関係ないし ログインには成功してて
cdコマンドは使えるけど lsとか putとかをすると 失敗してリトライに30秒待ってね、みたいなメッセージが出てきて・・・

ユーザー名がやたら長いせいか?とかいろいろ考えたけどわからず・・・
しかたないのでデバッグ情報出してみる
lftpに入ってから debug 10 とか打ち込み

出るわ、出るわ。
情報がわさわさ出てくる(笑)


そんななかで怪しいのが
WARNING: Certificate verification: Not trusted
WARNING: Certificate verification: The certificate's owner does not match hostname '*******.com'

ようするにSSLで接続してるけど 接続先のドメインとSSL証明書のドメインが 違ってあやしいから通信やめるね、ってことらしい。

なるほどね。

ということでSSLをオフにしてみる
set ftp:ssl-allow off

これで無事アクセスできるようになりました♪


ちなみにこのエラーを無視して通信するってオプションもありそうだけど 探すのめんどいんでまた今度(笑)
うちが外向けに公開しているサーバーは2台ある。
メインに使っているのが国内においているWindows2003Serverのサーバー
もう一つは国外においているLinuxのサーバー

Windowsのサーバーを使っていると え?ってことを言われることが多いので
なんでWindowsサーバーを使うのか?
書いてみたいと思う。

第一は管理が楽だから。
別にLinuxが使えないわけじゃない。Linux使うときはwebminとか一切使わず
SSHでつないでコマンドでひたすら打ち込んでいるし Linuxだからってできないことはないと思う。
1サーバーで1つのサイトを管理するとかならLinuxでもいいと思う。

けど実際は1サーバーで何十のサイトを管理している。
そうするとGUIベースのWindowsの方が管理効率が抜群にいい。

Linuxでhttp.confでVirtualHostの設定を延々と何十も書いて
このIPはどことどこのサイトで使って CGIの設定は・・・とか
書いてると頭がこんがらかってくる。
まぁ必要ならちゃんと書くけど 後から見たときにファイルを片っ端から見ないと状況が把握できない。
その点Windowsだと管理画面一発でわかるし 修正もそこからできるのでかなり楽ちん。


次にユーティリティが豊富なこと。
Linuxでも昔からの知恵のノウハウはググればたいてい出てくるけど
ちょっと複雑なことしようとすると自分でプログラム書くしかない。
プログラム書くことはできるけど やっぱり面倒。。。

WindowsだとたいていのものはフリーソフトでそろってるからVectorあたりで
適当に検索すれば大概のことはできてしまう。
たとえば定時バックアップを取るとする。
Linuxだったらcp とか使ってバックアップコマンドを作ってそれをcronに登録、
ぐらいまでならまぁそんなに苦でもない。
けど 差分を取って10世代まで管理して バックアップ取った物を別サーバーに転送して・・・とかまでやろうとしたら 1日がかりで書くはめになる。。。
バグのリスクも高いし・・・

その点Windowsならそういうソフトがすぐ見つかるからタスクに登録してやれば終了。
人柱がたくさん立っているから大きな問題起きることはまずないし・・・

Windowsはセキュリティ的に甘いからLinuxの方が、、、って声も聞くけど それはもう過去の話だと思う。
もちろんWindowsUpdateにアンチウィルスソフトやファイヤーウォールといった物は必要だけれど 必要な設定さえしていればもう大問題が起きる危険はかなり低いと思う。


ま、自分がWindowsサーバーをメインに使ってるのは初めてまともに組んだプログラムがaspだったからってのもかなり大きいのですが(笑)
けど今や数百万PV/日のサイトでもWindowsサーバーが使われることもよくあるので
あまりWindowsサーバーアレルギーを出さずに一度試してみてください。
管理しているサーバーの一つがさっきまで2時間ほどダウンしてたのであわてて再起動依頼。
サーバーがダウンしてpingが通らなくなったら携帯電話にメールが来るように設定してたんだけど あいにくwwwだけ死んで他は生きてるってとっても微妙な状態だったのでpingは通ってしまいエラー通知が来ない。。。

先日はお名前ドットコムDNSのせいでサーバーは生きてるけどDNSの名前解決ができずアクセスできない、って自体も起きたからサーバーのプロセス自体を監視してもダメだし
しかたないのでwebサービスが生きてるか確認するコードを組んでみた。

まず監視対象のサーバーにそれぞれ以下のファイルを設置

ping.txt

当然アクセスすると「pong」とだけ表示される


次に監視サーバーに以下を解凍して出てくる2ファイルを設置
(例:/var/www/html/webping/以下に設置)
webping.zip

pinglist.listには上記で設置したping.txtへのURLを改行区切りで列挙する

とりあえずWEBブラウザかコマンドラインで実行してアクセスして試してみる
またpinglist.txtにわざと誤ったURLを記述しエラーメールが届くか確認する。

テストが終わったらcronに登録して5分おきに実行する

#crontab -e
*/5 * * * * php /var/www/html/webping/webping.php


障害発生すると障害発生するまで延々とメールが送られてくるわけなのでご注意。
3回送ったら1時間起きとかのルーチンも入れようかと思ったけど
使うの自分だしめんどいんでまた今度。

2011年9月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30