2013年1月23日水曜日

[RaspberryPi]nginx+FastCGI+web.py

  1. nginxのインストール
  2. apt-getで一発

    sudo apt-get install nginx
    
  3. FastCGIのインストール
  4. spawn-fcgiを利用する。これもapt-getで。

    sudo apt-get install spawn-fcgi
    
  5. web.pyのインストール
  6. easy_installからインストールを行う

    ez_setup.pyをwgetして実行

    easy_installでflupとweb.pyをインストールする

    wget http://peak.telecommunity.com/dist/ez_setup.py
    sudo python ez_setup.py
    sudo easy_install flup
    sudo easy_install web.py
    
  7. nginxの設定変更
  8. nginxのfastcgi_paramを下記に書き換え

    sudo nano /etc/nginx/fastcgi_params
    
            fastcgi_param REQUEST_METHOD $request_method;
            fastcgi_param QUERY_STRING $query_string;
            fastcgi_param CONTENT_TYPE $content_type;
            fastcgi_param CONTENT_LENGTH $content_length;
            fastcgi_param GATEWAY_INTERFACE CGI/1.1;
            fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
            fastcgi_param REMOTE_ADDR $remote_addr;
            fastcgi_param REMOTE_PORT $remote_port;
            fastcgi_param SERVER_ADDR $server_addr;
            fastcgi_param SERVER_PORT $server_port;
            fastcgi_param SERVER_NAME $server_name;
            fastcgi_param SERVER_PROTOCOL $server_protocol;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
    

    site-availableのlocation /を下記のように書き換え

    sudo nano /etc/nginx/sites-available/default
    
    server {
      location / {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9002;
      }
    }
    

    上記の例ではポート番号を9002に設定

  9. wwwディレクトリの作成
  10. /var/wwwディレクトリを作成して、所有権を変更する

    cd /var/
    
    sudo mkdir www
    
    sudo chown www-data:www-data www/
    
  11. Hello world!を出力するPythonスクリプト作成
  12. nano /var/www/index.py
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import web
    
    urls = ("/.*", "hello")
    app = web.application(urls, globals())
    
    class hello:
        def GET(self):
            return 'Hello, world!'
    
    if __name__ == "__main__":
        web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
        app.run()
    

    所有権を変更しておく

    sudo chown www-data:www-data index.py
    
  13. サーバーの起動
  14. spawn-fcgiの起動(ポート番号9002)

    sudo spawn-fcgi -u www-data -f /var/www/index.py -a 127.0.0.1 -p 9002
    

    nginxをリロード

    sudo nginx -s reload
    

    http://localhost/ にアクセスしてHello World!が表示されることを確認する

1 件のコメント: