在我的一生中,我无法找到一种简单的方法来正确配置(linodedebian 6)服务器,使用django1.8、python2.7.3和virtualenv。以下是我采取的步骤:
mkvirtualenv --python=/usr/bin/python2.7 curator
这将在/srv/ve/.virtualenvs/curator下为我创建一个VirtualEnv
现在我运行:
^{pr2}$django1.8安装成功。然后运行/www/srv:
django-admin startproject cmscore
然后,我按照Django Apache mod_wsgi指令操作,在我的sites available目录下得到一个Apache conf文件,如下所示:
<VirtualHost *:80>
ServerName cms.example.com
ServerAlias cms.example.com cms.example2.com
ServerAdmin errors@example.com
DocumentRoot /srv/www/curator/public_html
WSGIDaemonProcess cms.example.com python-path=/srv/ve/.virtualenvs/curator/bin/python:/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages
WSGIProcessGroup cms.example.com
WSGIScriptAlias / /srv/www/curator/cmscore/cmscore/wsgi.py
<Directory /srv/www/curator/cmscore/cmscore>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
Alias /robots.txt /srv/www/curator/public_html/robots.txt
Alias /favicon.ico /srv/www/curator/public_html/favicon.ico
Alias /css /srv/www/curator/public_html/css
Alias /js /srv/www/curator/public_html/js
Alias /img /srv/www/curator/public_html/img
Alias /static/admin /srv/www/curator/public_html/admin
Alias /static /srv/www/curator/public_html/static
Alias /media /srv/www/curator/public_html/media
ErrorLog /srv/www/curator/logs/error.log
CustomLog /srv/www/curator/logs/access.log combined
</VirtualHost>
Django文档提到了一个WSGIPythonPath
指令,但是我在使用它时得到了一个错误WSGIPythonPath cannot occur within <VirtualHost> section
。在
对于这个配置,我得到了一个500错误(很明显,有很多设置我还没有添加,例如),但不是我所期望的。我得到这个(IP被我屏蔽了):
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] mod_wsgi (pid=21802): Target WSGI script '/srv/www/curator/cmscore/cmscore/wsgi.py' cannot be loaded as Python module.
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] mod_wsgi (pid=21802): Exception occurred processing WSGI script '/srv/www/curator/cmscore/cmscore/wsgi.py'.
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] Traceback (most recent call last):
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] File "/srv/www/curator/cmscore/cmscore/wsgi.py", line 15, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] from django.core.wsgi import get_wsgi_application
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/__init__.py", line 1, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] from django.utils.version import get_version
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/utils/version.py", line 7, in <module>
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] from django.utils.lru_cache import lru_cache
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] File "/srv/ve/.virtualenvs/curator/lib/python2.7/site-packages/django/utils/lru_cache.py", line 28
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] fasttypes = {int, str, frozenset, type(None)},
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] ^
[Thu May 21 14:55:16 2015] [error] [client xxx.xxx.xxx.xxx] SyntaxError: invalid syntax
因此,当django1.8被比2.7更早的Python版本使用时,这似乎是一个错误。为了调试,我把这个放在wsgi.py文件:
import sys
activate_this = '/srv/ve/.virtualenvs/curator/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
sys.stderr.write(sys.version)
在我的Apache错误日志中,我看到:
2.6.6 (r266:84292, Dec 27 2010, 00:18:12)
我已经尝试了我能想到的每一个技巧(在完全相同的服务器上使用django1.6和python2.7的现有virtualenv的技巧!)包括shebangs指向正确的Python安装管理.py文件,但我找不到任何方法让它生效。在
我知道我遗漏了一些很明显的东西,但我对此视而不见,有人能帮忙吗?在
目前没有回答
相关问题 更多 >
编程相关推荐