2013/10/30

Raspberry Piの電気代と償却費は170円/月

ちょっと計算してみました。

自宅サーバーで24時間・1ヶ月連続で稼動させていると、電気代は
3W/hx24hx31日/月x25円/KWh=56円/月

3年間使えるとして、1ヶ月の償却費はSDカード含みで、
(3300+700)円/36ヶ月=111円/月



まあ、1ヶ月170円弱の費用で(512MBメモリ+8GBHD)のサーバーと考えれば、良い線じゃん^^)
ちっとは勉強もできるしね~ ←勉強してないぞ~!

2013/10/29

Raspberry Pi + python で Web-server

pythonで単純にWeb-serverを動かす方法をめっけ~
詳細は以下のURLです。
http://opensourcesoftwarepractice.org/Raspberry-Pi-Web-Server-With-Python/#/

8000番のポートをLan内限定で開いておいておきます。
~ $ sudo ufw limit 8000


次に
~ $ mkdir www
~ $ cd www
~/www $ python -m SimpleHTTPServer

すると、以下が帰ってきます。
Serving HTTP on 0.0.0.0 port 8000 ...
192.168.11.5 - - [25/Oct/2013 06:37:42] "GET / HTTP/1.1" 200 -
192.168.11.5 - - [25/Oct/2013 06:37:42] code 404, message File not found
192.168.11.5 - - [25/Oct/2013 06:37:42] "GET /favicon.ico HTTP/1.1" 404 -

192.168.11.12:8000 につないでみますと、お~~~
なんか、それらしい物が表示されました。
ここで、端末から『CTRL-C』で、一旦サーバーを停止させます。(SS1)




index.htmlを作ります。
~/www $ nano index.html
--------------------------------------------



My First Heading


My first paragraph.



--------------------------------------------
再度サーバーを立ち上げます。
~/www $ python -m SimpleHTTPServer

ブラウザでhttp://192.168.11.12:8000/につなぐと、index.htmlに入れた通りに表示されます^^)

お~~、そか!
Coderでこのページを作成すれば良いわけじゃん。
(このurlには、Webカメラにする方法がこのあと続きに記載されています。)

やっぱり3300円のPCとは思えません~~~ ^^)

2013/10/20

Raspberry Pi のIDLEでもうちょっと Pythonを

Raspberry Pi(Raspbian)に最初から付いているIDLEを使ってpython遊びの続きです。

参考にしたのは以下のURLの「Learn how to program」からdownloadしたPDFです。
すぐ下にソースコードをdownloadするリンクもついています ^^)
http://inventwithpython.com/index.html




さっそく指示とおりIDLE3でソースの「guess.py」を開いて、runさせてみました。
ソースで『import random』と組込み関数がミソかな?



Editorでも変数、定義、関数などがきれいに色分けされています @@)
やっぱり3300円で買ったPCとは思えませんね~ ^^)

(↑ ちゃんと勉強を続けれたらねっ! )

2013/10/19

Raspberry Pi+Minecraft で画面shotが真っ黒け><

2個目のRaspberryが届きましたので、さっそくpythonお遊びです。
以下の本家urlを参考にインストしました。
http://pi.minecraft.net/

まずminecraftをhomeにdownloadして解凍し、その後downloadしたファイルを消しておきます。
~$ curl -o minecraft-pi-0.1.1.tar.gz https://s3.amazonaws.com/assets.minecraft.net/pi/minecraft-pi-0.1.1.tar.gz
~$ tar zxf minecraft-pi-0.1.1.tar.gz
~$ rm minecraft-pi-0.1.1.tar.gz

必要なfile類は/mcpi以下に作成されています。

Minecraftの起動は、GUIを立ち上げておいてから、X-termで
~$ cd mcpi
~/mcpi $ ./minecraft-pi

pythonを併用した使い方は、以下のurlが詳しいかもw
http://www.piprogramming.org/main/?page_id=261

さっそくpythonを起動します。
~$ cd mcpi/api/python/mcpi
~/mcpi/api/python/mcpi $ python

Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

これが帰ってくれば、スクリプトの入力待ちになります。

tutorial2にあるいろんなものを作ってみました。
>>>が出ているところへ1行づつでも、あるいは全部を一度にコピペしてもOKです^^)

import minecraft
import block
#Initialise
mc = minecraft.Minecraft.create()
#Produce a line of blocks
for x in xrange(0, 10):
    mc.setBlock(x, 15, 0, block.STONE)
#Create a wall
for x in xrange(0, 10):
    for y in xrange(0, 10):
        mc.setBlock(x, y, 0, block.STONE)
#Create a solid cube
for x in xrange(20, 30):
    for y in xrange(0, 10):
        for z in xrange(0, 10):
            mc.setBlock(x, y, z, block.STONE)
#Create a hollow cube
for x in xrange(30, 40):
    for y in xrange(0, 10):
        for z in xrange(0, 10):
            if(x==30 or x==39 or y==0 or y==9 or z==0 or z==9):
                mc.setBlock(x, y, z, block.STONE)
