44678
NginxでPythonプログラムを動かすにはuWSGIを使って、  
Nginx + uWSGI + Python  
という組み合わせで動かすことが、よく紹介されています。

しかし、uWSGIでは一つのポート番号やsockで動かせるPythonプログラムは1つです。  
PHPやhtmlのように、フォルダにプログラムファイルを置いておいたら、そのファイルにアクセスしたときに動かすようにしたいと思っています。

Pythonでもこのようなことができるのでしょうか？uWSGIを使わなくてもかまいません。  
このようなことはできるのでしょうか？

ご存知の方、ご教示お願いします。
CC BY-SA 4.0
2018-06-10T15:50:08.633
44671
2018-06-12T01:00:16.553
8593
question
python nginx uwsgi
Nginx上でPythonを複数動かす
PythonでもCGIプログラムを書くことは可能です。  
公式マニュアルだと「[21.2. cgi — CGI (ゲートウェイインタフェース規格)
のサポート](https://docs.python.jp/3/library/cgi.html)」に解説があります。

下のようなPythonスクリプトを書いて、CGIスクリプトを置くディレクトリに置いてやれば動作します。

```

    #!/usr/bin/python3
    
    print("Content-Type: text/html")
    print("<H1>This is my first CGI script</H1>")
    print("Hello, world!")
    
```

スクリプトを見ればわかるように、基本'print'を使う必要があり、PHPのようにHTMLの中にプログラムを埋め込むことは単純にはできないので、PythonでCGIのスクリプトを書くのはPHPで書くよりかなり手間になります。

また、古典的CGIの処理は遅いので、FirstCGIを使おうとすると設定が難しくなります。  
参照: [How to setup Python with Lighttpd and FastCGI (like
PHP)](https://serverfault.com/questions/338183)

Pythonでは、WSGIがWebサーバとWebアプリケーションを接続するための標準仕様です。そのため、Pythonの仕様自体がPHPのようにCGIを使うようには開発されていません。それで、Python
でWebアプリケーションを作る場合はWSGIを使うことを勧めます。

なお、uWSGIはWSGIを実装した製品名です。WSGIの実装には、uWSGIの他にgunicornや最近開発されたnginx unitがあります。
CC BY-SA 4.0
2018-06-11T01:31:40.460
44678
2018-06-12T01:00:16.553
2018-06-12T01:00:16.553
15171
15171
44671
answer