raspberry pi に最適なメモリ容量

ラズパイのメモリはなるべく大きい方がいいと思ってきましたが、
今回のように壊れてみると、印象がガラッと変わります。
SDのカードは一部が壊れるということがなくて、一気にすべての領域へのアクセスが不可能となってしまいます。なので、システムに使うSDカードはなるべく小さいものにしておいて、
データ領域はUSBメモリか、別のSDをカードリーダに挿して使うようにしたほうが良さそうです。USBが4ポートもあるけど全て空いていますしね・・・。

価格調査をしてみる

楽天、アマゾンで調べると最安価格は以下のような感じでした。

8GB・・・600円程度
16GB・・・800円程度
32GB・・・1500円程度
64GB・・・2500円程度

1GBあたりの価格は64GBが最も安いです。
ところが64GBが一気にダメになるのは結構キツイです。
システムだけなら8GBでも行けそうですが、1GBあたり75円となって結構高いです。
また、8GBと16GBは200円しか違いません。

16GBと32GBでは、
16GB・・・1GBあたり50円
32GB・・・1GBあたり47円
であまり変わらないので、16GBという選択が現状は良さそうですね。

16GBだと容量的には心もとないのでUSBメモリを追加したいですけど、
USBメモリであれば、64GBで2000円を切るくらいであるようです。

とすると

16GBのmicroSD x2(1枚はバックアップ用)

64GBのUSBメモリ

という組み合わせが良いような気がしますね!

バックアップは絶対やったほうが良い

今までよくバックアップせずにきたな・・・と思いましたよ。
バックアップした直後に壊れるなんて恐ろしすぎました 汗
私はストレージ的にはラジコの録音が一番圧迫しています。
これをUSBメモリに移動するようにすると、急にシステムが壊れてもすぐにWinPCにて認識できるのが良いですね。
このUSBメモリの方は壊れないのか・・・?っていうのも気にはなりますね・・・。ストレージとして単純にデータを貯めていくだけなら大丈夫そうではありますが。
多分システムとして使ったばあいの読み書きが多いのが問題なんだろうと思います。
実はスワップもそのままで1年半くらいで壊れたことになるので、
スワップを削除して、RAMディスクに変更したので、もう少し寿命は伸びてくれるかな?と期待はしています。

freenomのドメインの更新メールが来た!

とうとう初めてのFreenomのドメイン更新の時期が来ました。
すでに更新したというレビューは上がっていますが、私もやってみました。

Freenomからのメール

メールは以下のようなモノ。

Freenom Support <noreply@freenom.com>

Dear Sir/Madam,

Since May 16, 2017 you are the registrant of the domain name:
ZENI.GA.

Please be advised that the registration period for this domain is almost
over and that the domain will expire on August 16, 2017.

If you wish to keep your your domain, you should renew the domain
registration for ZENI.GA BEFORE August 16, 2017 00:00 GMT.

Domain name renewals are free of charge and can be done in My Freenom.

Please:

- Visit My Freenom at https://my.freenom.com

- Go to Domain Panel

- Select the domain name you want to renew

Domain renewals can only be done two weeks before a domain name expires.

Looking forward to continue to serve you with your domain name.

Kind regards,


Freenom Support
http://www.freenom.com

ドメインzeni.gaの期限だよ?、ってことですね。実はまだ更新していないサイトです 汗

直接以下にアクセスするか

https://my.freenom.com/domains.php?a=renewals

serviceメニューのRenew Domainを選びます。

Renew This Domainをおすと、更新月数を選択するリストボックスが出るので選択するだけです。

最大の12ヶ月にしても良かったのですが、
次の更新を他のドメインと揃えるために9ヶ月にしました。
多分複数取得していると思いますので、なるべく近い期日になるようにしておくとらくかな?と思います。

 

nginxが起動しなくなった[raspberry pi]

突然RaspberryPiのNginxが起動しなくてかなり焦ったのでメモしておきます。

起動しない

再起動すると起動しなくなっていた。
自動起動がうまく行かなかったのかと、
sudo service nginx start
するも起動しません。

検証

エラーは以下のとおりです。

Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.

このメッセージは

‘systemctl status nginx.service’ と ‘journalctl -xn’ で詳細を調べろ!

ってことらしいです。

