亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用FastCGI部署Python的Django應用的教程

系統 1521 0

作為一個mod_python模塊的替代,你可以考慮使用mod_wsgi模塊,此模塊開發的時間比mod_python的開發時間離現在更近一些,在Django社區已有一些使用。 一個完整的概述超出了本書的范圍,你可以從官方的Django文檔查看到更多的信息。
使用FastCGI部署Django應用

盡管將使用Apache和mod_python搭建Django環境是最具魯棒性的,但在很多虛擬主機平臺上,往往只能使用FastCGI

此外,在很多情況下,FastCGI能夠提供比mod_python更為優越的安全性和效能。 針對小型站點,相對于Apache來說FastCGI更為輕量級。
FastCGI 簡介

如何能夠由一個外部的應用程序很有效解釋WEB 服務器上的動態頁面請求呢? 答案就是使用FastCGI! 它的工作步驟簡單的描述起來是這樣的:

和mod_python一樣,FastCGI也是駐留在內存里為客戶請求返回動態信息,而且也免掉了像傳統的CGI一樣啟動進程時候的時間花銷。 但于mod_python不同之處是它并不是作為模塊運行在web服務器同一進程內的,而是有自己的獨立進程。

為什么要在一個獨立的進程中運行代碼?

在以傳統的方式的幾種以mod_*方式嵌入到Apache的腳本語言中(常見的例如: PHP,Python/mod_python和Perl/mod_perl),他們都是以apache擴展模塊的方式將自身嵌入到Apache進程中的。

每一個Apache進程都是一個Apache引擎的副本,它完全包括了所有Apache所具有的一切功能特性(哪怕是對Django毫無好處的東西也一并加載進來)。 而FastCGI就不一樣了,它僅僅把Python和Django等必備的東東弄到內存中。

依據FastCGI自身的特點可以看到,FastCGI進程可以與Web服務器的進程分別運行在不同的用戶權限下。 對于一個多人共用的系統來說,這個特性對于安全性是非常有好處的,因為你可以安全的于別人分享和重用代碼了。

如果你希望你的Django以FastCGI的方式運行,那么你還必須安裝 flup 這個Python庫,這個庫就是用于處理FastCGI的。 很多用戶都抱怨 flup 的發布版太久了,老是不更新。 其實不是的,他們一直在努力的工作著,這是沒有放出來而已。
運行你的 FastCGI 服務器

FastCGI是以客戶機/服務器方式運行的,并且在很多情況下,你得自己去啟動FastCGI的服務進程。 Web服務器(例如Apache,lighttpd等等)僅僅在有動態頁面訪問請求的時候才會去與你的Django-FastCGI進程交互。 因為Fast-CGI已經一直駐留在內存里面了的,所以它響應起來也是很快的。

記錄

在虛擬主機上使用的話,你可能會被強制的使用Web server-managed FastCGI進程。 在這樣的情況下,請參閱下面的“在Apache共享主機里運行Django”這一小節。

web服務器有兩種方式于FastCGI進程交互: 使用Unix domain socket(在win32里面是 命名管道 )或者使用TCP socket.具體使用哪一個,那就根據你的偏好而定了,但是TCP socket弄不好的話往往會發生一些權限上的問題。 What you choose is a manner of preference; a TCP socket is usually easier due to permissions issues.

開始你的服務器項目,首先進入你的項目目錄下(你的 manage.py 文件所在之處),然后使用 manage.py runfcgi 命令:

            
./manage.py runfcgi [options]


          

想了解如何使用 runfcgi ,輸入 manage.py runfcgi help 命令。

你可以指定 socket 或者同時指定 host 和 port 。當你要創建Web服務器時,你只需要將服務器指向當你在啟動FastCGI服務器時確定的socket或者host/port。

范例:

??? 在TCP端口上運行一個線程服務器:

            
./manage.py runfcgi method=threaded host=127.0.0.1 port=3033


          

??? 在Unix socket上運行prefork服務器:

            
./manage.py runfcgi method=prefork socket=/home/user/mysite.sock pidfile=django.pid


          

??? 啟動,但不作為后臺進程(在調試時比較方便):

            
./manage.py runfcgi daemonize=false socket=/tmp/mysite.sock


          

停止FastCGI的行程

如果你的FastCGI是在前臺運行的,那么只需按Ctrl+C就可以很方便的停止這個進程了。 但如果是在后臺運行的話,你就要使用Unix的 kill 命令來殺掉它。 然而,當你正在處理后臺進程時,你會需要將其付諸于Unix kill的命令

如果你在 manage.py runfcgi 中指定了 pidfile 這個選項,那么你可以這樣來殺死這個FastCGI后臺進程:

            
kill `cat $PIDFILE`


          

$PIDFILE 就是你在 pidfile 指定的那個。

你可以使用下面這個腳本方便地重啟Unix里的FastCGI守護進程:

            
#!/bin/bash

# Replace these three settings.
PROJDIR="/home/user/myproject"
PIDFILE="$PROJDIR/mysite.pid"
SOCKET="$PROJDIR/mysite.sock"

cd $PROJDIR
if [ -f $PIDFILE ]; then
 kill `cat -- $PIDFILE`
 rm -f -- $PIDFILE
fi

          
            
exec /usr/bin/env -  PYTHONPATH="../python:.."  ./manage.py runfcgi socket=$SOCKET pidfile=$PIDFIL

          



更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 热久久精品 | 久久久精品2018免费观看 | 欧美成人中文字幕dvd | 亚洲国产成人精品女人久久久 | 日韩a一级欧美一级在线播放 | 欧美大屁股精品毛片视频 | 成人国产精品视频频 | 视频一区色眯眯视频在线 | 四虎成人国产精品视频 | 99色图| 久久精品中文字幕免费 | 四虎影视免费永久在线观看黄 | 欧美成人aaa大片 | 色视频久久 | 99视频精品免费99在线 | 99国产高清久久久久久网站 | 妇女网站爱嘿嘿视频免费观看 | 香蕉视频a | 精品69久久久久久99 | 欧美一区二区三区免费观看视频 | 在线免费毛片 | 亚洲一级免费毛片 | 免费羞羞网站 | 性生生活三级视频观看 | 香蕉视频网站在线观看 | 亚洲精品一区二区三区四区 | 国产中的精品一区的 | 成人免费毛片视频 | 日本成人久久 | 91最新免费观看在线 | 欧美日韩视频一区三区二区 | 亚洲欧美日韩精品久久 | 99精品影视 | 久久免费视频网 | 国产网红自拍 | 一级毛片一级片 | 日韩不卡一区二区三区 | 亚洲国产精品一区二区第四页 | 亚洲综合伊人色一区 | 精品视频自拍 | 成人一级黄色片 |