我已经为我正在构建的应用程序配置了一个 vagrant box,但是在尝试让 Apache 为其提供服务时遇到了麻烦。
它为它的包使用了一个 virtualenv——现在这只是 Flask 和它的依赖项,这一切都很好。我可以通过 SSH 在环境中运行应用程序。该应用程序本身只是目前的最小应用程序。
阿帕奇错误
[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
我的应用程序.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>
我尝试使用用户和组运行 Apache,并将vagrant
站点包和应用程序目录更改为www-data
. 我还尝试将 WSGIDaemon 用户和组更改为 vagrant。
我尝试将站点包添加到路径中,并且尝试添加__init__.py
到 myapp 并更改myapp.wsgi
为from myapp import app as application
.
该应用程序可以运行source ../env/bin/activate && python app.py
。
我难住了。