「CGI」と「uWSGI」について


**PythonをWeb上で、下記何れかの方法により動作させようと思っているのですが**

[code]

    ・Nginx、CGI、Python
    ・Nginx、uWSGI、Python
    
[/code]

* * *

**Q1.CGIを選択するメリットについて**  
・何かありますか？  
・手軽に実装できることぐらい？  
・性能的にwsgiより劣るわけではない？？

* * *

**Q2.wsgiについて**  
・Pythonに特化したインターフェース定義ですか？  
・それとも、CGIに代わる新たな接続標準仕様？  
・CGIが古いというわけではない？？

* * *

**Q3.uWSGIについて**  
・wsgi規格のインターフェースを実装したもの？  
・Nginxで使用できるwsgiは他にもありますか？  
・uWSGIは、Nginxに特化しているわけではない？？

* * *

**環境**  
・CentOS  
・Nginx




> Q1.CGIを選択するメリットについて  
>  ・何かありますか？

http通信を理解する、勉強するために題材にすることはあります。  
それくらい、生のhttp通信に近い仕組みです。

> ・手軽に実装できることぐらい？

手軽とは言いがたいと思います。  
生のhttp通信に近いことしか実装しないのであれば手軽かもしれません。

> ・性能的にwsgiより劣るわけではない？？

生のhttp通信に近いため、セキュリティの考慮や多くのことを望まなければ、処理が少なくて済むため、高速かもしれません。

> Q2.wsgiについて  
>  ・Pythonに特化したインターフェース定義ですか？

はい。

> ・それとも、CGIに代わる新たな接続標準仕様？

いいえ。  
しかし、PythonのWSGIを参考にPerl用のPSGI、Ruby用のRackが開発されたそうです。

> ・CGIが古いというわけではない？？

産まれてからの経過年数はWSGIよりも古いです。

> Q3.uWSGIについて  
>  ・wsgi規格のインターフェースを実装したもの？

はい。  
uWSGIは比較するならGunicornなどのWebアプリケーションサーバーと比較した方がよいでしょう。  
uWSGIははじめはWSGIプロトコルに対応した高機能なWebアプリケーションサーバーとして作られましたが、現在はWSGIだけでなくPSGIやRackも扱えます。

> ・Nginxで使用できるwsgiは他にもありますか？  
>  ・uWSGIは、Nginxに特化しているわけではない？？

uWSGIはNginx用というわけではありません。Webアプリケーションサーバーです。  
uWSGIを使っていても、NginxやApache等のWebサーバーを前段に配置するのが一般的です。  
前段のWebサーバー(Nginx等)とWebアプリケーションサーバー(uWSGIやGunicorn等)はリバースプロキシ等で通信します。




> Q1.CGIを選択するメリットについて  
>  ・何かありますか？

http通信を理解する、勉強するために題材にすることはあります。  
それくらい、生のhttp通信に近い仕組みです。

> ・手軽に実装できることぐらい？

手軽とは言いがたいと思います。  
生のhttp通信に近いことしか実装しないのであれば手軽かもしれません。

> ・性能的にwsgiより劣るわけではない？？

生のhttp通信に近いため、セキュリティの考慮や多くのことを望まなければ、処理が少なくて済むため、高速かもしれません。

> Q2.wsgiについて  
>  ・Pythonに特化したインターフェース定義ですか？

はい。

> ・それとも、CGIに代わる新たな接続標準仕様？

いいえ。  
しかし、PythonのWSGIを参考にPerl用のPSGI、Ruby用のRackが開発されたそうです。

> ・CGIが古いというわけではない？？

産まれてからの経過年数はWSGIよりも古いです。

> Q3.uWSGIについて  
>  ・wsgi規格のインターフェースを実装したもの？

はい。  
uWSGIは比較するならGunicornなどのWebアプリケーションサーバーと比較した方がよいでしょう。  
uWSGIははじめはWSGIプロトコルに対応した高機能なWebアプリケーションサーバーとして作られましたが、現在はWSGIだけでなくPSGIやRackも扱えます。

> ・Nginxで使用できるwsgiは他にもありますか？  
>  ・uWSGIは、Nginxに特化しているわけではない？？

uWSGIはNginx用というわけではありません。Webアプリケーションサーバーです。  
uWSGIを使っていても、NginxやApache等のWebサーバーを前段に配置するのが一般的です。  
前段のWebサーバー(Nginx等)とWebアプリケーションサーバー(uWSGIやGunicorn等)はリバースプロキシ等で通信します。

