raspberrypi zero2WでローカルWebサーバーを構築した件について

技術スタック

機器
・Raspberry Pi Zero 2 W(RAM 512MB)

OS
・Raspberry Pi OS Lite (32-bit)

ストレージ
・microSD 32GB

Webサーバーソフトウェア
・Apache

その他
・PHP
・MariaDB

ラズパイOSの導入

Rasberry Pi ImagerでRaspberry Pi OS Lite (32-bit)を選択。

設定項目
Capital city:Tokyo
Time zone:Asia/Tokyo
キーボードレイアウト:jp

ユーザー名:好きな名前(小文字英数字・アンダースコア・ハイフンのみ使用可)
パスワード:SSHログイン時に使うパスワード

SSID:自宅Wi-Fiのネットワーク名
パスワード:そのWi-Fiの接続パスワード

SSH接続を有効化するかどうか:ON

Raspberry Pi Connect:今回はOFF(ポート開放不要でブラウザから遠隔操作できる機能)

サーバー構築

1.PCからSSH接続する

ラズパイと同じネットワークに接続し、コマンドプロンプトで以下を実行。

ssh username@<IPアドレス>

※初回接続時は「fingerprint」の確認が出るので yes と入力→設定したパスワードを入力すればログインできる。

2.システムを最新化する

5~20分程度待つ。

sudo apt update && sudo apt full-upgrade -y

再起動。

sudo reboot

再起動後、再度SSH接続。

3.IPアドレスの再確認(念のため)

再起動でIPが変わっていないか確認。

hostname -I

Webサーバーソフトのインストール

1.好きなサーバーソフトを選ぶ

Apache+PHP

sudo apt install apache2 php libapache2-mod-php -y

インストール後、自動でサービスが起動

nginx

sudo apt install nginx -y

インストール後、自動でサービスが起動

sudo systemctl status nginx

2.動作確認

同じWi-Fi内の別のPC・スマホのブラウザから以下にアクセス

http://<IPアドレス>

3.MariaDB(データベース)のインストール

sudo apt install mariadb-server php-mysql -y

インストール後、セキュリティ設定を実行。

sudo mariadb-secure-installation

聞かれる内容は以下。
Switch to unix_socket authentication [Y/n]→ n
Change the root password? [Y/n]→ Y →新しいrootパスワードを入力
Remove anonymous users? [Y/n]→ Y
Disallow root login remotely? [Y/n]→ Y
Remove test database and access to it? [Y/n]→ Y
Reload privilege tables now? [Y/n]→ Y

4.Apache再起動

PHPとMariaDBを連携させたので念のため再起動。

sudo systemctl restart apache2

テスト用DBの作成

1.MariaDBにログイン

先ほど設定したrootパスワードでログインする。
※パスワードを入力(画面には表示されない)

sudo mariadb -u root -p

2.テスト用データベースとユーザーを作成

ログイン後、以下をMariaDBのプロンプト(MariaDB [(none)]>)で実行。
PHPアプリからは通常rootではなく専用ユーザーを使うので、それも一緒に作る。

↓SQL

CREATE DATABASE testdb;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'ここにパスワード';
GRANT ALL PRIVILEGES ON testdb.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;

3.確認と終了

SHOW DATABASES;
EXIT;

接続テストファイルの作成

1.PHP用の接続テストファイルを作成

以下のファイルを作成。

sudo nano /var/www/html/db_test.php

以下を貼り付け。

<?php
$host = "localhost";
$user = "webuser";
$password = "パスワード"; // 先ほど設定したパスワード
$dbname = "testdb";

$conn = new mysqli($host, $user, $password, $dbname);

if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}
echo "MariaDBへの接続に成功しました!";

$conn->close();
?>

保存:「Ctrl」+「O」→「Enter」→「Ctrl」+「X」

2.ブラウザで確認

http://<IPアドレス>/db_test.php

「MariaDBへの接続に成功しました!」と表示されればOK。
確認できたら、このファイルも削除。

まとめ

さて、ApacheもMariaDBも正常に動きました。
サーバー構築自体は簡単にできましたが、これを使って何をするかはまた、記事を書いていこうと思います。

コメント

タイトルとURLをコピーしました