$ sudo systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since 水 2017-08-02 22:58:37 JST; 18s ago
  Process: 2756 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 654 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 2759 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
 Main PID: 657 (code=exited, status=0/SUCCESS)

 8月 02 22:58:37 raspberrypi nginx[2759]: nginx: [alert] could not open error log file: open(...ry)
 8月 02 22:58:37 raspberrypi nginx[2759]: 2017/08/02 22:58:37 [emerg] 2759#0: open() "/var/lo...ry)
 8月 02 22:58:37 raspberrypi nginx[2759]: nginx: configuration file /etc/nginx/nginx.conf tes...led
 8月 02 22:58:37 raspberrypi systemd[1]: nginx.service: control process exited, code=exited s...s=1
 8月 02 22:58:37 raspberrypi systemd[1]: Failed to start A high performance web server and a ...er.
 8月 02 22:58:37 raspberrypi systemd[1]: Unit nginx.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

途中、省略されちゃってます。

Hint: Some lines were ellipsized, use -l to show in full.
幾つかの行が省略されちゃってるから、-lを使えばいいじゃん?

てなわけで、リベンジ。

$ sudo systemctl -l status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since 水 2017-08-02 22:58:37 JST; 2min 10s ago
  Process: 2756 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 654 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 2759 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
 Main PID: 657 (code=exited, status=0/SUCCESS)

 8月 02 22:58:37 raspberrypi nginx[2759]: nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory)
 8月 02 22:58:37 raspberrypi nginx[2759]: 2017/08/02 22:58:37 [emerg] 2759#0: open() "/var/log/nginx/access.log" failed (2: No such file or directory)
 8月 02 22:58:37 raspberrypi nginx[2759]: nginx: configuration file /etc/nginx/nginx.conf test failed
 8月 02 22:58:37 raspberrypi systemd[1]: nginx.service: control process exited, code=exited status=1
 8月 02 22:58:37 raspberrypi systemd[1]: Failed to start A high performance web server and a reverse proxy server.
 8月 02 22:58:37 raspberrypi systemd[1]: Unit nginx.service entered failed state.

前半はよくわからない。
どんなサービスが動かなかったかの結論だけ言ってるみたいで、原因らしいものがないみたい。
後半の「could not open error log file: open() “/var/log/nginx/error.log” failed」がきになりました。
nginx.confのログファイルの場所はここじゃなくて別の場所に変更しているのに、なぜここが開かないというのかな・・・?
確かに、/var/log/nginx/のディレクトリはないけれど・・・。

そこで、ふには落ちないけど、mkdir -p?/var/log/nginx をしてから sudo service nginx start して起動してみました。やはりだめ?
ああ、パーミッションかな?ととりあえず chmod 777 でユルユルにしてもう一度起動すると・・・!起動したーー!
結局/var/log/nginx/error.logという0ファイルができました。どうやらここは設定ファイルで指定しなくても必要なようですね・・・?バグだと思うけどね。

 

こうなった原因

原因はswapをRamdiskに変えたことでした。

microSDの突然死がありましたので、以下を見つけて設定したのです。

Raspberry Pi、RAMディスクで micro SDを長寿命化

rc.localに更に以下を追加しました。

mkdir -p /var/log/nginx
chown root.www-data /var/log/nginx

これで、再起動してもちゃんと起動するようになりました。

今回はなんとかなりましたけど、やっぱり再起動する前にはバックアップしないと危険ですね。

私的mydns.jpの更新スクリプトを考えた話

自宅サーバー運用に欠かせないDDNSです。

いろいろあるのですが、独自ドメインを自宅サーバーで使うには
私的mydns.jp しか選択がないようなきがする。

DDNSサービスが提供しているサブドメインを使うのなら他にも選択はあるのですが、
少なくともFreeNomのドメインは無理でした。

DDNSサービスに対する勘違い

DDNSだと、IPアドレスが変わってしまったときにIPアドレスを通知する必要があります。
ここで勘違いしていたことがあって、
この通知は負荷になるのであまりしてはいけないものだと思っていました。
そうしていたら、1週間後にメールが来ました。

「通知が一定期間無いと、削除するよ!」

って言う内容でした。
ちょっと解せず、「通知していないのはIPに変更がないからです」とメールをすると、

「定期的に通知をしていただく制度になっています。3分に1回でも良いですよ!」

と言われてしまいました。負荷を制限とか考えなくてもいいみたいでした。

せっかくなので、更新スクリプトです

そんなやり取りをする前に作ってしまった私的mydns.jp用の更新スクリプトです ^^;

