質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1378閲覧

python google chart APIで作成したグラフが表示されない

rumippu

総合スコア26

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/24 14:38

編集2020/06/25 13:41

下記URLを参考に、raspberry piで取得した温度データをMySQLのテーブルに追加。
参考URL:http://make.bcde.jp/raspberry-pi/%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%AE%E8%A8%98%E9%8C%B2%E3%82%92%E3%82%B0%E3%83%A9%E3%83%95%E5%8C%96/
そのテーブルデータをローカルサーバー上からグラフとして表示させようと思っています。

しかし、ブラウザから「http://ラズパイのローカルIP/chart_temp.py」を入力しても
このサイトにアクセスできませんローカルIPで接続が拒否されました。
と表示されてしまいます。

試した事

・lighttpdサーバーを立ち上げ、/var/www直下にtemplate.html(参考URLの情報まま)、chart_temp.pyを配置
・server.modulesに”mod_fastcgi”,を追加し、fastcgi.server にchart_temp.pyの設定を追加(参考URLではchart.py)
・chart_temp.pyのmySQLの設定、connector = MySQLdb.connect(host="localhost", db="独自", user="独自", passwd="独自", charset="utf8")は自分のMySQL環境に設定。単体動作ではきちんとMySQLのテーブルにデータが書き込まれることを確認

基本的にはtemplate.htmlはコピペしたままなのですが、そのほかに自環境に合わせて値を書き換えるポイントがあるのでしょうか?
仮にHello worldと表示されるのみのtest.pyを/var/www直下に配置したところ、そちらはちゃんと表示されました。
(サーバー設定関係ではなさそうです)

以上、よろしくお願いいたします。

追記:lighttpd.confファイルの中身を記載します。
下記、参考URLからそのまま持ってきたのですが、足りない点、または
インストールが必要なアプリがあるのでしょうか。

server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_fastcgi", # "mod_rewrite", ) server.document-root = "/var/www/" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 80 index-file.names = ( "index.php", "index.html", "index.lighttpd.html" ) url.access-deny = ( "~", ".inc" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) # default listening port for IPv6 falls back to the IPv4 port include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port include_shell "/usr/share/lighttpd/create-mime.assign.pl" include_shell "/usr/share/lighttpd/include-conf-enabled.pl" fastcgi.server = ( "chart_temp.py" => ( "python-fcgi" => ( "socket" => "/tmp/test.python.socket", "bin-path" => "/var/www/chart_temp.py", "check-local" => "disable", "max-procs" => 1) ) ) コード

また、lighttpdのエラーログを調べたところ、以下のように記録がありました。

2020-06-25 22:38:26: (mod_fastcgi.c.1112) the fastcgi-backend /var/www/chart_temp.py failed to start: 2020-06-25 22:38:26: (mod_fastcgi.c.1116) child exited with status 8 /var/www/chart_temp.py 2020-06-25 22:38:26: (mod_fastcgi.c.1119) If you're trying to run your app as a FastCGI backend, make sure you're using the F$ If this is PHP on Gentoo, add 'fastcgi' to the USE flags. 2020-06-25 22:38:26: (mod_fastcgi.c.1406) [ERROR]: spawning fcgi failed. 2020-06-25 22:38:26: (server.c.1022) Configuration of plugins failed. Going down.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

chart_temp.pyのパーミッションを変更したらどうなりますか?

python

1chmod 755 chart_temp.py

投稿2020/06/25 04:20

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rumippu

2020/06/25 11:33

ありがとうございます。 パーミッションを変更しても、変化はありませんでした。 少しテスト的にhello woldと表示されるhtmlもサーバー経由で表示させようと思ったのですが、 それもうまくいきませんでした。。 なにか根本的なところで記述が足りない気がします。
yymmt

2020/06/25 11:40

まずはエラーメッセージを確認するところでしょうか。シェバンに問題がありそうですが。 ./chart_temp.py として実行はできていますか?
rumippu

2020/06/25 11:46

