<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 導航 - [索引](# "總目錄") - [下一頁](# "獨立 WSGI 容器") | - [上一頁](# "部署選擇") | - [Flask 0.10.1 文檔](#) ? - [部署選擇](#) ? # mod_wsgi (Apache) 如果你使用 [Apache](http://httpd.apache.org/) [http://httpd.apache.org/] web 服務器,請考慮使用 [mod_wsgi](http://code.google.com/p/modwsgi/) [http://code.google.com/p/modwsgi/] 。 注意 請確保在任何 app.run() 調用之前,你應該把應用文件放在一個 if__name__==`__main__`: 塊中或移動到獨立的文件。只確保它沒被調用是因為這總是會啟動一個本地的 WSGI 服務器,而當我們使用 mod_wsgi 部署應用時并不想讓它出現。 ### 安裝 mod_wsgi 如果你還沒有安裝過 mod_wsgi ,你需要使用包管理器來安裝或手動編譯它。mod_wsgi 的 [安裝指引](http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide) [http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide] 涵蓋了 UNIX 系統中的源碼安裝。 如果你使用 Ubuntu/Debian 你可以按照下面的命令使用 apt-get 獲取并激活它: ~~~ # apt-get install libapache2-mod-wsgi ~~~ 在 FreeBSD 上,通過編譯 www/mode_wsgi port 或使用 pkg_add 來安裝: ~~~ # pkg_add -r mod_wsgi ~~~ 如果你在使用 pkgsrc 你可以編譯 www/ap2-wsgi 包來安裝 mod_wsgi 。 如果你在 apache 第一次重加載后遇到子進程段錯誤,你可以安全地忽略它們。只需要重啟服務器。 ### 創建一個 .wsgi 文件 你需要一個 yourapplication.wsgi 文件來運行你的應用。這個文件包含 mod_wsgi啟動時執行的獲取應用對象的代碼。這個對象在該文件中名為 application ,并在之后作為應用。 對于大多數應用,下面度文件就可以勝任: ~~~ from yourapplication import app as application ~~~ 如果你沒有一個用于創建應用的工廠函數而是單例的應用,你可以直接導入它為application 。 把這個文件放在你可以找到的地方(比如 /var/www/yourapplication )并確保yourapplication 和所有使用的庫在 python 載入的路徑。如果你不想在系統全局安裝它,請考慮使用 [virtual python](http://pypi.python.org/pypi/virtualenv) [http://pypi.python.org/pypi/virtualenv] 實例。記住你也會需要在 virtualenv中安裝應用。可選地,你可以在 .wsgi 文件中在導入前修補路徑: ~~~ import sys sys.path.insert(0, '/path/to/the/application') ~~~ ### 配置 Apache 你需要做的最后一件事情就是為你的應用創建一個 Apache 配置文件。在本例中,考慮安全因素,我們讓 mod_wsgi 來在不同度用戶下執行應用: ~~~ <VirtualHost *> ServerName example.com WSGIDaemonProcess yourapplication user=user1 group=group1 threads=5 WSGIScriptAlias / /var/www/yourapplication/yourapplication.wsgi <Directory /var/www/yourapplication> WSGIProcessGroup yourapplication WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> </VirtualHost> ~~~ 更多信息請翻閱 [mod_wsgi wiki](http://code.google.com/p/modwsgi/wiki/) [http://code.google.com/p/modwsgi/wiki/] 。 ### 故障排除 如果你的應用不能運行,按照下面的指導來排除故障: **問題:** 應用不能運行,錯誤日志顯示, SystemExit 忽略你的應用文件中有一個不在 if__name__=='__main__': 聲明保護下的app.run() 調用。把 [run()](# "flask.Flask.run") 從文件中移除,或者把它移到一個獨立的 run.py 文件,再或者把它放到這樣一個 if 塊中。**問題:** 應用報出權限錯誤可能是因為使用了錯誤的用戶運行應用。確保需要訪問的應用有合適的權限設置,并且使用正確的用戶來運行( WSGIDaemonProcess 指令的 user 和group 參數)**問題:** 應用崩潰時打印一條錯誤 記住 mod_wsgi 禁止對 [sys.stdout](http://docs.python.org/dev/library/sys.html#sys.stdout "(在 Python v3.5)") [http://docs.python.org/dev/library/sys.html#sys.stdout] 和 [sys.stderr](http://docs.python.org/dev/library/sys.html#sys.stderr "(在 Python v3.5)") [http://docs.python.org/dev/library/sys.html#sys.stderr] 做操作。你可以通過設定配置中的 WSGIRestrictStdout 為 off 來禁用這個保護。 ~~~ WSGIRestrictStdout Off ~~~ 或者,你可以在 .wsgi 文件中用不同的流來替換標準輸出: ~~~ import sys sys.stdout = sys.stderr ~~~ **問題:** 訪問資源時報出 IO 錯誤 你的應用可能是一個你符號鏈接到 site-packages 文件夾的單個 .py 文件。請注意這不會正常工作,除非把這個文件放進 pythonpath 包含的文件夾中,或是把應用轉換成一個包。 這個問題同樣適用于非安裝的包,模塊文件名用于定位資源,而符號鏈接會獲取錯誤的文件名。 ### 自動重加載支持 你可以激活自動重載入支持來協助部署工具。無論何時,當 .wsgi 文件,mod_wsgi 會為我們自動重新加載所有的守護進程。 為此,只需要直接在你的 Directory 節中添加如下內容: ~~~ WSGIScriptReloading On ~~~ ### 使用虛擬環境 虛擬環境的優勢是它們永遠不在系統全局安裝所需的依賴關系,這樣你可以更好地控制使用什么。如果你想要同 mod_wsgi 使用虛擬環境,你需要稍微修改一下.wsgi 文件。 把下面的幾行添加到你 .wsgi 文件的頂部: ~~~ activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) ~~~ 這根據虛擬環境的設置設定了加載路徑。記住這個路徑一經是絕對的。 ? 版權所有 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>

                              哎呀哎呀视频在线观看