2020年8月12日水曜日

Linux MintでLAN専用Webサーバ(Apache2・php・MySQL)の実験環境を構築する

 過去に似たようなことに取り組んでいたのですが、思うところあって再度の挑戦をすることにしました。一瞬、ファイルサーバとして使っているCeleron J1800マシーンに実験環境をと思ったのですが、非力な上に不具合が生じた場合ファイルサーバとして使えなくなるリスクを考え、取りあえず先日メンテナンスをしたメインで使っている自作PCLinux Mintで実験的な環境を作ってみることにしました。

以前は、apt-get(今は「apt」のみ)コマンドを使って必要なものをインストールしましたが、今回は(ダメ元で)「ソフトウエアマネージャ」を使ってみました。インストールしたのは、以下の通りです。(順番も大事なので上から順に入れました)

  1. Apache2(2.4.x)
  2. php(php 7.2.x)
  3. mysql(MySQL 5.7.x)※ServerとClient

ここまで入れて再起動してから、「phpMyAdmin」も同じく「ソフトウエアマネージャ」で入れました。インストールの最中に、Webサーバは何を使っているか(Apache2)、dbconfig-commonで設定するか(チェックして「next」ボタン)、ユーザーはどうするか(MySQLの設定はしていないのでroot)というようなことを聞かれますが、Apache2とphp、MySQLが動作していて設定が正しくないとインストールに失敗をします。(再起動したのは、この3つを動かすため)

次に動作確認をします。「端末(ターミナルエミュレータ)」を開いて次のようにコマンドを打ち込むと、それぞれレスポンスが返ってきます。

$ apache2 -v
$ php -v
$ sudo mysql -V
※mysqlだけは、sudo(管理者権限)でないとうまく動きません。(そういう設定にしてあるからですが)mysqlのオプションの「-V」は、大文字です。

#ついでに「perl -v」でPerlの動作確認もしましたが、Perl 5が問題なく動いていました。

次に、ブラウザでの確認をします。はじめに、「http://localhost/」でWebサーバが動いているか確認します。何らかのデフォルトページ「It works!」が表示されたらWebサーバとして動いています。Linux Mintでは、「Apache2 Ubuntu Default Page」というページが表示され、その中に各種ファイルの置き場所まで丁寧に書かれていました。これに従って、次の動作確認をします。先程のページから、Webサーバのデフォルトのページがどこにあるか(今回は、「/var/www/html/」でした)を確認して、その中にphpinfo.phpという名前(任意でわかりやすければ「phpinfo」のところは何でも良い)のファイルをつくり、以下のように記述します。

<?php
phpinfo();
?>

これを、Webサーバのデフォルトのページがあったフォルダに入れておきます。管理者権限が必要なので、sudoで作業をすると良いと思います。このままでは動作しないので、今度は「パッケージマネージャ」から「libapache2-mod-php7.2」というモジュールを探してインストールします。このモジュールは、先程の「ソフトウエアマネージャ」では出てきません。面倒でなければ「端末(ターミナルエミュレータ)」から以下のコマンドでもインストールすることができます。
(今回の作業は、The modern stone age.さんの【Ubuntu 18.04 LTS Server】Apache2とPHP7.2を動かすを参考にしました)

$ sudo apt install libapache2-mod-php7.2

ここまでできたら、Webブラウザで「http://localhost/phpinfo.php」を開いてphpの設定を確認します。phpが動いていることを示すインフォメーションページが表示されたら、Apache2とphp7.2がつながっていることを表しています。最後は、MySQLとの連携ができているかを確認します。先程インストールしておいた「phpMyAdmin」を起動します。Webブラウザで「http://localhost/phpmyadmin/」を開いても良いし、Mintメニューから「プログラミング」→「phpMyAdmin」とたどっても開くことができます。「phpMyAdminへようこそ」のページが表示されたら成功です。
(同【Ubuntu 18.04/16.04 LTS Server】phpMyAdminをインストールを参考にしました)