シェバンは「#!/usr/bin/pythonCGI」となっているのですが、ここの部分でしょうか。 ./chart_temp.py ./chart_temp.py: 行 6: import: コマンドが見つかりません ./chart_temp.py: 行 7: import: コマンドが見つかりません ./chart_temp.py: 行 8: import: コマンドが見つかりません ./chart_temp.py: 行 9: import: コマンドが見つかりません ./chart_temp.py: 行 10: import: コマンドが見つかりません ./chart_temp.py: 行 11: import: コマンドが見つかりません from: can't read /var/mail/jinja2 ./chart_temp.py: 行 15: 予期しないトークン `(' 周辺に構文エラーがあります ./chart_temp.py: 行 15: `spi = spidev.SpiDev()' このように表示されます。また、python chart_temp.pyで実行すると <html> <head> <title>Temperature Chart</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Date', 'Temp'], ['2020-06-24 21:33', 23.0], ['2020-06-24 21:46', 22.0], ['2020-06-25 01:28', 23.0], ['2020-06-25 18:00', 24.0], ['2020-06-25 18:10', 24.0], ['2020-06-25 18:20', 24.0], ['2020-06-25 18:30', 24.0], ['2020-06-25 18:40', 24.0], ['2020-06-25 18:50', 24.0], ['2020-06-25 19:00', 24.0], ['2020-06-25 19:10', 24.0], ['2020-06-25 19:20', 24.0], ['2020-06-25 19:30', 24.0], ['2020-06-25 19:40', 24.0], ['2020-06-25 19:50', 24.0], ['2020-06-25 20:00', 56.0], ['2020-06-25 20:10', 26.0], ['2020-06-25 20:20', 24.0], ['2020-06-25 20:30', 24.0], ['2020-06-25 20:40', 24.0], ]); // グラフのオプションを設定 var options = { title: 'Tmperature Chart' }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div" style="width: 80%; height: 400px;"></div> </body> </html> となり、一応htmlテンプレートにチャートを書き込もうとする動きをするみたいです。。
yymmt

2020/06/25 21:58

> シェバンは「#!/usr/bin/pythonCGI」となっているのですが、ここの部分でしょうか。 はい、その部分です。このシェバンを入れて./chart_temp.pyと実行して期待される動作は、python chart_temp.pyとした場合の動作と比較して先頭に2行分追加で表示されることです。 Content-Type: text/html; charset=utf-8 ← 追加 ← 空行が追加 <html> ← ここ以降はpython chart_temp.pyと同じ <head> ... それで/usr/bin/pythonCGIって何だろうと思ったら同じブログの別のページ http://make.bcde.jp/raspberry-pi/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89gpio%E3%82%92%E6%93%8D%E4%BD%9C/ に sudo cp /usr/bin/python2.7 /usr/bin/pythonCGI と書いてあったので、python2.7で起動しているのだろうと思います。この部分を which python として表示されるフルパスで上書きしてしまう(cp -p 上記のパス /usr/bin/pythonCGI)ことでしょうか(セキュリティ的に良くないと書かれていますが何を気にしているのだろうか)。その後、ソースコードの上の方に print('Content-Type: text/html; charset=utf-8') print() の二行を追加すればおそらく動作します。
rumippu

2020/06/26 00:52

print('Content-Type: text/html; charset=utf-8') print() この2行をchart_temp.pyに記述するということでしょうか。 それで試してみたいと思います。 ちょっとlighttpd.confファイルを色々いじったためか、今ローカルIPを叩いてもうまくサーバー内の ファイルに接続できなくなってしまいました。まずはそれを解決しようと思います
rumippu

2020/06/26 09:40 編集

結局、まだうまく動いておりません。 ただ、「/etc/lighttpd/lighttpd.conf」にある「fastcgi.server」セクションのうち、 "socket" => "/tmp/test.python.socket" この部分を参考URLとは異なり、「"/tmp/fastcgi.python.socket"」としたところ、 404 - Not Foundではなくまっさらなページが表示されるようになりました。 参考URLのページの記述が間違っていそうなのですが、どなたか分かりますでしょうか。。 (/tmp/test.python.socketと検索しても、まったくヒットしないので、ここを正しく設定する必要がありそうです)
rumippu

2020/06/26 12:38

lighttpdのログを見ると 2020-06-26 21:23:05: (mod_fastcgi.c.1119) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled ve$ If this is PHP on Gentoo, add 'fastcgi' to the USE flags. 2020-06-26 21:23:05: (mod_fastcgi.c.1406) [ERROR]: spawning fcgi failed. と出ており、あいかわらずfastcgi系が正しく動いていないようです。。 参考URLを見てもそのあたりの記載がなく、いきなりlighttpd.confに対して「"socket" => "/tmp/test.python.socket",」 と記載しているあたりさっぱりわかりません。(test.python.socketってなに??そんなファイル私のディレクトリには無いし、事前にインストールした記憶もない) もう1日中解決策を見つけているのですが、どこにも見当たりません。。どなたか分かりますでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問