#Create a sphere
for x in range(-10, 10):
    for y in xrange(-10,10):
        for z in xrange(-10, 10):
            if(x**2 + y**2 + z**2 < 10**2):
                mc.setBlock(x,y,z,block.STONE)

手動で1ブロックづつ置いていくよりは遥かに楽チンで~すw ^^)
ここで、いったん記念撮影を、、、、
>>>exit()
~/mcpi/api/python/mcpi $ cd
~$ scrot -d 5



おおおおお、出来上がったshotはminecraft窓がまっくろけ・・・・・・
実物ではきれいに見えているのに、、><

数回試してみてもだめなので、ぐぐってみました。
やっぱりスナップショットが普通ではとれないようなことが記載されています。
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=39135&p=396268

そいや、いろんな紹介ページでもモニターをデジカメで撮影したような感じになっています。



う~~ん、何か良い方法がないものかな~?

2013/10/16

『Raspberry Pi』をブログの自宅サーバーに(2)

(10月14日の記事に後半部を追記してアップしなおしました)

今回は教科書『Raspberry Piで楽しもう』(日経BP社2013年8月12日刊)の67ページ以降を参考にしながら再構築しました。

これの特徴は、サーバーソフトにlighttpdを使用し、phpMyAdminは使用しません。
しかもmysqlのデーターはRamdiskを使用し、終了前にはSDカード側へBack-upする仕組みで、SDカードの寿命対策が採られています。

