うどん

久しぶりにうどんを食べた。いつもは焼肉ばかり食べているウエストで、今回うどんを食べた。1年ほどぶり。うーむウエストのうどんはうまい。焼肉の方はお客さんが少ないが、うどんは多い。なので、ウエストはやっていけるのかな。ウエストのうどんの具はいろいろあるが、面とつゆがおいしい。かえだまも出来る。めんつゆはお持ち帰りもできる。なかなかいいシステム。

ぼろサーバ改め新サーバの作成-その6

■CGI(Perl)を動かす
 なんとか、修理後、サーバは安定してきたので、引き続き、サーバの設定。今回はCGI(Perl)が動くようにしてみる。
 PHPやJavaが主流の今日、CGI(Perl)は古めかしいが、一応未だにあちこちでカウンターやらなんやらを使ってるので、ないとやっぱりちと困る。
 まずは、Apacheのconfファイルをいじって、CGIの設定を行う。

1.Options にExecCGIを追加

# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing “/” apply to ScriptAlias directives as to
# Alias.
#

ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”

#
# “/var/www/cgi-bin\” should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory “/var/www/cgi-bin”>
  AllowOverride None
  Options ExecCGI     <-ここを修正
  Order allow,deny
  Allow from all
</Directory>

2.CGIの表示で文字化けがひどい場合
 WindowsからCGIのスクリプトをアップしている場合は、表示言語の指定をスクリプトの指定( META http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS” など)に優先させるには「addDefaultcharset UTF-8」が有効になっていたら無効にしてみる。HPが文字化けする場合もこれを試す。

#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default. To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
# AddDefaultCharset UTF-8  <-行の先頭に#をつけてコメント化し無効にする

3. AddHandler設定を有効化

AddHandler設定を有効化して、CGIスクリプトがハンドルされるようにする

#
# AddHandler allows you to map certain file extensions to “handlers”:
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add “ExecCGI” to the “Options” directive.)
#
AddHandler cgi-script .cgi  <-ここの行の先頭の#をとる

4.シンボリックリンクを張る
cgi用に/usr/local/bin/perlでcgiが記述できるようシンボリックリンクを張る。一般的に配布されているCGIスクリプトは、perlの場所が、/usr/local/bin/perlで先頭行に書かれている事が多い。ここを修正してもいいが、そのまま使えるように、シンボリックリンクを張っておく。

コマンドラインで、

ln -s /usr/bin/perl /usr/local/bin/perl

を実行する。

5.CGI実行時Internal Errorが多発してうまく実行できない場合
 主にこれは、WindowsとLinuxの行末の改行コードの違いによることが多い。サーバ上で、きちんと改行コードをLinuxに指定して保存しなおす。
または、Linuxでの改行はコード LF のみなので、DOS(Windows)上で作成したcgiスクリプトの先頭行の、

#!/usr/bin/perl ← このあとにCR+LFが入ってエラーとなる。なので、
#!/usr/bin/perl —  ← を追加してオプション指定と勘違いさせると、うまく動くこともある

6.動作テスト
cgi-binに、次のPerlのテストスクリプトをおいてテスト。

#!/usr/bin/perl
##
## printenv — demo CGI program which just prints its environment
##

print “Content-type: text/plain; charset=iso-8859-1\n\n”;
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|”|\\”|g;
print “${var}=\”${val}\”\n”;
}

上記ファイルを、vi等で作成し、test.cgiなどのファイル名で保存。
実行権限(パーミッション)を与えておく

# chmod 755 /var/www/cgi-bin/test.cgi

LAN内の端末に移動し、ブラウザを起動、サーバのIPアドレスにつづけて/cgi-bin/test.cgiへアクセスしてみる。

DOCUMENT_ROOT=”/var/www/html”
GATEWAY_INTERFACE=”CGI/1.1″
HTTP_ACCEPT=”text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8″
HTTP_ACCEPT_ENCODING=”gzip,deflate,sdch”
HTTP_ACCEPT_LANGUAGE=”ja,en-US;q=0.8,en;q=0.6″
HTTP_CONNECTION=”keep-alive”
HTTP_COOKIE=”PHPSESSID=tijh4jn3dmo433un1kh49ievo0; wfvt_1999777401=5440b1d12f101″
HTTP_HOST=”www.ekbt.net”
HTTP_USER_AGENT=”Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36″
PATH=”/sbin:/usr/sbin:/bin:/usr/bin”
QUERY_STRING=””   

以下略

などと、CGIスクリプトが実行され、結果が表示されればOK。
その他、日本語表示を含む時刻を表示するサンプルCGIスクリプト

#!/usr/bin/perl
##
## printenv — demo CGI program which just prints its environment
##

$time = time; # time関数は1970年1月1日0時0分0秒から現在までの秒数を返す
$jtime = localtime(time); # 日本時間のget
$gtime = gmtime(time); # グリニッジ標準時間のget(日本時間と9時間差)

print “Content-type: text/html; charset=utf-8\n\n”;
print “testjp.cgi“;
print “1970年1月1日0時0分0秒からの現在までの秒数….$time
“;
print “<hr>”;
print “現在の日付時刻は

“;
print “日本時間:$jtime
“;
print “標準時間:$gtime
“;
print ““;

※Content-type: text/html; charset=utf-8は、サーバ本体で作成している場合。もしWindowsのShift_JISファイルをアップしたら Content-Type\” content=\”text/html; charset=Shift_JIS とする。

