1)CGI (Common Gateway Interface): html
用來做爲 Web Server 同 Python, PHP 等的通訊手段。而在靜態網頁的時代, 只須要 Web Server 便可。python
2)CGI 的缺點: nginx
1. 每一個請求都會產生一個對應的 gateway application 進程。從一個請求到另外一個請求, 內存和上下文信息會丟失。沒法 cache 來提升效率。web
2. 大負載能力不足。對系統而言,啓動一個進程很是耗資源。大量的併發請求(每一個請求啓動一個進程)會瞬間搞跨服務器。django
3. 將 web server, gateway application 部署到不一樣服務器上的願望難以實現。服務器
3)FastCGI (Fast Common Gateway Interface): 併發
同 CGI 同樣都是一個協議, 而不是一個具體實現。app
4)FastCGI 相對於 CGI 的改進: spa
反覆重用一個進程來處理多個請求, 而不是每一個請求產生一個進程。線程
easy_install python-flup
python manage.py runfcgi method=prefork host=127.0.0.1 port=9000 pidfile=/var/run/django.pid
prefork or threaded (default prefork)
prefork 內存佔用量大, threaded 內存須要量小。
prefork 在超大負載是仍然能夠很好的工做, threaded 在大負載時經常沒法響應。
prefork 至關於使用 進程處理每一個請求, 而 threaded 是每一個子進程再產生必定量的線程來處理請求。
把進程ID寫入到指定的文件中。
location / { root html; index index.html index.htm; fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REMOTE_ADDR $remote_addr; } location /static{ alias /Application/ownforum/media; }
修改完以後須要 reload nginx:
/usr/local/nginx/sbin/nginx -s reload