この記事では、ラズパイを使ってローカルネットワーク内で動作するWebサーバーの構築手順をわかりやすく解説しています。
この記事の対象
準備するもの
- Raspberry Pi本体(Raspberry Pi 4など)
- microSDカード(OSインストール済)
- 電源ケーブル、HDMIモニター、キーボード(初期設定時)
- インターネット接続(Wi-Fi または LANケーブル)
- ターミナル操作の基礎知識
OSのインストール方法については以下をご参照下さい。
Webサーバーとは?
Webサーバーとは、HTMLファイルや画像などのWebコンテンツを配信するソフトウェアです。ブラウザからアクセスされたときに、指定されたファイルを返すことで、ユーザーにWebページを表示します。
ラズパイにWebサーバーをインストールすることで、自作のホームページやIoTデータの表示ページを構築することができます。
Webサーバーを選ぶ
ローカルWebサーバーとしてよく使われる選択肢は以下の通りです。
サーバー | 特徴 |
---|---|
Apache | 最も一般的、設定が豊富 |
Nginx | 高速で軽量、静的ファイル配信に最適 |
Flask | Python製。軽量で学習用途にも最適 |
今回は 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′ を忘れず指定 |