これで、それぞれのシステムを動かして連携させるところまで確認できました。この後は、実際の運用を考慮した細かな設定をして、より使いやすい環境にしていきたいと思います。余談ですが、この作業の過程でXAMPPという道具(ソフト)を見つけました。LinuxでもmacOSでも動くようなので、こちらもちょっと試してみようかと思っています。

2020年8月9日日曜日

メインで使っていた自作PCのメンテナンスとアップグレード(Celeron G540→Core i3-3240)

前回の続きです。新しいPCを自作して、メインで使ってた自作PCと交代したので、メンテナンスをはじめました。

まずは異音がしていたファンを特定します。どうやら、ケース前面についていた12cmの吸気ファンがヘタっていて、ときどき異音がすることがわかりました。これを自宅に在庫していたScytheの12cmファンに換装することにしました。それにしても、ケース内はホコリだらけ。SSDへの換装のときも掃除をしたのですが、ホコリが溜まりやすくなっているようです。そこで、これも自宅に在庫があった8cmファン(X-FANブランド)を排気の向きで背面に付けました。マザーボード(GIGABYTEGA-B75M-D3H)のFANコネクタは1つしかないので、2本に分岐するケーブルを使いました。

それ以外の構成はそのままにしようと思ったのですが、2.5inch750GBのHDD(WDの青)の装着がケース底面(何故かそんなところに装着用のビス穴がある)なのが気に入らず、余っている5.25inchベイ用のマウントキット(2.5inch*2、3.5inch*1)を購入して装着しました。電源は、玄人志向500W 80+ BRONZEが載っていたので、これはそのまま使うことにしました。

後は、CPUファンを外してグリスを塗り直してもとに戻し、動作確認をしたらメイン自作PCとして使おうと思ったのですが、Amazonさんから悪魔の囁き(大げさ)が聞こえてきました。この自作PCには、IntelCeleron G540(2コア2スレッド2.5GHz Sandy Bridge)というCPUを載せているのですが、次世代のCore i3-3240(2コア4スレッド3.4GHz Ivy Bridge)が3,000円を下回るお値段で手に入るというではありませんか。 しかも、Celeron G540の方がお値段が高い。どうしてこんなことになっているんだろうか、何かの間違いか罠なのか、俺は試されているのか騙されているのか…。「ポチッ」

ということで、Celeron G540からCore i3-3240へ換装し、動作確認をします。Celeron G540は、グリスがすっかり乾いて固くなっていました。CPUファンは両方ともそっくりでしたが、電流(A)が違ったのでi3-3240付属のものを使いました。一応電池を抜いて設定をクリアしてからもう一度電池を入れて電源を入れました。この自作PCのSSDにはLinux Mint 19.3が入っていますが、全く問題なく動いてくれました。CPUファン、ケースファン(2つ)、電源ファンのいずれも静音で、全く音がしないと言っても過言ではないくらい静かになりました。(激安CPUの中には、偽装品もあるらしいので購入する際は信頼できるところからの方が良いようです)

システムモニタで確認すると、CPUは無事にCore i3-3240と認識されていて、CPU数は4つ(2コア4スレッド)と認識されていました。メモリは、2GB2本と4GB2本の4本が挿さっていて、合計12GB(一部グラフィックと共有)ですが特に問題を感じていません。気持ちの問題かもしれませんが、速くなった印象です。やりたいことが増えてきているので、いろいろテストする際にも活用していきたいと思います。

ついでに、自室に何本も取り回しているLANケーブルでラッチが壊れているものが数本あったので、修理することにしました。久しぶりにカテゴリー5のケーブルを修理しましたが、細かい作業は見にくくて苦労しました。後で調べたら、ラッチだけ復活させるものが出回っている(例えばこんなの)んですね。orz

2020年8月6日木曜日

久しぶりにPCを自作(Core i3-9100とB365マザーで)してLinux Mint 20で動かしてみた