#!/bin/sh
#Id password
ID=mydns*****
PASSWORD=********
#変数定義
HTTP="http://"
IPV6=${HTTP}${ID}:${PASSWORD}@ipv6.mydns.jp/login.html
IPV4=${HTTP}${ID}:${PASSWORD}@ipv4.mydns.jp/login.html
IP_FILE=CURRENT_IP.txt
CURRENT_IP="0.0.0.0"
NEW_IP="0.0.0.0"
UPDATE_LOG=UPDATE.log

#前回のIP
if [ -f $IP_FILE ] ; then
    CURRENT_IP=`cat $IP_FILE`
fi

#今回のIP
# curl ifconfig.co
# curl inet-ip.inf
NEW_IP=`curl ifconfig.co`


if [ $CURRENT_IP = $NEW_IP ] ; then
    :
else
    wget -q -O `date +%Y%m%d_%H%M%S`_ipv6.txt $IPV6
    if [ $? = 0 ] ; then
        sleep 3;
        wget -q -O `date +%Y%m%d_%H%M%S`_ipv4.txt $IPV4
        if [ $? = 0 ] ; then
            #更新
            echo $NEW_IP > $IP_FILE
            echo [`date +%Y%m%d_%H%M%S`] update $CURRENT_IP to $NEW_IP >> $UPDATE_LOG
        fi
    fi
fi

microSDカードを買ったのでチェックしてみた

新しいmicroSDが届きましたー。
値上げして値上げして・・・約2500円でした。まあ、大昔よりは安いですけど。

こんな感じ。怪しいところはないかな・・・。

むー。並行輸入品ということなのかなあ?
今時はこんな感じですね。
またはバルクですかね。裸。

開封すると中はこんな感じでした。更にふたしてあると思わなかった。

よく見ると右上にOPENとなってますね。

無理やりこじ開けるところでした。。。

裏面はこんな感じで、怪しげな中華シール(?笑)はありませんでした。

テストしてみた

何も信用してはいけません 笑

まずはh2testwですね。
H2testw

1時間位かかるみたいです。カードリーダーがUSB2.0なことも影響していると思います。
USB3.0な小型のリーダーってまだないんですよね・・・

とおもったら、あったー

アマゾンで800円ぐらい、楽天だと1200円くらい、でした!
microSDが装着時ちょっとはみ出すことがウィークポイントみたいです。

でもやっぱり小型の商品はこれぐらいみたいですね。
中華が面白いリーダーを出しくくれるといいのですが、いまだ2.0のが多いみたいですね。

結果出ました。大丈夫そうです。

Warning: Only 59079 of 59080 MByte tested.
Test finished without errors.
You can now delete the test files *.h2w or verify them again.
Writing speed: 18.0 MByte/s
Reading speed: 18.9 MByte/s
H2testw v1.4

ついでにベンチマーク
Attoです。

リーダーが2.0なのでこんなものでしょう。

ChkFlashは超絶時間がかかりそうなので、また今度。

Raspberry Pi Zeroはアマゾンでは買わない

私のRaspberry Piは2ですが、
Raspberry Piは今は3になっています。
ほとんど価格は変わらないので、今買うなら3です。
でも必要アンペア数が上がっているので、あえて2を選ぶのもありかも・・・。
2でも自宅用に使うには十分すぎると思いましたが、
もっとパワーアップしている3も使ってみたい気持ちがするのは正直なところではあります。

そんなかZeroも誕生して、買いやすくなってる

更に、廉価版で、更に小さい、ZEROも日本でも買えるようになっていますね。
この小ささでちゃんとしたコンピューターということに驚きを覚えます。
ところが、ZEROは通信ポートがないのでUSBで用意したりしないといけません。
そんなことをしているとたちまち2や3に迫る金額になってしまうので、用途を限定しないといけないですかね。
なんて想っていたら、いつのまにかZERO Wというのが出ていて、Wifiがついていたんですね。

こりゃもうほんとに面白すぎて、涎が出てきますね!

Amazonでも買える・・・でも

アマゾンでも買えます。。。これはオススメではありません。
というのも、何故かかなり高額になっています。

ちょっと検索したら40800円というのがありました・・・笑
流石にこれで買う人はいないと思いますけど、
安い方でも4,300円になってます。

なので、買うなら正規の代理店からかったほうがいいです。
SwichScience

ここなら

  • ZERO・・・648円
  • ZERO W・・・1296円

という常識的な価格になっています。送料は150円のようですよ。
ただ残念ながら今品切れです。

商品が潤沢になればアマゾンも値下がるのかな・・とは思いますが。
販売所がアマゾンだけになるとこういう弊害があるんだな?、と思いますね。

