※このページではアフィリエイト広告を利用しています

【初心者向け】Raspberry PiでローカルWebサーバーを構築する方法

ラズパイ

この記事では、ラズパイを使ってローカルネットワーク内で動作するWebサーバーの構築手順をわかりやすく解説しています。

この記事の対象

  • Raspberry Piを持っていて活用方法を探している人
  • 自宅や学校でローカルネットワーク用のWebアプリを作ってみたい人
  • PythonやHTMLを使ってWebページを動かしてみたい人
スポンサーリンク
スポンサーリンク

準備するもの

  • Raspberry Pi本体(Raspberry Pi 4など)
  • microSDカード(OSインストール済)
  • 電源ケーブル、HDMIモニター、キーボード(初期設定時)
  • インターネット接続(Wi-Fi または LANケーブル)
  • ターミナル操作の基礎知識

OSのインストール方法については以下をご参照下さい。

>>>Raspberry Pi OS のインストール方法

Webサーバーとは?

Webサーバーとは、HTMLファイルや画像などのWebコンテンツを配信するソフトウェアです。ブラウザからアクセスされたときに、指定されたファイルを返すことで、ユーザーにWebページを表示します。

ラズパイにWebサーバーをインストールすることで、自作のホームページやIoTデータの表示ページを構築することができます。

Webサーバーを選ぶ

ローカルWebサーバーとしてよく使われる選択肢は以下の通りです。

サーバー特徴
Apache最も一般的、設定が豊富
Nginx高速で軽量、静的ファイル配信に最適
FlaskPython製。軽量で学習用途にも最適

今回は Apache を使った方法と Flask(Python) を使った方法の両方を紹介します。

ApacheでWebサーバーを構築

Apacheのインストール

sudo apt update
sudo apt install apache2 -y

Webページの表示を確認

インストールが完了したら、ブラウザで以下にアクセスしてみましょう。

http://<ラズパイのIPアドレス>/

「Apache2 Debian Default Page」が表示されれば成功です!

結果

自分のHTMLを表示してみる

cd /var/www/html
sudo nano index.html

内容を以下に書き換えます。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
    <title>ラズパイWebサーバー</title>
</head>
<body>
    <h1>ようこそ!</h1>
    <p>これはRaspberry Pi上のローカルサーバーです。</p>
</body>
</html>

保存して再読み込みすると、Webページが表示されます。

結果

【補足】Apacheがキャッシュしていて変更が反映されない場合

Apacheを再起動して、変更を確実に反映させましょう

sudo systemctl restart apache2

Flaskを使ってPythonでWebサーバーを作る

Pythonの知識を活かしたい方はFlaskがオススメです。

Flaskのインストール

sudo apt install python3-pip -y
pip3 install flask

エラーが出たときの対処

flaskをインストールしようとしたら、エラーが出たのでその対処法を記載します。ご参考になさって下さい。

error: externally-managed-environment

This environment is externally managed...

このエラーは、Pythonがシステムで管理された環境下にあり、直接pipなどでパッケージをインストールできない制限があることが原因のようです。

解決方法

仮想環境(virtualenv)を使う

Pythonのパッケージは仮想環境で管理するのが安全です。ホームディレクトリに仮想環境を作ります。

# ホームディレクトリに移動
cd ~

# 仮想環境を作成
python3 -m venv myvenv

次に仮想環境を有効にします。

source myvenv/bin/activate

最後にflaskをインストールします。

pip install flask

Flaskアプリの作成

任意の場所に移動して app.py を作成

nano app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<h1>Hello from Raspberry Pi Flask Server!</h1>"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

保存して実行

python3 app.py

ローカルからアクセス

ブラウザで以下にアクセス:

http://[ラズパイのIPアドレス]:5000

Flaskサーバーのページが表示されれば成功です。

結果

トラブルシューティング

問題解決策
ページが表示されないApacheが起動しているか確認 sudo systemctl status apache2
外部からアクセスできないルーターのポート開放設定を見直す
403 Forbiddenになる/var/www/html/ のパーミッションを確認
Flaskが外部からアクセス不可 host=’0.0.0.0′ を忘れず指定
タイトルとURLをコピーしました