ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

PythonでWeb Serverを立ち上げる

(2023-10-17 初稿 - 2023-10-27 追記)

(2023-10-27 追記)

いつの間にかRaspberry Pi OSも、12(bookworm)が公開され、Pi 4または5でwaylandを利用している場合は、後述する autostart の方法では自動起動することができなくなった。

Waylandを使っている場合の対処方法を追記をしたので、そちらを参照のこと。

(追記)

 

先日、ラズパイ(Raspberry Pi 3B+)に volumio をインストールして、便利に使っている。

普段、サーバの管理はsshで行っているが、Media Serverは、スマホタブレットでも接続するので、ブラウザからのアクセスが便利だね。

VNCもいいけれど、ラズパイをコンソールで動かして、ブラウザからアクセスすれば軽くていいね。

PythonでWeb Serverを立ち上げる

ということで、まずは、一番簡単にWeb Serverを立ち上げる方法を紹介する。

python3 -m http.server

とっても、簡単。

ちなみに、起動時のオプションのうち、利用しそうなものを紹介する。

Portは、デフォルトで 8000。ポート番号の直打ち。1024以上で、他のサーバとバッティングしないポートでアクセスすることができる。

--cgi cgiを動かす場合は、このオプションを付加。

--bind 127.0.0.1 ローカルPCしかアクセスできない。

           192.168.xxx.xxx(ローカルPCのIPアドレス) 筆者の確認したところ、指定するとローカルネットからアクセスできる(セキュリティ的には気休めでしかないけど…)。

--directory ディレクトリを指定できる。いくつもドキュメントルートを持っている場合に使い分けができる。

ということで、筆者は、以下のBashスクリプトで起動している。

#!/usr/bin/env bash 
cd ~/myweb
/usr/bin/python3 -m http.server 8000 --cgi

とても簡単にWebサーバが起動できるので、活用の範囲は広がりそう。

スクリプトを起動時から実行する

Bashスクリプトができたら、起動や再起動した直後から自動起動できるようにする。

以下のサイトを参考にユーザ権限の自動起動を試みたが、crontabの方法(@restart スクリプトのPATH)はWebサーバは起動するものの、なぜかCGIが実行できなかった。起動するタイミングがあるのか、今のところ原因は不明…(^_^;)

ということで、autostartの設定を行い、無事起動時から実行できるようになった。

具体的は、以下の手順を実行。

$ mkdir -p ~/.config/lxsession/LXDE-pi
$ cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/

ユーザが hogeスクリプト名がpyserverの場合。

$ echo '/home/hoge/bin/pyserver' >> ~/.config/lxsession/LXDE-pi/autostart

 

(Waylandを使っている場合 2023-10-27追記)

Raspberry Pi 4 または 5 で Wayland を利用している場合は、上記のautostartの方法ではうまく自動起動させることができない。

そこで、~/.config/wayfire.ini の最後に以下の行を追加することで、起動時からWeb Serverを起動することができる。

[autostart]
pserv = /home/hoge/bin/pyserver

(追記終了)

 

以上、pythonで簡単にWeb Serverを起動する方法を紹介した。

Webで検索していたら、busyboxでもWeb Serverを簡単に起動できることがわかった。機会があれば、紹介してみたい。

これからは、javascriptCGIの実行、実行結果を呼び出し元のファイルに書き込む方法について紹介する予定。

関連ページ