なるべくアマゾン以外で買い物をした方がいいような気がしますね。

RaspberryPiのバックアップをしなきゃ

私のRaspberryPi2は2015年の11月から連続稼動しています。
既に1年半以上も動いているのですね。ほとんど電気もかからずかなり優秀ですね!

microSDカードでの運用ですから不安はあります。今のところノントラブルですが・・。

ラジコ録音やWordPressでバリバリに使っていますので急に壊れたら結構困ります・・・
なので、バックアップをしようと思います。

ちなみにuptimeの結果は思った結果じゃなかったです。再起動したんだっけかな・・?

$ uptime
 09:41:28 up 31 days, 10:55,  3 users,  load average: 0.07, 0.03, 0.00

バックアップ方法

一度シャットダウンしてmicroSDカードを取り出して
WindowsPCの方でバックアップするしか無いのかな・・・?と思っていました。

  • Win32DiskImager

Win32 Disk Imager プロジェクト日本語トップページ ? SourceForge.JP
http://sourceforge.jp/projects/sfnet_win32diskimager/

 

SDカードの内容をimgファイルとしてバックアップできます。
このimgファイルを取っておけば、簡単に別のSDカードに環境をコピーできるのです。

しかしこの方法は電源を落とさねばなりません。
それに64GBもの容量になるとかなり時間がかかります。

それほどアクセスもないですけど、WordPressも運用してるのでそんなに止まるのは・・・。

起動させたままバックアップできる!

今はrpi-cloneというコマンドがあるようです。
これなら起動したままバックアップできるそうです!やってみたい!

インストール
コピーして設置するだけですね。

$ git clone https://github.com/billw2/rpi-clone.git
$ cd rpi-clone
$ sudo cp rpi-clone /usr/local/sbin

実行できるか確かめます

$ sudo rpi-clone

バックアップ先のSDカードはカードリーダに挿してUSBポートに差し込みます。

$ lsblk

このコマンドで、差し込んだSDカードのマウント名がわかります。メモします。

$ sudo rpi-clone [コピー先]

パーティションを作るけどいい?

Do you want to initialize the destination disk /dev/sdb? (yes/no): yes

ラベル名を聞かれるのでそのままEnter
Your booted /dev/mmcblk0p2 rootfs existing label:

You may enter a label for the destination rootfs /dev/sdb2:

実施するけどOK?

Final check, is it Ok to proceed with the clone (yes/no)?: yes

とまあこんな感じです。簡単そうですね!

実は次回実行時は上書きで行けるようで、時間短縮だそうです。

これは良さそうですね!

とりあえず発注したSDカード待ちです・・・。

