Webアプリを創る 😊クリエイティブWeb

カテゴリー: クラウド・サーバー

Intel D510MO + Windows 7 で自宅サーバー

2010年4月18日

自宅サーバーとして Dell Inspiron Mini 10v を使用していましたが、Mini 10v は、ファンレスでかなり熱くなるので今の設置場所では夏を乗り切るのは無理だと思って、本来のネットブックとして利用することにしました。そのかわりに、ATOM マザーボートである Intel の D510MO を使ってマシンを作成しました。コスト的には、全部で5万円以内でできたのですが、その40%弱を Windows 7 Professional が占めるということで Windows の価格の高さを痛感し是非マザーボードなみの値段にしてほしいと思いました。Home Premium にすれば少しは安価になるのですが、Professional はリモートデスクトップが使えるため、メインマシンですべての作業ができ作業効率がいいし、サーバーにはディスプレイもキーボードも普段は不要なので場所をとらないというメリットを考えれば、やはり Professional ということになってしまいます。 今回の自宅サーバーの構成は、以下のとおりです。

  • マザーボード(CPUを含む):Intel マザーボード D510MO
  • ケース:AOpen Mini-ITXケース S110 BLACK
  • メモリー:DDR2 800 2GB
  • HDD:2.5インチ SATA 250GB HTS545025B9A300
  • ファン:ainex CF-60SS
  • OS:Microsoft Windows 7 Professional 64 ビット DSP版

組み立ては比較的簡単でしたが、問題点としては、S110 の電源は20 ピンのみで、一方 D510MO の電源のコネクターは24ピンなのですが、D510MO の消費電力は小さいので問題になることはないだろうということで、そのまま接続しています。また、S110 、D510MO はどちらもファンレスなのですが、CPU のヒートシンクとケースの間がちょうど10mmの隙間があるので、排熱対策として ainex CF-60SS を差し込むことにしました。

性能はどうかというと、ATOM D510 は Dual Core なので、Mini 10v よりは処理が早くなり、普通に使うのであればそれほどストレスが感じない程度に動作するので、自宅サーバーとしてはとりあえず処理能力に問題はないし、消費電力がかなり少ないことを考慮すれば、自宅サーバー用には最適だと思います。

以下の図が、D510 を S110 のトレイに取り付けて配線した時の状態で、HDD はトレイの下側に取り付けます。

image

最後に、Windows を USB フラッシュメモリーを使ってインストールする場合のメモをしておきます。

  • [スタート] メニューで「diskpart」と入力して、DiskPart ユーティリティを起動します。
  • 次に、list disk コマンドを実行して、ドライブの状態を確認し、USB メモリーのディスク番号をメモします。
  • select disk x(ディスク番号)コマンドを実行して、USB メモリを選択します。x はディスク番号で上でメモした番号です。
  • clean コマンドを実行します。
  • USB メモリーの内容が消去されたら、create partition primary コマンドを実行します。
  • パーティションをアクティブにするために、active コマンドを実行します。
  • 次に、ドライブをフォーマットする必要があります。それには、format fs=fat32 quick コマンドを実行します (quick で、処理を迅速化するためにクイック フォーマットを実行するように指定します)。
  • USB メモリーにドライブ文字を割り当てて、Windows エクスプローラーから簡単にアクセスできるように、assign コマンドを実行します。
  • 次に、Windows 7 インストール DVD の内容をすべて USB キーにコピーします (単純なドラッグ アンド ドロップでかまいません)。
  • Windows 7 をインストールするシステムにUSB メモリを挿入し、システムを起動します。

以上は、Technet の英語版の翻訳です。日本語版のTips では、「コピーが終わったら、E:\Boot\Bootsect /nt60 E:\ コマンドを実行します。」となっていますが、この処理をしなくても動作します。今使っているメインマシンが32ビットですが、32ビット版のマシンで64ビット版のDVDを使って上のコマンドを実行するとエラーが発生してしまいます。メインマシンに64ビット版をインストールしないといけないのでは困ったなと思ったのですが、その処理をしなくても大丈夫だということがわかりほっとしました。

N2 CMS のページを作成しました

2010年2月6日

N2 CMS のページN2 CMS で作成してみました。N2 CMS は、スウェーデンの Cristian Libardo 氏が開発した軽量の CMS で、レスポンスがよく、WebForm だけでなく ASP.NET MVC にも対応しています。軽くて画面から直ぐに編集できるなど優れた部分がたくさんある CMS なので、ASP.NET で CMS を利用したい場合には、Umbraco や mojoPortal と同じように検討の対象にしてください。

ActiveWeb でのインストールの手順は、以下のとおりです(現在は、ExpressWeb に移転)。

1.N2 CMS のダウンロード

