2
我試圖運行一個用Flask微框架開發的非常簡單的Python web應用程序。我正在使用Ubuntu 10.04 LTS的VPS。我遵循this instructions以獲得舒適的「Hello world!」,這是一次成功的體驗。但是現在,我正在設置一個稍微複雜一點的配置,並且無法正常工作。使用mod_wsgi在Apache上運行最簡單的Flask應用程序的一些問題
我的應用程序的Apache虛擬主機配置是:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /srv/www/domain.com/public_html/
LogLevel info # I've put this for debugging purposes.
ErrorLog /srv/www/domain.com/logs/error.log
CustomLog /srv/www/domain.com/logs/access.log combined
WSGIDaemonProcess username user=username group=username threads=5 processes=5
WSGIScriptAlias /myapplication/ /srv/www/domain.com/myapplication/myapplication.wsgi
<Directory /srv/www/domain.com/myapplication/myapplication>
WSGIProcessGroup username
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
Alias /css /srv/www/domain.com/public_html/css
Alias /js /srv/www/domain.com/public_html/js
Alias /images /srv/www/domain.com/public_html/images
</VirtualHost>
我的WSGI配置文件是:
# -*- coding: utf-8 -*-
from myapplication import app as application
這是什麼毛病上述配置?
最後,Apache給了我一個500錯誤頁面。所以,我檢查日誌:
[info] mod_wsgi (pid=3132, process='', application='domain.com|/myapplication/'): Loading WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi'.
[error] mod_wsgi (pid=3132): Target WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi' cannot be loaded as Python module.
[error] mod_wsgi (pid=3132): Exception occurred processing WSGI script '/srv/www/domain.com/myapplication/myapplication.wsgi'.
[error] Traceback (most recent call last):
[error] File "/srv/www/domain.com/myapplication/myapplication.wsgi", line 3, in <module>
[error] from myapplication import app as application
[error] ImportError: No module named myapplication
樹結構類似於此:
/myapplication
myapplication.wsgi
myapplication (python package)
顯然,Python中找不到myapplication
模塊中sys.path
。但我已經檢查過版畫,它就在那裏。我知道這個問題可能是微不足道的解決,但我有點困惑。我怎麼能在正確的方向上解決這個問題?
只是沒問題,如果你明確地在'myapplication.wsgi'中設置'sys.path',它是否工作? – larsks 2012-04-23 20:14:06
@larsks哦。有效!非常感謝!現在我試圖弄清楚這怎麼可能。當然,現在我遇到了其他問題,比如路由。對'/'的請求可以正常工作,但是任何「低於」(例如/ login)都不會。我[看了看](http://stackoverflow.com/questions/9680073/how-do-i-use-flask-routes-with-apache-and-mod-wsgi)解決方案,我已經打電話了我的應用對象正確!我應該更新我的問題。 – 2012-04-23 20:22:38
你可能應該開一個新的問題。另外,請注意,我既不是燒瓶也不是WSGI專家;可能會有更好的地方設置Python的搜索路徑。 – larsks 2012-04-23 20:24:29