Raspberry Pi (2)
Nginxでcgiの続き
cgiでpythonを動かす
ちょっと難しかった。まず、pythonプログラムの先頭行。Webで見るとこういう風になっている例があった。
#!/usr/bin/env python # -*- coding: utf-8 -*-
でもこれだと動く場合と502というエラーで動かない場合があった。結局こうした。
#!/usr/bin/python3 # -*- coding: utf-8 -*-
これだと動かなかったプログラムが動いた。python2なのかpython3なのかの問題なのか。
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
これが正しい模様。envってのは環境変数がどうのこうので、、っという説明がどっかにあったよくわからん。
日本語を表示させるのもちょっと難しかった。結局こうすればよかった。
#!/usr/bin/python3 # -*- coding: utf-8 -*- print("Content-Type: text/html; charset=utf-8") print() print('Hello, World!</BR>') print('こんにちわ! 日本!')
とりあえず以上。ファイル名の拡張子は.cgiにしている。本当は.pyにしたいが今の設定だとダメ。
cgiのプログラムの置き場所をcgi-bin/にする
今の設定だとcgiプログラムはどこに置いても動作する。それでもいいんだが、普通はcgi-bin/以下に置かなければいけないというルールが多いと思われる。でもどうしたらいいかわからない。
jcode.plのせいでエラーが出るのを直す
そこらへんにある掲示板のCGIのperlプログラムを持ってきて動かしてみたが、502エラーが出る。理由はjcode.plという何やら日本語のコードを変換するプログラムが古くて最新のperlと合わないらしい。
https://piano2nd.smb.net/PukiWiki/index.php?jcode.pl
↑ここからjcode.plを貰った。そしたら、うまく動いた。サンプルコードはここから入手した↓
https://www.rescue.ne.jp/
随分古くからあるサイトらしい。perlで書かれたCGIを使った掲示板、とか、もう20年前の話なのか。
https://piano2nd.smb.net/PukiWiki/index.php?jcode.pl
↑ここからjcode.plを貰った。そしたら、うまく動いた。サンプルコードはここから入手した↓
https://www.rescue.ne.jp/
随分古くからあるサイトらしい。perlで書かれたCGIを使った掲示板、とか、もう20年前の話なのか。
ちなみに、サーバがエラーを出すときlogを見ればよいことが分かった。
tail -f /var/log/nginx/error.log
こんなエラーを出していた。
2020/02/15 12:55:04 [error] 1628#1628: *53 FastCGI sent in stderr: "syntax error at ./jcode.pl line 292, near "do convf("Compilation failed in require at /var/www/html/cgi-bin/memo.cgi line 48" while reading response header from upstream, client: 240b:11:15e0:2800:8f9:309e:62d2:1d76, server: _, request: "GET /cgi-bin/memo.cgi HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "raspberrypi", referrer: "http://raspberrypi/"
これを見てjcode.plの292行目がおかしいことが分かり、その後、最新のjcode.pl-2.13というのを探してきたがそうすると、
defined(%hash) is deprecated at ../perllib/jcode.pl line 684. (Maybe you should just omit the defined()?) defined(%hash) is deprecated at ../perllib/jcode.pl line 693. (Maybe you should just omit the defined()?)
というエラーが出た。中身はよくわからない。よく見たらここにも書かれていたじゃん。
https://www.rescue.ne.jp/whatsnew/blog.cgi/permalink/20161208115240
https://www.rescue.ne.jp/whatsnew/blog.cgi/permalink/20161208115240