国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Flask mod_wsgi (Apache)

2021-08-11 10:40 更新

如果你使用 Apache web 服務(wù)器,請考慮使用 mod_wsgi 。

注意:

請確保在任何 ?app.run() ?調(diào)用之前,你應(yīng)該把應(yīng)用文件放在一個? if __name__ == `__main__`:? 塊中或移動到獨立的文件。只確保它沒被調(diào)用是 因為這總是會啟動一個本地的 WSGI 服務(wù)器,而當(dāng)我們使用? mod_wsgi ?部署應(yīng)用 時并不想讓它出現(xiàn)。

安裝 mod_wsgi

如果你還沒有安裝過 ?mod_wsgi ?,你需要使用包管理器來安裝或手動編譯它。 mod_wsgi 的 安裝指引 涵蓋了 UNIX 系統(tǒng)中的源碼安裝。

如果你使用 ?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 第一次重加載后遇到子進程段錯誤,你可以安全地忽略它們。 只需要重啟服務(wù)器。

創(chuàng)建一個 .wsgi 文件

你需要一個 yourapplication.wsgi 文件來運行你的應(yīng)用。這個文件包含 mod_wsgi 啟動時執(zhí)行的獲取應(yīng)用對象的代碼。這個對象在該文件中名為 application ,并在 之后作為應(yīng)用。

對于大多數(shù)應(yīng)用,下面度文件就可以勝任:

from yourapplication import app as application

如果你沒有一個用于創(chuàng)建應(yīng)用的工廠函數(shù)而是單例的應(yīng)用,你可以直接導(dǎo)入它為 application 。

把這個文件放在你可以找到的地方(比如 /var/www/yourapplication )并確保 yourapplication 和所有使用的庫在 python 載入的路徑。如果你不想在系統(tǒng)全局 安裝它,請考慮使用 virtual python 實例。記住你也會需要在 virtualenv 中安裝應(yīng)用??蛇x地,你可以在 .wsgi 文件中在導(dǎo)入前修補路徑:

import sys
sys.path.insert(0, '/path/to/the/application')

配置 Apache

你需要做的最后一件事情就是為你的應(yīng)用創(chuàng)建一個 Apache 配置文件。在本例中,考慮 安全因素,我們讓 mod_wsgi 來在不同度用戶下執(zhí)行應(yīng)用:

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

故障排除

如果你的應(yīng)用不能運行,按照下面的指導(dǎo)來排除故障:

問題: 應(yīng)用不能運行,錯誤日志顯示, SystemExit 忽略
你的應(yīng)用文件中有一個不在 if __name__ == '__main__': 聲明保護下的 app.run() 調(diào)用。把 run() 從文件中移除,或者把 它移到一個獨立的 run.py 文件,再或者把它放到這樣一個 if 塊中。
問題: 應(yīng)用報出權(quán)限錯誤
可能是因為使用了錯誤的用戶運行應(yīng)用。確保需要訪問的應(yīng)用有合適的權(quán)限設(shè)置, 并且使用正確的用戶來運行( WSGIDaemonProcess 指令的 user 和 group 參數(shù))
問題: 應(yīng)用崩潰時打印一條錯誤

記住 mod_wsgi 禁止對 sys.stdout 和 sys.stderr 做操作。 你可以通過設(shè)定配置中的 WSGIRestrictStdout 為 off 來禁用這個保護。

WSGIRestrictStdout Off

或者,你可以在 .wsgi 文件中用不同的流來替換標(biāo)準(zhǔn)輸出:

import sys
sys.stdout = sys.stderr
問題: 訪問資源時報出 IO 錯誤

你的應(yīng)用可能是一個你符號鏈接到 site-packages 文件夾的單個 .py 文件。 請注意這不會正常工作,除非把這個文件放進 pythonpath 包含的文件夾中, 或是把應(yīng)用轉(zhuǎn)換成一個包。

這個問題同樣適用于非安裝的包,模塊文件名用于定位資源,而符號鏈接會獲取 錯誤的文件名。

自動重加載支持

你可以激活自動重載入支持來協(xié)助部署工具。無論何時,當(dāng) .wsgi 文件, mod_wsgi 會為我們自動重新加載所有的守護進程。

為此,只需要直接在你的 Directory 節(jié)中添加如下內(nèi)容:

WSGIScriptReloading On

使用虛擬環(huán)境

虛擬環(huán)境的優(yōu)勢是它們永遠(yuǎn)不在系統(tǒng)全局安裝所需的依賴關(guān)系,這樣你可以更好 地控制使用什么。如果你想要同 mod_wsgi 使用虛擬環(huán)境,你需要稍微修改一下 .wsgi 文件。

把下面的幾行添加到你 .wsgi 文件的頂部:

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

這根據(jù)虛擬環(huán)境的設(shè)置設(shè)定了加載路徑。記住這個路徑一經(jīng)是絕對的。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號