思えば、このところ自分でパーツを集めてPCを作るという作業をしていないことに気づきました。今メインで使っている自作PC(Linux Mint 19.3で動作中)は、2012年末に作ったもので、その後パーツを追加したりケースを新しくしたりSSDに換装したりして、現在でも快適に動いています。このPCを作った翌年に購入したMacBook Proは、既に次の代への移行を済ませましたし、少し時期をずらして買い替えているiMacも2017年モデル(ブログの記事がないのは、未だに微妙な不具合が解決しておらず、ほぼサーバ用途としてしか使っていないことが原因です。弄り倒している時間もない。orz)なので、メイン自作PCがかなり古いことを気にしていました。

とは言え、この自作PCは不安定でもなければ不満もない(ときどき起動時にファンあたりから異音がするけど…)ため、しばらくはこのまま使っていくつもりではあります。しかし、突然の故障に備えて新しいPCを組んでおくことにしました。

今回選んだパーツは以下の通り。

電源は、以前に自作したパソコンで使っていた(KEIANKT-520RSという520W電源)もので、比較的新しいものだったため、そのままを使うことにしました。マザーボードの電源は24ピンで、CPU電源が8ピン。すべてこの電源ユニットで対応できました。ゲームをやることもないので、グラボは載せません。これを、自宅にあったケースに詰め込みました。(マウスコンピュータLindowsマシーンで使われていたもの)

5.25inchベイにDVDドライブを載せようかと思いましたが、自宅在庫がSlim ODD対応のDVD-RWドライブしかなかった(IDE接続の古いやつは見つけたけど)ので、これを5.25inchベイに載せるマウントキットを購入しました。聖仁商事で取り扱われているICY DOCKというブランド(CREMAX社)のMB343SPOというものです。これに、Slim ODD対応のDVD-RWドライブと250GBのHDDを装着し、5.25inchベイに取り付けました。起動用のSSDは、在庫していたものから探し出して3.5inchに変換するマウントアダプタに取り付けて、3.5inchベイに取り付けました。FAN系は、CPUファンと背面ケースファン(古いやつがヘタっていたので交換した)1つ着けました。4cmの小型2連ファンも前面に着けてありました。

もう1つの5.25inchベイには、USB 3.0&各種カードリーダー(KKmoonというメーカーのもの)を装着しました。これで、フロントでUSB 3.0が使えるようになりました。

この構成で電源を入れてBIOSの設定をしました。ASRockのマザボは超久しぶりにいじりましたが、マウスで快適に操作できて使いやすくなっていました。日本語化にも対応していて使いやすい。(浦島太郎的発言?)OSは、Linux Mint 20(64bit)にしました。動作は快適だし申し分ありません。ときどき、高周波のノイズ(コイル鳴き?)が聞こえたり、マイクジャックとヘッドホンジャックの調子が悪かったりするので調整が必要なのですが、メイン自作PCのメンテナンスの間だけ仮メイン自作PCとして活用しようと考えています。

2020年7月24日金曜日

カブトムシの世話(2020夏)〜小ぶりなカブトムシが成虫に

5月の世話から2ヶ月半くらいになりましたが、6月の末頃からカブトムシがゴソゴソいい始め、羽化してきたことがわかっていました。例年に習ってカブトムシゼリーを投入。

昨年は、毎日10〜12個程度消費されていましたが、今年は、7月に入ってもなかなか梅雨が明けず、気温がそれほど高くなっていない(湿度が高いから不快なのだけれど…)ためか、それとも個体が小さいものが多いためか、そもそも蛹化不全や羽化不全で羽化数が多くなかったのか…いずれにしてもゼリーの減り方は例年の6割くらいで、毎日与えているゼリーは7個くらい。それでも余ることもあって、餌の調整が難しいのが悩みどころです。

写真には撮りませんでしたが、蛹化不全の個体が2体と羽化不全の個体が1体ほど、腐葉土マットの上に出ていたので処分しました。羽化したものは、学校の教材としてつがいで提供したり、この後に産卵された卵から幼虫の観察をしてもらったりすることも考えています。気をつけなければならないのは、新型コロナ対策。集まって見ないように注意しなければなりませんので、持っていく方法にも工夫が必要だと思っています。
(どのようにするかは、まだ決めかねています)

