作成者別アーカイブ:

wgetを活用してサイトの生死確認を行う – wget サーバ管理

 以前紹介したwgetコマンドだけど、これがとても便利。
 通常のGET以外にPOSTでデータを送ることも出来る。

例えば、

WORDS=wget -q -O - --post-data 'loginid=hoge@piyo&password=hoo' http://hoge.piyo/login|grep ServersMan@VPSにログインありがとうございます|wc -w
if test $WORDS -gt 0; then
echo ‘HOGEサイトに正常にログインできました。’|mail -s “hoge-service health status[Good]” “ayu@hoge.piyo” — -f “system@hoge.piyo”
else
echo ‘HOGEサイトへのログインテストに失敗しました。
システムに不具合がある可能性があります。’|mail -s “***** hoge-service health status[Bad] *****” “ayu@hoge.piyo” — -f “system@hoge.piyo”
fi

みたいなシェルを作ってcronで回しておく。
 -Oオプションは取得した内容を標準出力する。 –post-dataで、この場合ログインID&パスワードを送信した結果に、特徴文字列(ServersMan@VPSにログインありがとうございます)をgrepで探して、wc -wコマンドで該当文字列の単語数をカウントした結果をWORDS変数に入れている。
 で、if test $WORDS -gt 0(greater than 0=0より大きい)が成立すれば、Goodのメールを送信し、成立しなければBadステータスのメールを送信する。
 Goodの送信をナシにして、Bad時にケータイに送信するような感じにしてcronで毎分回しておくと、サイト不具合を検知しやすいだろう。

(436)

カテゴリー: サーバ設定 | コメントをどうぞ

通常のファイルインプットタグを隠して違うボタンを表示する – html / css

通常のファイルインプットタグは

<input type=’file’ id=’file_up’ enctype=’multipart/form-data’>

こんな感じ。

jQueryを使って、ファイル選択時にアップロードさせようとすると、

$(“#file_up”).change(function(){
$(this).upload(
‘/upload’,
‘type=image’,
function (res) {
$(“#preview”).html(“<IMG SRC=’kotei.jpg’>”);
},
‘text’
);
});

みたいに、ボタンのチェンジイベント(選択ファイル名が変化)にバインドして、jQueryのUpload機能でアップするようにするんだけど、ファイル選択とファイル名の表示は、即時アップにはあまりイメージが合わない。
なので、このタグを消して、別のボタンでキックしたい。

<input type=’button’ id=’file_up_btn’ onclick=’document.genElementById(‘file_up’).click();’ value=’アップロード’>

みたいなボタンを作って、こっちのボタンが押されたら、ターゲットのInputタグをキックするという動作をさせる。
aタグで

<a href=’javascript:void();’ onclick=’document.genElementById(‘file_up’).click();”><img src=’button.jpg’></a>

イメージをセット
みたいにすると、画像ボタンを利用することも出来る。

で、本体のタグ表示が邪魔なので消したいんだけど、style=’display:none;’にすると、ボタンを押してもファイル選択ウィンドウが表示されなくなってしまう。
で、常套手段のstyle=’text-indent:-9999px;’にして画面外部に飛ばそうとすると、Chromeでファイル選択ボタンだけ飛んでいって、ファイル名欄が残る上に、本来ボタンがある空白をクリックするとファイル選択が開いてしまう。
じゃあ、どうしようと思ったら、divにstyle=’text-indent:-9999px;’をつけてサンドイッチしてやると隠すことが出来た。 でも、微妙なスペースは残るけど、まぁ、このぐらいで妥協しておこう。

(841)

カテゴリー: jQuery | コメントをどうぞ

nfsデーモンが動かない – OpenVZの仕様 nfsd smbd 繋がらない

ServersMan@VPS
の仮想化に使われているOpenVZの仕様で、子OSではnfsdやsmbd(NFS, SAMBAのサーバ)が動作しない。
こればっかりはシステムの仕様なのでどうしようもない。
共有ディレクトリを作っておいてrsyncとかwgetとかで複製しあうとか、クライアントにはなれるので、別の専用サーバとかVPSに繋いで共有するしかない。

(219)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

