<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "CGI") | - [上一頁](# "uWSGI") | - [Flask 0.10.1 文檔](#) ? - [部署選擇](#) ? # FastCGI FastCGI 是在像 [nginx](http://nginx.org/) [http://nginx.org/] 、 [lighttpd](http://www.lighttpd.net/) [http://www.lighttpd.net/] 和 [cherokee](http://www.cherokee-project.com/) [http://www.cherokee-project.com/] 服務器上的一個部署選擇。其它選擇見 [*uWSGI*](#) 和 [*獨立 WSGI 容器*](#) 章節。在它們上的任何一個運行你的 WSGI 應用首先需要一個 FastCGI 服務器。最流行的一個是 [flup](http://trac.saddi.com/flup) [http://trac.saddi.com/flup] ,我們會在本指導中使用它。確保你已經安裝好它來跟隨下面的說明。 注意 請提前確保你在應用文件中的任何 app.run() 調用在 if__name__=='__main__': 塊中或是移到一個獨立的文件。這是因為它總會啟動一個本地的 WSGI 服務器,并且我們在部署應用到 uWSGI 時不需要它。 ### 創建一個 .fcgi 文件 首先你需要創建一個 FastCGI 服務器文件。讓我們把它叫做yourapplication.fcgi: ~~~ #!/usr/bin/python from flup.server.fcgi import WSGIServer from yourapplication import app if __name__ == '__main__': WSGIServer(app).run() ~~~ 這已經可以為 Apache 工作,而 nginx 和老版本的 lighttpd 需要傳遞一個顯式的 socket 來與 FastCGI 通信。為此,你需要傳遞 socket 的路徑到WSGIServer: ~~~ WSGIServer(application, bindAddress='/path/to/fcgi.sock').run() ~~~ 這個路徑一定與你在服務器配置中定義的路徑相同。 把 yourapplication.fcgi 文件保存到你能找到的地方。保存在/var/www/yourapplication 或類似的地方是有道理的。 確保這個文件有執行權限,這樣服務器才能執行它: ~~~ # chmod +x /var/www/yourapplication/yourapplication.fcgi ~~~ ### 配置 lighttpd 一個給 lighttpd 的基本的 FastCGI 配置看起來是這樣: ~~~ fastcgi.server = ("/yourapplication.fcgi" => (( "socket" => "/tmp/yourapplication-fcgi.sock", "bin-path" => "/var/www/yourapplication/yourapplication.fcgi", "check-local" => "disable", "max-procs" => 1 )) ) alias.url = ( "/static/" => "/path/to/your/static" ) url.rewrite-once = ( "^(/static.*)$" => "$1", "^(/.*)$" => "/yourapplication.fcgi$1" ~~~ 記得啟用 FastCGI ,別名和重寫模塊。這份配置把應用綁定到/yourapplication 。如果想要應用運行在 URL 根路徑,你需要用LighttpdCGIRootFix 中間件來處理一個 lighttpd 的 bug 。 確保只在應用掛載到 URL 根路徑時才應用它。同樣,更多信息請翻閱 Lighty的文檔關于 [FastCGI andPython](http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModFastCGI) [http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModFastCGI]的部分(注意顯示傳遞一個 socket 到 run() 不再是必須的)。 ### 配置 nginx 在 nginx 上安裝 FastCGI 應用有一點不同,因為默認沒有 FastCGI 參數被轉發。 一個給 nginx 的基本的 FastCGI 配置看起來是這樣: ~~~ location = /yourapplication { rewrite ^ /yourapplication/ last; } location /yourapplication { try_files $uri @yourapplication; } location @yourapplication { include fastcgi_params; fastcgi_split_path_info ^(/yourapplication)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_pass unix:/tmp/yourapplication-fcgi.sock; } ~~~ 這份配置把應用綁定到 /yourapplication 。如果你想要綁定到 URL 跟了路徑會更簡單,因為你不需要指出如何獲取 PATH_INFO 和 SCRIPT_NAME: ~~~ location / { try_files $uri @yourapplication; } location @yourapplication { include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SCRIPT_NAME ""; fastcgi_pass unix:/tmp/yourapplication-fcgi.sock; } ~~~ ### 運行 FastCGI 進程 既然 Nginx 和其它服務器并不加載 FastCGI 應用,你需要手動這么做。[Supervisor 可以管理 FastCGI 進程。](http://supervisord.org/configuration.html#fcgi-program-x-section-settings) [http://supervisord.org/configuration.html#fcgi-program-x-section-settings]你可以尋找其它 FastCGI 進程管理器或寫一個啟動時運行 .fcgi 文件的腳本,例如使用一個 SysV init.d 腳本。對于臨時的解決方案,你總是可以在 GNUscreen 中運行 .fcgi 。更多細節見 manscreen ,注意這是一個手動的解決方案,并且不會在系統重啟后保留: ~~~ $ screen $ /var/www/yourapplication/yourapplication.fcgi ~~~ ### 調試 FastCGI 在大多數 web 服務器上的部署,對于調試趨于復雜。服務器日志最經常告訴發生的事就是成行的“未預期的標頭結尾”。為了調試應用,唯一可以讓你了解什么東西破碎的方案就是切換到正確的用戶并手動執行應用。 這個例子假設你的應用叫做 application.fcgi 并且你的 web 服務器用戶是www-data: ~~~ $ su www-data $ cd /var/www/yourapplication $ python application.fcgi Traceback (most recent call last): File "yourapplication.fcgi", line 4, in <module> ImportError: No module named yourapplication ~~~ 在這種情況下,錯誤看起來是“yourapplication”不在 python 路徑下。常見的問題是: - 使用了相對路徑。不要依賴于當前工作目錄 - 代碼依賴于不是從 web 服務器設置的環境變量 - 使用了不同的 python 解釋器 ? 版權所有 2013, Armin Ronacher.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看