今年は、夏休みが短くなってしまって、子供たちの楽しみがだいぶ減ってしまっているので、こんなことでもお手伝いできたらと思っているところです。

2020年7月2日木曜日

Orange Pi OneをRaspberry Pi Imagerで作ったArmbian起動SDカードで動かす

Orange Pi(H3 Cortex-A7 Quad-core 1.2GHz)は、Raspberry Piのようなシングルボードコンピュータを作っているメーカーですが、RPiに比べて様々なバリエーションのシングルボードコンピュータを開発・販売している上に、価格も安く提供されていてちょっと使ってみたいと思っていました。2017年のはじめに、Amazonで取り扱っているのを見つけてケースと電源ケーブルがセットになっているOrange Pi Oneを衝動買い。とは言え、RPiに比べて知名度が低くて必要な情報を見つけるのが難しく、自分がMacユーザーということもあってうまく動かせず難儀をしました。(しばらく放置モード)そんな中、コロナ禍の関係で自宅ですごす時間が多くなり、家の中でやれることは限られているのでいろいろと片付けをしました。すると、購入したまま放置していた、Orange Pi Oneと同ZeroNano Pi NEO2が出てきました。とりあえず手始めに、Orange Pi Oneを動かしてみることにしました。

そもそもの問題は、MacではOSイメージ(imgファイル)をSDカードに入れて起動可能なSDカードを作ることが難しいということ。挫折した時期のOS(Armbianを使いました)は、安定性も悪かったようですが、それ以前に一般的にはRufusというツールを使って起動可能なSDカードを作るらしいのですが、このツールはWindowsにしか対応しておらず、macOSでは動きません。以前にもやったことがある「ddコマンド」を使ってやる方法が思い浮かぶのですが、それでもうまく動かなかったのでチャレンジする気持ちが薄れてしまっていたのでした。

そんな私に「天の声」が聞こえました(嘘)。もしかして、「Raspberry Pi Imager」でOrange Pi Oneの起動SDカードを作ることができるのではないかと。思いついたらやってみるしかありません。ArmbianのダウンロードサイトからOrange Pi One用のArmbian OSイメージファイル(今回は、Busterを選択)をダウンロード(Direct Download)して使うことにしました。圧縮された形でダウンロードされるので、「The Unarchiver」あたりで解凍しておきます。

Raspberry Pi Imagerを起動して、Operating Systemの「CHOOSE OS」をクリックして「Use custom」を選択します。すると、imgファイルなどが選べる窓が開くので、Orange Pi One用のArmbianのimgファイルを選択します。次に、SDカード(16GBのSDカードをSDFormatterでフォーマット済み)を挿してSD Cardの「CHOOSE SD CARD」をクリックして挿したSDカードを選択します。後は、「WRITE」をクリックしてしばらく待つだけです。これをOrange Pi Oneに挿して電源を入れると、無事に起動してくれました。

ワクワク感が抑えられず、何ができるか探ってみることにしました。はじめにroot(初期パスワードは「1234」)でログインすると、すぐにパスワードの変更を求められるので、初期パスワードを入力して、任意の新しいパスワードを入力(2回)します。すると、ユーザーの設定に進むので、自分のユーザー名とパスワードを設定します。(他にも聞かれるけれども[]の付いた項目は入力しないでReturn(Enter)で飛ばすことができるようです)ここまでできたら、自分のユーザー名とパスワードでログインできるかチェックしてみます。無事にログインできたら「reboot」コマンドで再起動して、各種設定をするためにrootでログインし直します。この過程で、不具合があった場合には、SDカードの作り直しが必要な場合もあります。

この後は、お決まりの「apt update」と「apt upgrade」で最新の状態にします。

今回の作業は、「Orange Pi One に Armbian を入れました」、「“Banana Pi”にArmbianを載せました」を参考にしましたが、ここからGUI環境を実現するための試行錯誤が始まりました。残念ながら、まだ良い方法が見つかっていません。書かれているとおりにやっても、最終的に再起動すると何も映らなくなります。動いている形跡があるので、何らかの方法でアクセスすることができれば解決の糸口が見つかるかもしれません。