※cgiが実行できない場合、実行権限(パーミッション)の設定を確かめる。SELinuxを使用している場合、強制モードになっていたら、それを許容(SELinuxを切る、警告は表示される)にしてみる。
※許容でもダメなら、これはSELinuxのせいではない。ディレクトリやファイルのパーミッションやディレクトリ構造などをもう一度確認してみる。

※cgi実行時、cgiからのファイルの書き込みが出来ない場合がある。SELinuxを使っている場合、強制モードになっていたら、それを許容(SELinuxを切る、警告は表示される)にしてみると、書き込みOKとなる場合もある。
これで実行書き込みできれば、cgiよりの書き込みファイルがSELinuxの設定で書き込めない可能性がある。
cgi-binのディレクトリをhome以下に移動して、書き込まれるファイルのSELinuxの設定SELinux Contentをhttpd_user_rw_content_tにしてみる。
cgi格納フォルダーは、httpd_user_script_exec_tに
gifの画像データの格納フォルダーは、httpd_user_content_t、中のデータも同様にする。

カバーを作った

WebCam、外にむき出しではかわいそうなので、ウエットティッシュのプラスチックの空き箱でカバーをつくってみた。見た目が、最初は目玉おやじ風だったが、PLフィルターもビルトインして、いかにも監視カメラ風になった。

内臓したLogicool (Logitec)のWebcam C250

ipadそっくりさん

 やはり出た!!ipadそっくりサン。以前から中国国内ではあったようだが、それはWindowsベースのようだった。今回の物はluvpadと言って、マウスコンピュータが販売する。OSはAndroid2.2による最新のタブレット環境、ポータブルマルチメディアデバイス向けに設計されたNVIDIAR Tegra・250を採用している。
当初は9月末から販売するようだったが、10月末に延期されている。どうなるかな。

WebCamをつけた

最近駐車場で、車にいたずらされるので、WebCamで監視カメラを作ってみた。
まず、WebCamはなんにしようと迷ったが、最近はHD画質まで撮れるものもあるようだ。しかし、画質は良くても、動画データの負荷が高いのも困るので、昔ながらの30万画素のものにした。価格も安い2,000円を切っている。も少し出せば130万画素のモデルもあるようだが...。
メーカーも色々だが、Logicool (Logitec)のWebcam C250にした。

早速設置。
っと、これはもともと室内でテレビ電話などを想定しているらく、露出とゲインを精一杯調整しても屋外ではあかるすぎるようだったので、あまったカメラ用PLフィルターを付けてみたところ、なんとか表示される。自動で露出もコントロールできるのだが、屋外では、明るすぎ自動の範囲をはずれるようで、画面が白とびする。もっと濃いNDフィルタなどをつければいいのだろう。まあそのうちに。
付属のカメラ用ソフトはなかなか良い、特に、モーションデテクト機能はなかなか役に立つ。カメラの前をアゲハ蝶が飛んだのも捉えた。

WebCamなかなか面白い。今後も色々やってみよう。
動画の画面はこんな感じ

モーションデテクトの設定はこんな具合

サーバ停止

この前から、作っていた。ぼろサーバ改め新サーバが、突然止まった。MySQLにブログのデータを登録していた時、突然ハング。リセットも効かなくなった。強制的に電源を切って、再起動させようとしたところ、今度は起動しない。CPUファンやHDDは通電して回るようだが、電源のLEDすらつかない。大変なことになった。マザーかCPUかどちらかか、もしくは両方飛んだようだった。
仕方が無いので、代替えでマザーとCPUを用意した。もともとは、ファイルサーバ用にと計画していた組み合わせだ。

・CPU INTEL Celeron 430 [1.80GHz/L2:512kB] Conore-L FSB:800MHz LGA775[35W] リテールBOX ¥3,480

・MB BIOSTAR G31-M7 TE Intel G31+ICH7採用 GMA 3100 VGA統合 MicroATXマザーボード ¥4,269

これまた、モデル末期の超低価格品の組み合わせ。なにしろメモリーがPC2なので、これをそのまま使いたいのと、サーバなので、余計な機能はいらないなあとBIOSTARの基本機能のみのものにしてみた。ちょっと時代遅れでもあるが。
メモリーはそのまま流用。これは問題なかった。HDDもそのままでも起動して、問題なさそうだったが、なにしろデータ書き込み時飛んだので、なんらかのダメージがあって、あとあとそれで問題が起こっても困るので、500GBのHDDは4,000円前後と安いので、ついでに交換した。なので、Fedora13からまたインストールしなおしになった。MySQLやPHPまでは設定していたので、ここまでは長い道のりだ。
消費電力は、起動時最大0.6A-0.5A、稼働平均0.4Aで、以前と殆ど同じか、負荷がかかった時はすこし低消費電力になったようだ。
BIOSTARにしたせいで、lm_sensorsでマザーの情報がとれなくなった。どうも対応できないみたい。CPUの温度らしきものは、なんとか出るが、まあしかたがないか。直接測ってみてもそれほど高温にはならないようだ。
原因はなんだろうと考えてみたが、どうもマザーがあやしい。そもそもこの壊れたマザーASUSのM4A785D-M、Phenom6コア最速CPUをがんがん動かしていた。また、turbokeyという簡単にオーバークロック出来る仕組みも持っている。また、PS2キーボードとPS2マウスが共有で1つになっている。まあ、最近はUSB経由でキーボード・マウスを使うことが多いので、いいのだが、たまたまPS2キーボードを使っていた。どれが、直接の原因かは分からないが、機能満載のMBでどれかがうまく動作しなくなったのだろう。となるとCPUは生きているかもしれない。まあそのうち、原因の究明もしよう。