Codeplexのダウンロードのページから、WebForms Templates Starter Kit (with C#/VB.NET integration project)をダウンロードして、展開します。

2.Web ディレクトリの作成及びアップロード

ActiveWebのコントロールパネルで、Web ディレクトリを作成(作成の方法はこちら、ここでは、n2 とします)します。設定は、デフォルトのままで問題ありません。作成したディレクトリに展開したファイルをアップロードします。

3.パーミッションの設定

コントロールパネルのファイルマネージャを使用して、App_Data と upload のディレクトリに対して、Plesk IIS User と Plesk IIS WP User のユーザーに編集を許可にして、SQLite のデータベースへの書き込みできるようにするとともに、N2 CMS の管理画面から画像等のファイルをアップロードできるようにします。

4.ディレクトリにアクセス

ブラウザーでインストールしたディレクトリ/n2/にアクセスすると、以下の画面になります。installation wizard をクリックします。

image
以下の図のように、インストール・ウィザードが起動されます。アドバイスのとおり step 4 のRoot node のタブをクリックします。

image

Root Node と Start page の設定をします。

image

step 5 でEdit をクリックすると、以下のような管理画面が起動されます。管理画面は、/n2/edit にアクセスすることで直接起動できます。

image

5.Web.config の設定

以上のとおり、n2 cms は、Web.config を設定しなくても動作します。管理画面へは、ユーザー名:admin パスワード:changeme でログインできます。デフォルトのユーザー名とパスワードは、Web.config に記述されているので、変更をしておきます。また、データベースとして SQL Server や MySQL を使用したい場合は、Web.config の接続文字列を修正することで設定できます。

6.MVC版のインストール

以上の説明では、WebForm 版のインストールの手順になっています。実際には、N2 CMS のページは、MVC 版を使って作成しました。MVC 版のインストールは、N2 CMS のバージョン 1.5 では、プレビュー版で、現在開発中のソースを使用した方がいいということなので、開発中のものを使用しています。詳しくは、N2 CMS のページにメモをしたいと思っています。

Atom N270 + Windows 7 を使用して自宅サーバーを構築

2009年12月5日

自宅サーバーは24時間運転をする必要があり通常のデスクトップパソコンでは、騒がしいし電気代も必要なので、Intel Atom を使用したネットブックの利用を検討していましたが、Dell Inspiron Mini 10v に Windows 7 Professioal をインストールして、自宅サーバーにして約1ヶ月が経過しました。

image

Mini 10vのスペックは、CPUは、Atom N270(1.6GHz/533MHz FSB/512K Cache) 、Intel 945GSE Expressチップセット、液晶パネルのサイズが10.1型で解像度は1,024×576ドット、内蔵グラフィックはGMA950、メモリ1GB、ミニD-Sub15ピン、音声入出力、USB 2.0×3、5in1カードリーダ、有効画素数130万画素のWebカメラといったところで、Atom N270を搭載したネットブックによく見られるスペックです。Windows 7 は、メモリを節約するために、今回は32bit版にしました。インストールは、外付けのDVDドライブがなくても、USBメモリでインストールすることができます。一度USBメモリを作っておくと20分もあれば、Windows のインストールが完了します。

mini 10v でどの程度のレスポンスが得られるか、最初は不安でしたが、実際にインストールしてアプリケーションを動作させてみると、レスポンスはいいとはいえませんが十分に使用できるものでした。google ウェブマスターツールのクロールの統計情報のページのダウンロード時間を見ても2秒以内に収まっているし、サイトのパフォーマンスでは11月以降読み込み時間が早くなっており以前使用していた共用サーバーよりいい結果になっています。
image
image

メモリは、標準で1GB となっていますが、不要なアプリケーションは削除したので、メモリの使用量は50%程度(下図を参照)となっていて、標準の1GBで対応できています。

image 

課題といえば、ノートパソコンは24時間運転を想定して製造されてはいないので、24時間運転した場合にどの程度の耐久性があるのかということと、ファンレスなので夏場の発熱対策をどうするかだと思っています。

Google App Engine で WAN 側 IP アドレスを取得

2009年11月3日

最近、Google App Engine で少し遊んでいました。Google App Engine は、1日に CPU 時間が 6.5 CPU時間、発信及び受信のの帯域がそれぞれ1GBまで無料です。また、保存データについては1GB まで無料で使用することができます。CPU 時間は、実際に使っている時間を細かく計算するので、個人や中小企業の普通のホームページであれば無料分で十分対応できると思います。それから 日本の低価格のウェブホスティングではほとんど利用できないか厳しい制限のある Cron ジョブの実行も可能です。開発言語に Python か Java を使う必要があり、データーの保存を Google のデータベースである Datastore にする必要があるというのには慣れないので苦労しますが、ここまでの実行環境が無料で手に入るのは他ではなかなかない思います。

そこで、前回に書いた外部IP アドレスを表示するプログラムの Python 版を作ってみました。なぜだかよくわからないのですが、最初の print 命令は無視されてしまうので、print ” を追加したら動作するようになりました。十分すぎるぐらい余裕があるので、アドレスも公開しておきます。

import os
print ”
print os.environ['REMOTE_ADDR']

IPアドレスの取得
http://webpage-utils.appspot.com/ip

環境変数情報
http://webpage-utils.appspot.com/info

PowerShell スクリプトで VALUE-DOMAIN の DDNS を更新

2009年10月25日

Windows PowerShell スクリプトで、VALUE-DOMAIN のダイナミックDNSを更新するスクリプトを作成してみました。VALUE-DOMAIN のIPアドレス検出CGIは結構重いようなので、VALUE-DOMAINに迷惑をかけないように、外部IP アドレスを表示する PHP のプログラムも紹介しておきます。別に公開サーバーがあれば、外部IPアドレスの表示は簡単にできます。なお、VALUE-DOMAIN のDDNS の設定については、ダイナミック DNSの設定にメモをしています。

Windows PowerShell は v2 になって、下の図のように ISE(Integrated Scripting Environmentnt) がついてくるようになって、編集やデバッグも楽にできるようになっています。
始めてPowershell のスクリプトを使う場合は、TechNet の Hey, Scripting Guy が参考になります。なお、v2 では、既定ではスクリプトの実行ができません。Windows PowerShell を「管理者として実行」で起動して、Set-ExecutionPolicy RemoteSigned とコマンドレットを実行してスクリプトの実行ポリシーを変更します。

image

スクリプトが完成すると、タスクスケジューラを使用して、定期的にスクリプトを実行するようにします。
タスクスケジューラは、Windows 7/Vista では、以前のものよりかなり細かく設定ができるようになりました。以下の図のように繰り返し間隔「15分間」、継続時間「無期限」に設定すると15分おきにタスクが起動されるようになります。画面で設定できる繰り返し間隔の最小は5分間なので、今回のスクリプトの起動にも簡単に対応できます。

image

1 IPアドレスを表示するPHPプログラム

<?php
echo getenv("REMOTE_ADDR");
?>

2.VALUE-DOMAIN のダイナミックDNSを更新するスクリプトのサンプル

# ドメイン名
$DOMAIN = "example.com"
# パスワード
$PASS = "password"
# サブドメイン名 すべての場合は*
$HOSTNAME = "*"
# IP アドレスを取得するページのURL
$IP_URL = "http://mydomain.com/myipaddress.php"
# Value-Domain のDDNSサーバーの登録ページのURL
$DDNS_URL = "http://dyn.value-domain.com/cgi-bin/dyn.fcg?"
# ログファイルを保存するディレクトリ
$DATAPATH = "C:\Users\Admin\Documents\"
$IP_FILE = "wan_ip.txt"
$LOG = "log.txt"

# ログの出力
function write_log($message)
{
  $now = Get-Date;
  Add-Content ($DATAPATH + $LOG) ($now.ToString("yyyy/MM/dd HH:mm:ss") + " " + $message)
}

# 記録しているIPアドレスの取得
if (Test-Path ($DATAPATH + $IP_FILE))
{
  $old_ip = Get-Content ($DATAPATH + $IP_FILE)
}
else
{
  $old_ip = "0.0.0.0"
}
echo $old_ip

# IPアドレスの取得
$wc = New-Object System.Net.WebClient
try
{
  $new_ip = $wc.DownloadString($IP_URL)
  $wc.Close;
}
catch
{
  write_log("11:IPアドレスが取得できません。")
  try
  {
    $new_ip = $wc.DownloadString($DDNS_URL + "ip")
    $wc.Close;
  }
  catch
  {
    write_log("12:IPアドレスが取得できません。")
    echo "12:IPアドレスが取得できません。"
    return;
  }
}
echo $new_ip

if ($old_ip -eq $new_ip)
{
  write_log("00:IPアドレスの変更がありません")
  echo "00:IPアドレスの変更がありません"
}
else
{
  # アドレスが変更されている場合にVALUE-DOMAINのDDNSサーバーの更新
  $wc = New-Object System.Net.WebClient
  try
  {
    $status = $wc.DownloadString($DDNS_URL + "d=" + $DOMAIN + "&p=" + $PASS + "&h=" + $HOSTNAME)
    echo $status
  }
  catch
  {
    write_log("12:データベースサーバーに接続できません。")
  }
  $st = $status.Split("`n") 
  if ($st[0] -eq "status=0") 
  { 
    Set-Content ($DATAPATH + $IP_FILE) $new_ip 
    write_log("0:OK IP:" + $new_ip) 
  } 
  else 
  { 
    write_log($st[0] + ":" + $st[1]) 
  }
}