2020年6月28日日曜日

Raspberry Pi 4Bを使ってみる

コロナ禍の影響もあってか、品薄状態かなと感じていたRaspberry Pi 4Bでしたが、緊急事態宣言が解除された頃には少々値段が安くなっていたので思わず衝動買してしまいました。メモリー4GBモデル単体と、別売りの電源、ヒートシンク、ケース(ファン付き)のセットを一緒に購入。合わせて8千円程度の出費で入手できました。

はじめに、ヒートシンクを取り付けて、ケース(アクリル板が層になっているタイプ)の中に組み込むように組み立てていきました。説明書はなかったのでAmazonの商品ページにあった組み立て手順らしき画像を見ながら作業をしました。最後の1枚には、ファンを取り付けてGPIOの4番(5V)と6番(GND)に電源をつないでケース自体のビス止めをしました。

続いて、起動SDカードを準備します。今までは、NOOBSを使って起動SDカードを作っていましたが、今回は、Raspberry Pi Imagerを使って起動SDカードを作ることにしました。Macで作業をしているため、ダウンロードサイトからRaspberry Pi ImagerのMac版をダウンロードして使いました。ダウンロード後、ディスクイメージファイル(Imager.dmg)を開いて、Raspberry Pi Imagerをアプリケーションフォルダにドラッグ&ドロップします。使い方は簡単で、はじめにSDカード(SDFormatterでフォーマット済み)を挿入してRaspberry Pi Imagerをダブルクリックで起動します。Operating Systemの「CHOOSE OS」をクリックして「Raspberry Pi OS(32-bit)」を選び、SD Cardの「CHOOSE SD CARD」をクリックして挿入しておいたSDカードを選択します。最後に、「WRITE」をクリックして待ちます。(少々時間はかかります)出来上がった起動SDカードをRaspberry Pi 4Bに挿して起動します。ここまで、とても順調にできました。

RPi 4Bを起動すると、いつもの通り各種設定の後にアップデート作業を行います。これも時間はかかりますが、最新の状態にしておくことが重要です。一通りの作業が終わってインストールされているものを確認すると、FullバージョンのNOOBSを使ったときより、かなり限定されたものしか入っていないことがわかりました。ソフトウエアのインストールは、Raspberryメニューの「設定」から「Add / Remove Software」か「Recommended Software」を選んで行います。はじめに、「Recommended Software」から定番のものをインストールして、足りないものは「Add / Remove Software」で探してインストールすることにしました。

〈Recommended Softwareで入れたもの〉

〈Add / Remove Softwareで入れたもの〉

はじめの設定の中でロケールを「Japan」としたためか、Fcitx-Mozcは自動的に入っていました。日本語表示や入力に問題はありません。アプリケーションソフトの動作や日本語化もかなり良いと思います。CUPSを入れたので、共有プリンタでの印刷も問題なくできました。

Scratchは、オンライン版(Chromiumを使用)を含めて3バージョンとも快適に動きました。オフライン版の2と3は、日本語入力も問題なし。普通のPCにLinuxを入れて普段遣いをしている感覚では、全く問題はありません。

タスクマネージャで確認すると、CPUやメモリの使用率もかなり低く、タスクバー(LXPanel)にCPU温度を表示させて測ると、待機状態で40度を超えない程度。少し動かしても50度を超えない程度くらいまでしか上がりませんでした。快適と言っていい感じです。

2020年6月21日日曜日

Raspberry Pi 2BとScratch 3でデジタルサイネージ(シャットダウンスイッチをつける)

前回の続きです。まず、Raspberry Piは、defaultでマウス操作などをしない状態で10分程度でモニタがブランク画面になる(スクリーンを守るための仕様)ようになっています。デジタルサイネージとして使うのですから、当然マウスもキーボードも使いません。(と言うより抜いてしまいます)その場しのぎの方法としては、ターミナルを開いて以下のコマンドを走らせることでブランク画面になることを回避することができます。

