我正在使用Ubuntu Trusty在虚拟机上部署我的Django项目。 要做到这一点,我使用的是Gunicorn(带有Supervisor)和Nginx。
以下是我所遵循的教程的链接: http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/
当我启动Nginx和Gunicorn时,该网站是可访问的,但当我尝试访问使用django-simple-captcha等应用程序的页面时,我得到了一个" 服务器错误(500) &#34 ;.
当我使用 virtualenv 时,所有这些使用 pip 安装的应用程序(rosetta,easymode,simple-captcha ...)都存储在 myvirtualenv / myproject / lib /中python2.7 /站点包
经过一些研究,我修改了我的 wsgi.py 文件,将 site-packages 目录添加到路径中,如下所示:
import os, sys, site
# Tell wsgi to add the Python site-packages to its path
site.addsitedir(os.path('/webapps/project/lib/python2.7/site-packages'))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
#activate_this = os.path('/webapps/project/bin/activate_this.py')
#execfile(activate_this, dict(__file__=activate_this))
#sys.path.append(os.path('/webapps/project/'))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
...但它仍然无法正常工作,知道如果我取消注释上面三行中的一行,我会在重新启动它时收到gunicorn的错误消息:
project: ERROR (abnormal termination)
你觉得这里的问题是我没有激活virtualenv吗?
我应该找到另一种方法来激活它吗?
我怎样才能获得更多关于为什么gunicorn赢得execfile
或sys.path.append
行开头的信息呢?
你有什么建议吗?
如果它缺少信息,请告诉我,例如 gunicorn_start 脚本(即使它与我们在许多教程中找到的相同):)
我没有引起足够的重视, gunicorn_start 脚本正在激活virtualenv,因此我不需要在 wsgi.py 文件。
但问题仍然存在:我在wsgi.py文件中打印 sys.path ,当我使用python manage.py runserver my.server.address:8000
命令时,我可以看到所有需要的目录都在:< / p>
['/webapps/project/project', '/webapps/project/lib/python2.7', '/webapps/project/lib/python2.7/plat-x86_64-linux-gnu', '/webapps/project/lib/python2.7/lib-tk', '/webapps/project/lib/python2.7/lib-old', '/webapps/project/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/webapps/project/local/lib/python2.7/site-packages', '/webapps/project/lib/python2.7/site-packages']
当我尝试加载使用位于Server Error (500)
的{{1}}应用的网页时,我无法弄清楚为什么会收到django-simple-captcha
...
答案 0 :(得分:0)
经过一些测试后,我发现问题的根源只有django-simple-captcha
。并且不要问我为什么我不想早点这样做,但是我打开了DEBUG,我收到了IO错误:
没有这样的文件/ usr / share / dict / words
确实我在使用
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.word_challenge'
在settings.py
...
两种解决方案:
django-simple-captcha
:http://django-simple-captcha.readthedocs.org/en/latest/advanced.html#generators-and-modifiers 安装所需的词典:
sudo apt-get install wamerican
sudo apt-get install wfrench
...