我爲正在構建的應用程序提供了一個流浪盒,但在嘗試讓Apache服務時遇到了麻煩。Vagrant,WSGI,virtualenv和TypeError:'模塊'對象不可調用
它使用virtualenv作爲它的包 - 現在只是Flask和它的依賴關係,並且這一切都正常工作。我可以通過SSH進入並在env中運行應用程序。該應用程序本身現在只是minimal application。
Apache的錯誤
[Sun Mar 31 10:06:54 2013] [error] [client 10.0.2.2] mod_wsgi (pid=1587): Exception occurred processing WSGI script '/vagrant/myapp/myapp.wsgi'.
[Sun Mar 31 10:06:54 2013] [error] [client 10.0.2.2] TypeError: 'module' object is not callable
文件
/vagrant
├── env
└── myapp
├── app.py
└── myapp.wsgi
myapp.wsgi
activate_this = '/vagrant/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
sys.path.insert(0, '/vagrant/myapp')
import app as application
默認網站的虛擬主機
<VirtualHost *:80>
WSGIDaemonProcess myapp user=www-data group=www-data threads=5
WSGIScriptAlias//vagrant/myapp/myapp.wsgi
<Directory /vagrant/myapp>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>
我試着與用戶和組vagrant
運行Apache和chowning的站點包和應用程序目錄,以www-data
。我也嘗試將WSGIDaemon用戶和組更改爲流浪。
我試過將網站包添加到路徑中,並且我嘗試將__init__.py
添加到myapp並將myapp.wsgi
更改爲from myapp import app as application
。
該應用程序可以使用source ../env/bin/activate && python app.py
運行。
我很難過。
<3謝謝!翻轉interwebz顛倒獲得python3 +燒瓶+ pyvenv工作,這釘我最後一個問題:) –