使用 Windows / Apache / Mod_WSGI 提供 Python 頁面?
我正在嘗試在 Windows 上設置 python / apache / WSGI。
我安裝了以下所有 32 位和 vc9:
- 阿帕奇 2.4
- Python 2.7.9
- Mod_WSGI.so 在模組文件夾中。
http://localhost/成功顯示 Apache Haus 網頁——Apache 正在執行和服務。
這是我的“Hello World”python 腳本:
def application(environ, start_response): status = '200 OK' output = 'This is my Website!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
這是我的 Apache 配置:
WSGIScriptAlias /wsgi "C:/wsgi_app/wsgi_app.py" <Directory "C:/wsgi_app"> AllowOverride None Options MultiViews Require all granted </Directory>
此版本將以純文字形式顯示文件,而不是對其進行解釋。
如果我將選項更改為無…
WSGIScriptAlias /wsgi "C:/wsgi_app/wsgi_app.py" <Directory "C:/wsgi_app"> AllowOverride None Options none Require all granted </Directory>
我得到 404 Not Found on http://localhost/wsgi
apache 錯誤日誌似乎對故障排除沒有太大用處。
[Wed Feb 10 16:17:49.293987 2016] [wsgi:warn] [pid 4448:tid 336] mod_wsgi: Compiled for Python/2.7.9+. [Wed Feb 10 16:17:49.293987 2016] [wsgi:warn] [pid 4448:tid 336] mod_wsgi: Runtime using Python/2.7.9. [Wed Feb 10 16:17:49.325187 2016] [mpm_winnt:notice] [pid 4448:tid 336] AH00354: Child: Starting 64 worker threads. [Wed Feb 10 16:17:52.538793 2016] [wsgi:error] [pid 4448:tid 1040] [client ::1:54402] Target WSGI script not found or unable to stat: C:/wsgi_app/wsgi_app.py
“LoadModule access_compat_module modules/mod_access_compat.so”沒有註釋,如果這很重要的話。
關於如何讓這個頁面載入/其他 apache 配置更改嘗試的任何想法?
我需要在某處更改 python 配置嗎?
從您得到的錯誤中:
$$ wsgi:error $$ $$ pid 4448:tid 1040 $$ $$ client ::1:54402 $$目標 WSGI 腳本未找到或無法統計:C:/wsgi_app/wsgi_app.py
您很可能在“C:/wsgi_app/”目錄中沒有名為“wsgi_app.py”的文件。
現在
Options Multiviews
做什麼?這是來自Apache 2.4 文件的引用:
MultiViews 的效果如下:如果伺服器收到對 /some/dir/foo 的請求,如果 /some/dir 啟用了 MultiViews,並且 /some/dir/foo 不存在,則伺服器讀取目錄尋找名為 foo.* 的文件,並有效地偽造了一個類型映射,該類型映射為所有這些文件命名,為它們分配相同的媒體類型和內容編碼,如果客戶端按名稱要求其中一個。然後它選擇最符合客戶要求的匹配項。
從上面的解釋可以看出,當 Multiviews 選項被啟用時,由於一個名為的文件
wsgi_app.py
不存在,伺服器將嘗試查找名為wsgi_app.py.*
.我懷疑您在目錄中有一個名為
wsgi_app.py.txt
的文件,並且顯示了它的內容。您可能已經在 windows 中創建了一個文本文件來創建 wsgi_app.py 文件。在 Windows 中,啟用文件夾選項“隱藏已知文件類型副檔名”時,它將隱藏.txt
文件的副檔名。結果,名為的文件wsgi_app.py.txt
將僅顯示為wsgi_app.py
.當不再有 Multiviews 選項時,伺服器正在尋找一個完全名為“wsgi_app.py”的文件,並返回錯誤,無法找到它。