せっかく作った Python 3 スクリプト。コンソールだけで動かすのはもったいないから、WebでUIを作って、iPhoneからでも実行できるようにしたい。
ーーー
RaspberryPi3 で apache を動かして、cgi-bin の Python3 を叩けるようにする。Apache はインストール済みの前提。ポートは8083に変えてある。
$ cd /etc/apache2/
$ cat ports.conf
http://自分のサーバアドレス:8083 にアクセス。
cgi-bin を作っていく。参考はこのへん。
まずは、UserDirの有効化 なるものが必要らしい。a2enmod は fedoraには無いコマンドだ。Debian系だけなのか。
$ sudo a2enmod userdir
次に Webアクセスした時に最初に表示されるフォルダ(DocumentRoot)を変更する。
(変更前)/var/www/html/
(変更後)/home/pi/Desktop/public_html/
設定ファイルで DocumentRoot の記述を変える。
$ sudo vim /etc/apache2/sites-available/000-default.conf
DocumentRoot の行 と、<Directory で始まる行 の記述を変更する。
サービスを再起動。
$ sudo systemctl restart apache2.service
$ sudo systemctl daemon-reload
$ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
$ sudo vim /etc/apache2/sites/available/000-default.conf
「Include conf-available/serve-cgi-bin.conf」のコメントを外して有効化する。
↓ この例では36行目
$ sudo vim /etc/apache2/mods-available/mime.conf
ハンドラのコメントを外して .cgi と .py を有効化する。
(変更前)#AddHandler cgi-script .cgi
(変更後)AddHandler cgi-script .cgi .py
↓ この例だと220行目
$ sudo vim /etc/apache2/conf-available/serve-cgi-bin.conf
ScrpitAlias の行と、<Directory の行 を変更する。
↓ この例だと12行目 と 14行目
サービスを再起動する。
$ sudo service apache2 restart
cgi-bin フォルダを作る。
$ mkdir cgi-bin
テストスクリプト test.py を置いてみる。
アクセスして実行を確認。
http://Pi3のIPアドレス:8083/cgi-bin/test.py
動いてしまった。cgi-bin は、実行するのにパーミッションの設定がかなり面倒なはずなのに。以下の状態で実行できた。
・cgi-bin 所有者がpiのまま(rootでない)
・cgi-bin パーミンションは drwxr-xr-x のまま
Debian系だからなのか?
DocumentRootを /var/www から移したからなのか?
たぶん後者。もう少しスクリプトを置いて検証する。