yumで入れたtomcat5のlogrotate – logrotate yumパッケージのバグ

 yumでtomcat5を導入すると、logrotate.dにtomcat5っていう設定ファイルが出来ている。
 しかし、これがお馬鹿で仕方ない。
一行目
/var/log/tomcat5/* {
logrotateは、このパスに一致するファイルをローテーションする。
 通常は、ファイルAに対して、ファイルA.1.gz、ファイルA.2.gzみたいに世代バックアップが出来ていくのだけど、2回目にlogrotateを回したときにはファイルA.1.gzに対してローテートが働いて、ファイルA.1.gz.1.gzが発生してしまって、以下ループ。 1.gz.1.gz.1.gz.1.gz.1.gz・・・とゴミファイルが沸き続ける。
 ぐっちゃぐちゃになってしまうので、logrotateの設定には注意しよう。

(262)

カテゴリー: サーバ設定 | コメントをどうぞ

cronが動かない ー cron run-parts namespace

 cron.dailyとか、cron.hourly と言ったディレクトリがetcの下にあって、日次や毎時バッチ置き場になっているんだけど、実は自動実行されるファイルの名前にネームスペース制限がある。
 正確に言えば、cron.???lyのディレクトリは、crontabでrun-partsで実行している。
 なので、ネームスペース制限も正確にはrun-partsの制限で、debianだと英数のみ、Serversman@VPSのベースのCentOSはRHELのクローンなので、一部の記号で終了するファイルだけ禁止。
 debianだとhoge.shやpiyo-batchは違反するので実行されない。
 通常のcron設定ファイルはr属性が付いていればいいけど、このディレクトリに置く場合はx属性が必要なのも忘れてはいけない。
ささいな話だけど、一応メモ。

(510)

カテゴリー: サーバ設定 | コメントをどうぞ

Webサイトのドメインを移動する – mod_rewrite

SEO的目的であるとか、欲しかったのが取れたとか言う理由でWebのドメインを移動することがある。
しかし、単純に移動させてしまうと、それまで使っていたリンクであるとか、サーチエンジンの順位であるとかでマイナスが発生してしまう。
そんなときに便利なのがApacheのmod_rewriteである。
.htaccessファイルで

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(blog\.hogehoge\.piyo)(:80)? [NC]
RewriteRule ^(.*)$ http://serversmanvps.xn--ockc3f5a.com/$1 [R=301,L]
</IfModule>

 みたいに、旧サイトに設置しておくと、http://blog.hogehoge.piyoに来たリクエストをHTTP応答コード301(恒久的移動)を添えてhttp://serversmanvps.xn--ockc3f5a.com/に飛ばしてくれる。
 Ruleの(.*)(全部引っかかる正規表現)とアドレスの最後にある$1(最初にヒットした部分をくっつける)によって、旧サイトの/page/2とかの部分をコピーしてくっつけられるので、従来のリンクはそのまま新サイトへのリンクとして扱われる。
 301コードを掲示しておくと、検索エンジンが移動したことを認識してくれるので、そういった部分のマイナスが押さえられる。

WordPressサイトの.htaccessには
# BEGIN WordPress
# END WordPress
でくくられた部分にmod_rewriteの設定があるが、この範囲はWordpressの設定を変えると書き換えられてしまうので、このコメントの外に書き足す。

(468)

カテゴリー: サーバ設定 | コメントをどうぞ

古いファイルを自動削除する – tmpwatch

 作業の一時ディレクトリであるとか、バックアップデータであるとかで一定以上古くなったファイルを削除したいと言う事が良くある。
 そんなときに便利なのがtmpwatchと言うコマンド。
tmpwatch -m 720 /var/www/upload/tmp
 みたいな感じで使う。

 この場合、-mはmodifiedタイム(最終変更時間)について指定して、720時間(30日)経過した/var/www/upload/tmp以下のファイル・ディレクトリを削除すると言う指定。
 シェルでfindしてrmするみたいな事を書けば同じ事が出来るけど、こっちの方が手っ取り早い。

 デフォルトのServersMan@VPSだと、cron.dailyにtmpwatchと言うスクリプトが放り込んであって、日次で回っているので、日単位の処理ならここに追記しても良いだろう。 時単位で削除したい場合はcron.hourlyに放り込もう。

(564)

カテゴリー: サーバ設定 | コメントをどうぞ