Windows7(たぶん8も10も)を狭い領域でなんとか動かす方法(5

ここまできたらもう少しです。

Windows Updateフォルダを移動

アップデートフォルダもかなり大きくなりますので、移動した方がいいです。

コマンドプロンプトを管理者権限で開きます。

サービスを止めます。
net stop wuauserv

エクスプローラからアップデートフォルダを移動します。
CドライブのWindowsフォルダの中の「SoftwareDistribution」がそれです。
これを切り取って、外付けドライブの方に貼り付けます。

次にシンボリックリンクを張ります。
mklink /d c:\Windows\SoftwareDistribution g:\SoftwareDistribution

これは、外付けがGドライブと仮定した場合です。

リンクを張ったらサービスを起動します。
net stop wuauserv

SoftwareDistribution フォルダは移動するのではなく、削除してしまって新たに作成するのでも大丈夫だと思います。

これで多分完了!

改めて再起動して、正常に起動してくれば成功です。

問題点としては、たまに外付けSSDが起動時にうまく認識されないコトアがありました。

でも、ようこそ画面でプロファイルがない、というエラーが出るだけなので、
その場で指し直すとあっさり起動できるとおもいます。

それでもだめな場合は、大抵はドライブ文字が変わってしまっています。
落ち着いてDiskpartコマンドで設定します。

うまく起動したらWindowsアップデートを実施します。

アップデートが終わったら再起動するのですが、移動したフォルダがどうなっているか確認した方がいいです。

実は自分の環境では、アップデートしたところUsersフォルダのリンクが消え、ふたたびCドライブに戻ってしまっていました。

こうなってしまったら落ち着いてインストーラブートからやり直すが吉です。

Windows7であれば、もうUsersフォルダのいちを変えるほどのアップデートはないとは思います。

 

以上でした!

wordpressでiframeを書くと表示できなくなる不具合発生

実は今日の文の記事を書き上げた。
しかしページが表示できなかった・・・。

エディタの「テキスト」はもちろん、「ビジュアル」ではちゃんとiframeの内容も表示できているのに・・・。

プレビューまたは、投稿後にページを見ようとすると、真っ白になってしまって何も見えなくなってしまうのです。

iframeが無効になるという報告あり

iframeが無効になるという報告はたくさんヒットしました。
これはiframeの中が表示しないという件のようでした。

そうではなく、一切何も表示しなくなってしまうのです。

デバッグモードを使ってみた!

iframeに限定しなければ
画面が真っ白になる!、という不具合報告は結構あるようでした。

その解決策としてデバッグモードがありました。

wp-config.php というファイルを編集します。

define('WP_DEBUG', false);
↓
define('WP_DEBUG', true);

デバッグモードでアクセスしてみると・・・

 

Deprecated: Non-static method WpFileCache::instance() should not be called statically in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/wp-file-cache/file-cache.php on line 131

Notice: is_feed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in /home/****/www/html/m-ynko.azi2.com/wp-includes/functions.php on line 4139

Fatal error: Uncaught Error: Class ‘DOMDocument’ not found in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php:246 Stack trace: #0 /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php(154): Filter_Embedded_HTML_Objects::get_attrs(‘<iframe src=”ht…’) #1 [internal function]: Filter_Embedded_HTML_Objects::dispatch(Array) #2 /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php(93): preg_replace_callback(‘%<iframe[^>]*+>…’, Array, ‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’) #3 /home/****/www/html/m-ynko.azi2.com/wp-includes/class-wp-hook.php(300): Filter_Embedded_HTML_Objects::filter(‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’) #4 /home/****/www/html/m-ynko.azi2.com/wp-includes/plugin.php(203): WP_Hook->apply_filters(‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’, Array) #5 /home/****/www/html/m-ynko.azi2.com/wp-includes in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php on line 246

出たエラーは3つです。

3つ目に、iframeがなんちゃら、って出ていますね。
更にjetpackがなんたら・・・。

もしかしてjetpackのせい??

 

jetpackを無効にすると・・・

とりあえず、jetpackを無効にしてみました・・・
するとあっさり表示しました。

原因はまだはっきりしませんが、DEBUGモード、使えますね!!

((追記))
jetpackを5.0にアップデートしたら表示可能になりました。
不具合だったのかもしれませんね!

 

raspberry piでrarを解凍する(unrar)

raspberry pi上でもrarを解凍することが出来ます。

もしかしたら今はapt-getに用意されているかも・・・

というわけで

sudo apt-get install unrar

を試してみてください。

unrarバイナリを直接ダウンロード

バイナリを直接ダウンロードすることが出来るみたいです。
RARLAB
http://www.rarlab.com/rar_add.htm

この中のうちの、ARM、というのを選びます。

UnRAR for ARM Linux Command line freeware ARMEL v4 Linux UnRAR.
UnRAR for ARM Linux Command line freeware ARM Linux UnRAR.

このように2つあります。
私の環境raspbianではV4のほうは実行ができませんでした。

なのでこちらをダウンロードしました。
UnRAR for ARM Linux Command line freeware ARM Linux UnRAR.
http://www.rarlab.com/rar/unrar-5.3.7-arm.gz

インストール

解凍

$ gunzip unrar-5.3.7-arm.gz

実行権をつける

$ chmod 755 unrar-5.3.7-arm

インストール
unrar-5.3.7-arm はバージョン名を含んだファイル名なので、
/usr/local/binに入れてからシンボリックリンクを貼って使いやすくしました。

$ sudo mv unrar-5.3.7-arm /usr/local/bin/.
$ cd /usr/local/bin/
$ sudo ln -s unrar-5.3.7-arm unrar

使い方

使い方は e でファイル名を指定します。

$ unrar e abc.rar

分割されている場合は一つを指定すればよいようです。

# abc_1.rar abc_2.rar と分かれている場合
$ unrar e abc_1.rar

パスワードが書かている場合はダイアログが出ます。

$ unrar e abc_1.rar

UNRAR 5.30 beta 6 freeware      Copyright (c) 1993-2015 Alexander Roshal

Enter password (will not be echoed) for abc_1.rar:

予めパスワードを指定することも出来ます。

$ unrar e abc.rar p password

圧縮は?

Linuxでrarに圧縮する方法は無いようです。
見つけられないだけかもしれないけど・・・。