先日届いたRaspberry Pi 4にUbuntu Server 19.10.1をインストールして遊んでみるよ!

 

と思ったら

Pi4の起動中から、ログイン後のapt update程度の軽作業でも電源ランプ(赤いLED)が点灯したり消灯したりしている。コマンドdmesgを叩いたら低電圧警告が出ていました。

Under-voltage detected! (0x00050005)

 

この低電圧警告が出た時の電源はMax3Aのモバイルバッテリーと大陸から届いたUSB Type-C ケーブルの組み合わせです。↓

このケーブルは怪しいので使用停止。モバイルバッテリーはもっと信頼出来るケーブルを購入してから判断するので保留。

そもそも、Pi4に適したACアダプターが欲しい。って事で探すとPi4に最適と言う物がスイッチサイエンスに有りました。ならばと、それを注文。↓

ラズパイ4に最適なACアダプター 5.1V/3.0A USB Type-Cコネクタ出力

↓ はい、届きました。なんと箱の内側に「寒いよね、ポチってくれてありがとう♥️」だって、またポチっちゃいそうです。

 

 

USB Type-Cケーブルが届いたので、先のモバイルバッテリーとの組み合わせでPi4を起動させて、stressコマンドでCPUとディスクに負荷をかけてみました。

$ sudo apt install stress

$ stress --cpu 4 --timeout 30
$ stress --hdd 1 --timeout 30

 

↓ 結果は良好。電源ランプは一度も消灯しませんし、dmesgを見ても低電圧警告は出ていません。

 

↓ その良好と感じたUSB Type-Cケーブル 1mです。私はこれを使用しました。

 

スイッチサイエンスから届いた「ラズパイ4に最適なACアダプター 5.1V/3.0A USB Type-Cコネクタ出力」も同様の負荷テストをした結果、問題無く良好です。

当サイトは「安全ではありません」ではありません。

 

当サイトも常時SSL対応となり、鍵マークが出るようになりました。😄

 

SSL化で参考にさせて頂いたサイトは
Ubuntu 18.04.1 で、Apache + SSL の Web サーバを動かす

このページの中ほどの5番以降に説明されている

/etc/apache2/sites-available/000-default.confの設定
/etc/apache2/sites-available/default-ssl.confの設定
SSL証明書の取得にあるcerbotのインストールと設定です。

 

WordPressのSSL化は
一般設定のWordPressアドレス(URL)とサイトアドレス(URL)に加え、プラグインのSearch Regexを利用して、画像のリンクURLも含めて全てのhttp://jm1lxs.comを、https://jm1lxs.comに書き替えました。

http://jm1lxs.com

https://jm1lxs.com

 

リダイレクトは
Apache2のmod_rewrite有効と、SSL証明書の取得中に2のRedirectを選択した事で済んでいます。

$ sudo a2enmod rewrite
$ sudo certbot --apache  -d jm1lxs.com
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

 

この常時SSL対応時のOSはUbuntu Server 19.10です。

当サイトはレンタルサーバーでは無く、自宅のPC(中古パソコンのTOSHIBA EQUIUM S6500)で運用しています。

↓ これが当サイトのサーバーに使用しているPCです。

今まで、当サイトのサーバー用PCはMac mini (Late2009) MC238J/Aでしたが、ハードが古いのでmacOSのバージョンを上げられず、WordPressのバージョンアップに必要なPHPも新しく出来ずじまい(その方法が分からない)だったのでPCを変えました。今度のPCも古いですが、UbuntuなのでOSは最新です!

↓ 今回サーバー用PCに起用したTOSHIBA EQUIUM S6500です。この記事を投稿した(2019年11月25日投稿)直後なら、これを見ている貴方は間違い無く、このPCと繋がっています!

このサーバーに変な攻撃はしないでね。😉

 

約3年ぶりのサーバー用PCの入れ替えなのと、久しぶりなUbuntuでのLAMPインストール、WordPressの復元と常時SSL対応までしたので苦労しました。

ラズパイのアップグレード後に置時計が起動しなくなってしまった。今回のRaspbianのアップグレードは27だったか30近い項目があり規模が大き目でした。このアップグレード中にLXDEの文字があったので、それが影響したかなぁ?と思っています。

置時計が起動しなくなった原因はautostartファイルが無くなった為でした。

↓ 無いので新たに作ります。

$ sudo vi ~/.config/lxsession/LXDE-pi/autostart

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
#@xscreensaver -no-splash
@point-rpi

# BEGIN ADDED
# Chromium parameter references:
# http://peter.sh/experiments/chromium-command-line-switches/
#@/usr/bin/chromium-browser --kiosk --start-maximized --user-data-dir http://127.0.0.1/
@/usr/bin/midori -e Fullscreen -a http://127.0.0.1/

# Hide mouse
@unclutter

# Disable screensaver
@xset s off

# Disable screensaver blanking
@xset s noblank

# Disable DPMS (Energy Star) features
@xset -dpms

# END ADDED

 

あとは、ラズパイを再起動するだけ。

LCDディスプレイを取り付けて天気予報付き置き時計にする」を真似て私のラズパイも置き時計にしてみました。

 

そこで私の環境のせいかインストールに苦労した所があるので、その部分をアップします。

 

基本構成
Raspberry Pi 2 Model B
2017-11-29-raspbian-stretch-lite.zip
3.5インチHDMI LCD タッチモニタ

 

↓ 最小限のGUI環境でやりたいのでOSはあえてlite版、これに最小限のGUI環境と日本語フォントをインストールしました。

$ sudo apt-get install raspberrypi-ui-mods
$ sudo apt-get install fonts-ipafont

 

↓ 私が無知な為一番苦労したのがRuby関連でした。2017-11-29-raspbian-stretch-lite.zipの中にあるはずのRubyが、利用できないので困りました。結局、rbenvとruby-devをインストールして解決しましたけど。

$ sudo apt-get install rbenv
$ sudo apt-get install ruby-dev

$ ruby -v
ruby 2.3.3p222 (2016-11-21) [arm-linux-gnueabihf]

$ sudo gem install nokogiri pry pry-byebug

 

↓ 次に困ったのがCRON関連で、私の環境では/root/.rbenv/shims/rubyがnot foundとなってしまいcrontab -eで設定する内容の変更が必要でした。
さらに、天気予報の取得を1日4回だけ毎日、0時10分、5時1分、11時1分、17時1分に行う様設定しました。

$ sudo crontab -e

10 0 * * * cd /git/pi_weather/script; /usr/bin/ruby /git/pi_weather/script/run.rb > /dev/null
1 5,11,17 * * * cd /git/pi_weather/script; /usr/bin/ruby /git/pi_weather/script/run.rb > /dev/null

 

その他の変更部分は

↓ sudo vi /etc/xdg/lxsession/LXDE-pi/autostartを次の様に変えました。

$ sudo vi ~/.config/lxsession/LXDE-pi/autostart

 

↓ 表示誤差を最大1秒から最大0.1秒に変えました。1000を100に変更。

$ sudo vi  /git/pi_weather/client/src/index.html

        if ((intervalCount % intervalThreshold) == 0) {
          showDate(date);
          getWeather();
        }
      }, 100);
    });

    // デバッグ用
    var showMessage = function(str) {