ただし、70ページの図8の110行目はエラーを防ぐため以下のように変更しました。
(変更前)cp -pr /mnt/mysql.init/* /var/lib/mysql
(変更後)cp -pr /var/lib/mysql.init/* /var/lib/mysql


最後にWordpressをインストして、今までのRaspberryに関する日記記事をこちらへ移し、ブラウザで以下のアドレスで動作を確認しました。Ramdiskも正常に作動しています(SS1)
http://192.168.11.6/wordpress/



そこで、ルーターのアドレス変換で80番のポートを192.168.11.6へひも付きにし、Wordpressの設定でサイトアドレスを以下のようにセットして公開してみました。
http://kimikodover.sun.ddns.vc/wordpress/


でも、ブラウザで上記アドレスへ接続しても『このページは表示できません』の落とし穴にはまり込みました ><
ぐぐってみると、自宅Webサーバーへのインターネット経由のアクセスはすごく難しいらしいことが判りました。

う~~ん、OSgridへの自サーバーへ接続できるように、NATループバック対応のルーターを使っているんだけど、これとは別問題なのかな~?


そこで以下のURLでへ接続テストをしてみました。
http://sakaguch.com/cgi/test/TestHttpd/



表示結果はSS2ですが、OKみたいです。
でも自分で見れないので、まったく自信がありません。。。><

(反省)SSをよく見るとServerがApache/0.6.5になっており、使用しているlighttpdではないじゃんか!



ところが、公開後にGoogle+で『kimikoのWebへ接続したらルーター設定のログイン画面だよ』って注意報コメント!
うわ、、、、、危ないわ~~

あわてて公開記事(いままで記載したところ)を一旦消し、いろいろ調べてやっとミス見つけました。
ルーターの「WAN側ネットワーク設定」の「WEB設定のポート番号」が間違っていました。(SS3)



アタシはWEBポートなので「80」としていたのですが、これは外部からこのルーターを設定するときのリモートアクセスのポート番号で、通常は空白にして置かなければルーターをハイジャックされかねないという、非常に危険なものジャマイカ!!!

ばっふぁろさん、そんな危険なところをナニゲに「WEB設定のポート番号」って表現するかよ?
「リモート操作のポート番号」っていう表現ならもっと気をつけるのだけどね~。

ぐぐってみたときに、『自宅サーバー公開で、ルーター設定画面が出る』っていうトラブルも散見されたよ!

アタシのは1年半前に、OSgrid接続用に設定したまんま、、、、、危なかったなぁ~~~


修正後は 「http://kimikodover.sun.ddns.vc/wordpress/」をブラウザに入力しても、NATループバック対応のおかげ(と思うのですが)でLAN内のWEBサーバーを見れています。  ^^)

ふ~~~、疲れたわ。。。。。。

2013/10/15

『Raspberry Pi』で『Tiny Basic』を

Raspberry_PiにTiny Basicをインストールして遊んでみました。
(downloadは以下から)
http://www.staff.city.ac.uk/afl/tinybasic/index.html



なつかしいわぁ~ ^^)
中学校でのパソコンクラブ時代を思い出しています。

(これも年令推定厳禁でっす!)


まだまだ遊ぶネタはありそうですw ^^)

2013/10/10

『Raspberry Pi』をブログの自宅サーバーに

先日の『Coder for Raspberry Pi』がRaspberryをWeb-Serverにしているのに触発され、今回はRaspberry Piでブログを立ち上げてみました ^^)



まず以下のURLを参考に、php5, mysql, phpmyadmin, apache2をインスト・設定
http://www.slideshare.net/lilyfan/raspi-wordpress20130525



Web-server・mysqlの稼動確認後に、以下を参考にWordpressをインスト
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=33246



『3300円・3.5WのRaspberry Pi』がブログの自宅サーバーになりました~~ ^^)

でも、このままではSDカードメモリーの寿命が心配なので、データーやログ類はRAM領域を使用するように改造しなければなりません。

『外部晒し』はまだまだ遠そうです。 ← 内容貧弱・はづいのでは?

2013/10/06

RaspberryのSDカード寿命対策

Raspberry Piのひとつの使い方として、Mp3-player兼Internet-radioが良さそうなので、これに使用しているSDメモリーカードの寿命対策をしておきます。
(参照 http://hanposaki.blog.so-net.ne.jp/2013-01-07)

(1)SDへ頻繁に書き込まれているDirectoryをRamDiskへ移動させてしまいます。
sudo nano /etc/fstab で以下の3行を追加しました。
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/log tmpfs defaults 0 0

その後、以下を実行してマウントしておきます。
sudo mount /tmp
sudo mount /var/tmp
sudo mount /var/log

df -h で確認して、以下のようになっておればOK(のはず ^^)
pi@raspberrypi ~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
rootfs 7.4G 5.2G 1.9G 75% /
/dev/root 7.4G 5.2G 1.9G 75% /
devtmpfs 212M 0 212M 0% /dev
tmpfs 44M 260K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 33% /boot
tmpfs 220M 4.0K 220M 1% /tmp
tmpfs 220M 0 220M 0% /var/tmp
tmpfs 220M 20K 220M 1% /var/log



SSはWindows7機からVNCとTera_Termで遠隔操作時のものです。


(2)システムログ/var/log/syslogはもう不要なので、書き込みを停止させます。
sudo update-rc.d -f rsyslog remove
sudo reboot

これで少しくらいはSDメモリーの寿命が延びるかな? ← ケチ!

さて、次は何をして遊ぶ? ^^)

2013/10/02

RaspberryでVNC-Serverを入れ替えました

今まで使用していたx11vncでは、Raspberry起動時に自動でx11vncを立ち上げる方法が成功しませんでした←初心者!
それで手間がかかりますが、一旦SSHでログインしてx11vncを立ち上げていました。

そこで以下の2箇所を参照しながら、tightvncserverをinstallし、Boot-UP時に自動立上げできるようにしました。
http://gothmog.ddo.jp/grasshopper/?p=9150
http://elinux.org/RPi_VNC_Server



1)インストール
pi@raspberrypi ~ $ sudo apt-get install tightvncserver

2)起動
pi@raspberrypi ~ $ vncserver :1 -geometry 1280x800 -depth 24
初回だけは接続パスワードの設定があります。
(停止は、sudo vncserver -kill :1 )

3)母艦のVNCViewer(Client)からの接続
ローカルなのでサーバー欄には[192.168.**.**:5901]で接続できました。
次に上で入れたパスワードを入れると、接続完了です。

安全のため、あとで5900のポートは変更しておきます ^^)

4)Raspberry Piの電源ONで自動的にVNC Serverを起動するように設定します。
http://elinux.org/RPi_VNC_Serverの後半『Getting VNC Server to Work on a Specific User』に記載されているスクリプトvncbootを作成します。
前半部記載「rootからの接続」は、あえて避けました ^^)

pi@raspberrypi ~ $ sudo nano /etc/init.d/vncboot

(以下は/etc/init.d/vncbootの内容)
#!/bin/sh
# /etc/init.d/tightvncserver
# Customised by Stewart Watkiss
#http://www.penguintutor.com/linux/tightvnc
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
eval cd ~$VNCUSER
case "$1" in
start)
#su $VNCUSER -c '/usr/bin/tightvncserver :1'
su $VNCUSER -c '/usr/bin/tightvncserver :1'
echo "Starting TightVNC server for $VNCUSER "
;;
stop)
pkill Xtightvnc
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0

5)スクリプトに実行権限を与えておきます。
pi@raspberrypi ~ $ sudo chmod 755 /etc/init.d/vncboot

6)起動時に実行する様に設定します。
pi@raspberrypi ~ $ sudo update-rc.d /etc/init.d/vncboot defaults
(返答)
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d//etc/init.d/vncboot

7)エラーが出た場合は以下のコマンドで再実行します。
pi@raspberrypi ~ $ sudo update-rc.d vncboot defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'vncboot' missing LSB tags and overrides

8)再起動をかけて、母艦のVNC-Viewerから接続できればOK ^^)
pi@raspberrypi ~ $ sudo reboot

再起動のときに流れる文字列に、『Starting TightVNC server for pi』があります。

9)母艦からRaspberryの電源を切断するには、LXTerminalを開いて、
pi@raspberrypi ~ $ sudo reboot
しばらくしてから、電源をはずします。

これで、いままでよりもVNCの画面が大きくなり、VLCも操作しやすくなりました~ ^^)

次は何をして遊ぶ  ??