Web アプリ

この記事は Raspberry Pi 勉強会 の一部です。

  • HTML と Javascript
  • Apache と PHP
  • Python
  • Python Flask

参考書
みんなのPython Webアプリ編 HTML版

HTML と Javascript

WEBアプリの基本は HTML と Javascript です。
この2つだけであれば、Windows や MAC の WEBだけで動作します。


HTML

HTML (エイチティーエムエル)とは、HyperText Markup Language の略で、ウェブ上の文書を記述するためのマークアップ言語である。
文章の中に記述することでさまざまな機能を記述設定することができる。

JavaScript

JavaScript (ジャバ スクリプト)とは、プログラミング言語のひとつである。
ウェブブラウザに実装され、動的なウェブサイト構築や、リッチインターネットアプリケーションなど高度なユーザインタフェースの開発に用いられる。

jQuery

jQuery(ジェイクエリー)は、ウェブブラウザ用の JavaScript コードをより容易に記述できるようにするために設計された軽量な JavaScript ライブラリである。

サンプルコード

サンプルコード HTML&PHP
  • plane
  • HTML
  • JavaScript
  • jQuery

Apache と PHP

ラズパイに Apache と PHP をインストールして、WEBサーバーを構築します。

Apache

Apache (アパッチ)とは、世界中でもっとも多く使われているWebサーバソフトウェアであり、大規模な商用サイトから自宅サーバまで幅広く利用されている。

インストール
$ sudo apt-get install apache2
HTMLファイル
$ cat /var/www/html/index.html 

PHP

PHP (ピー・エイチ・ピー) とは、Personal Home Page の略で、 動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語である。

インストール
$ sudo apt-get install php5

PHP マニュアル

サンプルコード

サンプルコード Apache&PHP
  • Apache 
  • PHP
  • get method
  • post method

Python

Python は、汎用的なプログラム言語であり、それ自体でWEBサーバーを構築できます。
詳しくは Rapsberry Pi と Python へ

Simple HTTP Server

SimpleHTTPServer は、Python の標準ライブラリで、簡潔な HTTP リクエストハンドラです。
下記のようなコマンド1つで、WEBサーバーが構築できます。
$ python -m SimpleHTTPServer 8000

WebIOPi

WebIOPi とは、ラズパイの GPIO をWEBブラウザから制御できるフレームワークです。

WebIOPiのインストール

サンプルコード

サンプルコード Python
  • Simple HTTP Server 

Python Flask

Flask(フラスク)とは、プログラミング言語 Python 用の、軽量なウェブアプリケーションフレームワークである。

インストール
$ sudo pip install flask

サンプルコード

サンプルコード Flask
  • hello
  • static template
  • dynamic template
  • jQuery
  • Camera
  • Open JTalk
  • GPIO controller

自動起動

電源を投入すると、自動的に起動するようにします。
大きく2つの方法があります。
(1) rc.local
(2) サービスデーモン

rc.local

この方法が最も簡単です。
rc.local の最後に、起動コマンドを記述するだけです。
欠点は、停止するのがちょっと面倒です。
ps コマンドで pid を見つけて、kill します。

参考
rc.localでのRubyスクリプトの自動実行

サービスデーモン

この方法は上級者向けですので、簡単に紹介する程度にします。
利点は、起動・停止が Linux の標準的なスタイルで行えることです。
大きく2つの手順が必要です。
(1) Python のパッケージ化
setup スクリプトを記述します。
(2) サービスデーモンの登録
skeleton を見本に、起動スクリプトを記述します。

参考
  • Pythonライブラリをパッケージ化する
  • setup スクリプトを書く
  • Pythonで作ったデーモンをinitスクリプトでstart stop を行う


サンプルコード

サンプルコード Flask
  • GPIO daemon

ルーター越え

通常は、ローカルネットに接続しているラズパイには、インターネットからアクセスできません。
ルーター越えといわれる手段が必要で、大きく2つの方法があります。
  • NAT
  • Port Forwarding

参考
  • ルーター超えとは一体どういう問題をいうのでしょうか

NAT

NAT(Network Address Translation)とは、ローカルネットのルータにて、グローバルIPアドレスとプライベートIPアドレスを変換して、ローカルネットの特定のコンピュータに接続する方法です。


Port Forwarding

Port Forwarding とは、インターネット上のサーバーと、ローカルネットのコンピュータとの間で、特定の経路を設定しておく方法です。
詳しくは Raspberry Pi と Port Forward へ

ラズパイに特化した weaved などのサービスもあります。
詳しくは Raspberry Pi と weaved へ