$ sudo xset s off
$ sudo xset -dpms
$ sudo xset s noblank

より本格的な方法としては、XScreenSaverを使うと良いようです。まずはインストール作業から。

$ sudo apt install xscreensaver

インストールが終わったら、Raspberryメニューから「設定」をたどっていくと「スクリーンセーバー」の項目が現れます。これをクリックして、「表示モード」タグ内の「モード:」から「セーバーを無効にする」を選びます。これで再起動すればモニタがブランクになることはなくなります。ここまでは、まだ序の口。

続いて本題のシャットダウンスイッチを設定します。ここからはGPIOの出番です。今回は、pythonでプログラムを書いて、自作PCのテストで使われる電源/リセットのスイッチを挿してシャットダウンスイッチとして動作させます。GPIOの状態は、ターミナルから「gpio readall」コマンドで確認することができます。GPIOの番号は「BCM」の欄を見るようです。
#詳しくは、クラゲのIoTクイックレシピの「RaspberryPiでLチカ」を参考にしました。

以降は、「ラズパイでシャットダウンボタンを付ける(ついでに起動ボタン)」を参考に、GPIOの設定をしてプログラムを動かします。GPIOの23番を選んで設定をしていきます。すぐ隣にGND(0V)があるからです。スイッチのON/OFFを検知させるためには、23番をinからupに設定を変更する必要があります。試しに以下のコマンドで動作確認をしてみました。

$ gpio -g mode 23 up

これで、23番(16)と隣のGND(14)をスイッチでつなぐと、ONで0、OFFで1が出てくるようになります。(「gpio -g read 23」で確かめられます)これで、ハードウエアの動作確認は終了です。

続いてpythonでプログラムを書きます。とはいえ、先達が作ってくれているものがありますので、ありがたく拝借いたします。下準備として、/home/pi/の下に、pyhomeというフォルダを作って、その中にshutdownd.pyというテキストファイルを作ります。中身は、以下のとおりです。

#!/usr/bin/python
# coding:utf-8
import time
import RPi.GPIO as GPIO
import os
pinnumber=23
GPIO.setmode(GPIO.BCM)
#GPIO23pinを入力モードにして、pull up設定にします
GPIO.setup(pinnumber,GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True:
GPIO.wait_for_edge(pinnumber, GPIO.FALLING)
sw_counter = 0
while True:
sw_status = GPIO.input(pinnumber)
if sw_status == 0:
sw_counter = sw_counter + 1
if sw_counter >= 50:
print("長押し検知!")
os.system("sudo shutdown -h now")
break
else:
print("短押し検知")
break
time.sleep(0.01)
print(sw_counter)

#「shutdown -h now」が煩わしいので「halt」を使おうと思ってやってみましたが、うまくいきませんでした。

pyファイルの中身が出来上がったら保存して、以下のコマンドで権限を設定します。

$ sudo chmod 755 shutdownd.py

次に、/usr/lib/systemd/system/の下に、shutdownbuttond.serviceというサービスファイルを作ります。今回は、スクリーンエディタのnanoを利用することにします。
#nanoの使い方は、ゆたりんブログの「[ソフト] nano(テキストエディタ)の基本的な使い方」を参考にしました。

$ sudo nano /usr/lib/systemd/system/shutdownbuttond.service

中身は、以下のように書きます。

[Unit]
Description=Shutdown Daemon
[Service]
ExecStart =/home/pi/pyhome/shutdownd.py
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target

これを保存して、次のコマンドを使ってバックグラウンドで動かします。

$ sudo systemctl enable shutdownbuttond.service
$ sudo systemctl daemon-reload

これでシャットダウンスイッチが使えるようになるはずですが、「systemctl status shutdownbuttond.service」コマンドで確かめたところ、どうもうまく動いていない感じだったので、「reboot」コマンドで再起動してみました。すると、無事に動作するようになりました。これで、Scratch 3が動いている状態からでもスイッチひとつでシャットダウンまでできるようになりました。残りの課題は、Scratch 3を自動起動させることです。