Daily life, hobbies and technical information

Raspberry Pi 4 Model B インストール

ケースオープン(側面)
ケースオープン(斜め)
ケース

Raspberry Pi 2 Model A を持っていたのですが、古くなったので最新の Raspberry Pi 4 Model B を購入しました! 当初は基板の本体だけ買う予定だったのですが、売り切れてたのでベアボーンキットを購入しました。全部揃っているのは安心ですね。

備忘録程度にインストール手順を記載しておきます。 まず、自宅での使い方としては、Linux PCとして使う予定でいます。 WiFi内蔵なので、ネットワークは WiFi を使い、普段はsshでログインして利用するので Headless な Raspberry Pi OS Lite (約500MByte)を入れてみました。 X11入れてGUIでの操作はしません。メモリとSDCard, CPU のリソースは可能な限り、削減しながら楽しみたいと思っています。

まずはOSをインストールします。 Raspberry Pi Imager というツールでインストールするようです。 ウチの母艦は Windows 11 64bit なので Windows 64bit 版をダウンロードして起動しました。

ダウンロードしたインストーラでインストール後、起動すると以下が表示されます。 私は、CHOOSE OS -> Raspberry Pi OS (Other) -> Raspberry Pi OS Lite (32-bit) を選択しました。 あとは、インストールするSDCard(32GByte)をPCに差し込んで認識させて、CHOOSE STORAGE -> Mass Storage Device USB Device - 31.3GBを選択しました。

ボタンWRITEをクリックすると、以下の確認ダイアログが表示されるのでYESを選択します。

書き込みと検証が終わったら、SDCardを抜き、終了します。
引き続き、OSをインストールする場合は CONTINUEボタンで書き込めます。

SDCardを差し込み、電源ケーブルを指したら起動しました!
なになに?
「rfkill で WiFi がブロックされているから raspi-configcountry を設定しろ」
とな?

上記のメッセージを意識しつつ、各種設定をします。
まずは、パスワードをデフォルトから変更します。
アカウントは piroot でいいかな。以下コマンドで変更しました。

その後、raspi-config コマンドを実行します。

起動直後表示

$ sudo passwd
$ sudo passwd root
$ sudo raspi-config

まずは WiFi の設定をします。

次に、Locale を en_US.UTF-8 にします。
(多分、デフォルトだと思うのですが、私は日本語化しない派です。各自お好きなLocalにしてください)

Timezone は Asia/Tokyo とします。

ウチは106日本語キーボードですので、以下のように設定します。

WiFiのチャンネル設定の countryJP とします。

全ての設定を終え、終了すると再起動を促されるので再起動します。

再起動後にログインして、ネットワークを確認します。 以下のコマンドで確認します。

$ sudo ifconfig

うむうむ!IPアドレスが振られてるので、使えそうですね。
さっそく、apt を使ったら、最新パッケージに更新できました!

$ sudo apt update
$ sudo apt upgrade

ひとまず、インストール完了しました。
調べてみると、SDCardを長持ちさせるための設定等があるようなので、後日調べてやってみたいと思います。 それと、何かプログラムを動かすときは、Docker で運用する予定なので、Dockerのインストールも記事にできたらと考えています。

Azure App Service(Node Stack) に Webサービス(NestJS)をデプロイする方法

最初に

趣味で作ったWebサービス(NestJS)をAzure App Serviceに無料で公開する方法を記載します。
まず、Azure公式ドキュメント「Azure で Node.js Web アプリを作成する」を参考に実施すると、素直に動作しました。
ですので、NestJS でも問題ないと思ってデプロイして、ブラウザで表示したら以下の エラー が表示されてしまいました。

Azure Portal - create app service

代替手段の調査

うーん、困った…。
誰か解決してくれていないかと検索したら、Azure Functions にデプロイしている方と、Azure Web App for ContainersでDockerコンテナをデプロイしている方がいました。

どちらの方法も要件がマッチしていれば使いたいところでしたが、、、
Azure Functions を利用する方法だと、無料でできそうだけどWebサービス内のメモリキャッシュは使えるか?疑問に感じたので控えることにしました。
Dockerコンテナを利用する方法だと、コンテナをデプロイするためには有償のAzure Container Registryが必要となるようなので断念しました。

解決手段

ソースを一部修正するのと、Azure App Serviceの設定を一か所追加することで解決できました。
以降に私が動作確認した手順を記載します。

NestJS初期化

NestJSを初期化するために、以下コマンドを実行します。

> npm i -g @nestjs/cli
> nest new websrv

console - nest new websrv

実行後、以下のようなwebsrvフォルダが作成されます。

+---websrv
    +---node_modules
    +---src
        \---main.ts
    \---test

NestJSソース修正

src/main.tsを修正します。

# src/main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  // 元のソースコード
  // await app.listen(3000);

  // 追加したソースコード
  // Azure App Serviceはポート8080を利用する。
  // ポート番号は環境変数 **PORT** で定義されているようなので、
  // 環境変数PORTを優先して利用するように修正する。
  const port = process.env.PORT || 3000;
  await app.listen(port);
}
bootstrap();

ビルド

ソースの修正ができたら、ビルドします。

> npm run build

console - npm run build

Azure App Service作成

デプロイ先となる Azure App Service を作成します。
作成後、[構成]->[全般の設定]->[スタートアップコマンド]に node dist/main を設定します。

Azure Portal - create app service settings

デプロイ

VSCodeのプラグイン「Azure App Service for Visual Studio Code」を使ってデプロイします。
具体的な手順は、「Deploy to Azure (Azure へのデプロイ)」を参照してください。

動作確認

ブラウザでAzure App ServiceのURLを開くと成功しました!

Azure Portal - create app service

xrea でのWordPress構築時に躓いたこと

WordPressでブログを再開しようとしたところ、インストールに躓いたので残しておきます。

内容

Xrea – WordPressのインストール を参照して実行した後に、URLをブラウザで参照すると以下が表示されてしまいました。

Parse error: syntax error, unexpected ‘.’, expecting ‘&’ or T_VARIABLE 
in ****/wp-includes/functions.php on line 1094

原因

検索してみると「WordPress – サポート » インストール » エラーでWPにログインできません。」がヒットしました。 どうもphpのバージョンが古い?ようです。 うーん、xreaでphp74に変更したんだけどなぁ。

念のため、phpinfo()を起動して確認したところ、version 5.3でした!なぜ?

<?php
phpinfo();
?>

対処

悩んだ末、何となく/public_html/.htaccess に記載しているphpの設定をコメントアウトすると解決しました! 過去の設定がゴミとして残っていて、悪さをしていたようです…orz

...
AddHandler application/x-httpd-phpcgi .php
...

参考

ブログ再開

巨匠の趣味、技術情報ネタ投稿を再開します。
追々、Facebookとの連携等したり、デザインをブラッシュアップしていきたいと思います。