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

【初心者向け】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ページが表示されます。

    結果

    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をコピーしました