環境
Raspberry Pi Zero 2W
モニター(EIZO)
MacBook Air 11.6
前回まで
前回はラズパイファイルをMacBook Airと共有しました。
スマホでもラズパイにアクセスしたり、Pythonプログラムを実行したいので、今回はWebサーバをラズパイにインストールにしてみました。
やったこと
Apache HTTP Serverってのがあるらしい
Apache HTTP Serveという世界で最も利用されているWebサーバーソフトウェアがあるので、それを使います。
まず、インストールして、設定していきます。
ラズパイ側
ターミナルを開いて、
sudo apt-get -y install apache2
と入力してください。インストールが始まります。
CGIが実行できるようにする
次にCGIが実行できるように設定します。CGIとはWebサーバーがプログラムを実行する仕組みのことです。
ラズパイ側
ターミナルに
sudo nano /etc/apache2/apache2.conf
入力すると、「apache2.conf」が開きます。下のように書かれている場所を探します。
<Directory /var/www> ///省略/// </Directory>
探せたら、そこを以下のように書き換えます。
<Directory /var/www> Require all granted AllowOverride All Options ExecCGI AddHandler cgi-script .cgi .py </Directory>
書き換えたら、「Ctrl」+「X」を押して、
「Y」キーを押して、
「Enter」です。
そしたら、保存されます。
次にCGIが実行できるように、モジュールを有効します。
以下のコマンドを入力してください。
sudo a2enmod cgi
これで、Apacheの任意のモジュールを有効にできました。
まだあります。
GPIOの操作もできるように、www-dataをグループ「gpio」に追加します。
sudo gpasswd -a www-data gpio
と入力します。
で、最後に再起動します。
sudo service apache2 restart
Apacheの設定はこれで終了です。
CGIでPythonを実行
Apacheの設定が完了したので、次にCGIでPythonプログラムを実行します。
ラズパイ側
ファイルを作成します。
#!/usr/bin/env python3 # CGIのヘッダ print("Content - Type: text/html: charset=utf-8") print("") # 表示するメッセージ print("<h1>こんにちは</h1>")
↑こんな感じのファイルを作ります。ファイル名は「hello-cgi.py」としてください。
次に、プログラムをApacheのドキュメントルートである「var/www/html」にコピーして、プログラムの実行権限を与えます。
よくわかりませんね。
とりあえず、下のコマンドをターミナルに入力します。
sudo cp hell-cgi.py /var/www/html/ sudo chmod 777 /var/www/html/hello-cgi.py
次にMac側に移ります。
Mac側
Webブラウザの検索バーのところに
http://***.***.**.**/hello-cgi.py
と入力してください。*にはラズパイのIPアドレスを入れてください。
すると、
ブラウザに「こんにちは」と表示されます。
これで終わりです。
余談ですが、苦戦したところ
私はapache2.confを書き換える工程ですごく苦戦しました。
<Directory /var/www> ///省略/// </Directory>
書き換えるのは上の部分なのですが、この部分の少し上にも似たようなモノがあります。下のような部分です。
<Directory> ///省略/// </Directory>
こちら側には同じDirectoryですが「/var/www」がありません。間違わないように気をつけてください。
私は間違えて、ここを書き換えてしまっていたので、全然うまくいかず、苦労しました。
書き直そうとしても、前に書いてあったコマンドを覚えていなかったので、
結局、Apacheをアンインストールして、再度打ち直しました。
ちなみにアンインストールの方法は、
sudo apt-get remove apache2 sudo apt-get purge apache2
でアンインストールできます。
環境設定終わり!!
これでやっと、環境設定が終わり。。。。
なはず。
次は基盤回路の勉強です。
ここまで読んでいただきありがとうございました。