Django项目:生产服务器,使用python 3
Posted
技术标签:
【中文标题】Django项目:生产服务器,使用python 3【英文标题】:Django project : production server, use python 3 【发布时间】:2016-01-03 11:18:09 【问题描述】:这是我的问题:我有一个使用 python 3 开发的 django 项目项目。对于我的开发,我使用了 virtualenv,一切都很好,但是现在,在生产服务器中,默认的 python 仍然是 Python 2.7,但没有更多 'source bin/activate' 然后是 'python manage.py runserver'。
注意,python 3.4 安装在服务器上,我想让这个应用程序使用 /usr/bin/python3.4 而不是 /usr/bin/python2.7。
我怎么能这样做?我搜索了很多,但找不到合适的答案。
谢谢,
更新:我在生产服务器(virtualenv python=/usr/bin/python3.4 folder_name)上创建了一个 virtualenv,在 lib 中我有 python 2.7 和 3.4。但是当我使用'python'(激活venv之后)时,它需要python3.4。但我不知道如何“强制”我的项目使用它,而不是服务器上的项目(/usr/bin/pythonX.X)
【问题讨论】:
你可以安装 virtualenv 并为你的生产应用创建一个新的 env 永远不要将 runserver 用于生产。你应该使用像apache或nginx这样的软件。 @hsfzxjy 是的,这就是我现在不使用 runserver 的关键,这就是实际问题 ln -s /usr/bin/python3 /usr/bin/python @Bestasttung,你能指定你的生产设置吗?您是否在使用某些 django 特定的托管服务,使用 uwsgi 等运行它? 【参考方案1】:由于您使用 Apache 进行部署,因此您需要安装 mod_wsgi 的 python3 版本。在基于 Ubuntu 和 Debian 的发行版上,这可能很简单:
sudo apt-get install libapache2-mod-wsgi-py3
当您使用 virtualenv 时,您还需要将 httpd.conf 指向它的目录才能使用它。请参阅https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/modwsgi/ 了解更多信息。
【讨论】:
【参考方案2】:所以,经过搜索和帮助后,我找到了如何让它发挥作用。 为什么我回答?因为@albar 和@gbs 都对我有帮助,我想做一个“完整”的答案来帮助遇到这个问题的人。
首先,@gbs 是对的,因为我没有使用好的 wsgi 应用程序,它在 python 2.7 包中查找并且我有一些编码错误(utf-8 处理 2.7 与 3.4)。
sudo apt-get install libapache2-mod-wsgi-py3
我终于在我的 docroot 上创建了一个 virtualenv,在那里我安装了 django (1.8.2)。
这是你必须添加的行(对我来说是 apache):
WSGIScriptAlias / /var/www/cal/calendar_month/wsgi.py
WsgiPythonPath /var/www/cal
WSGIDaemonProcess calendar_month python-path=/var/www/cal:/var/www/cal/local/lib/python3.4
WSGIDaemonProcess 这一行允许你指定你的 venv 路径(正如@albar 所建议的,在@gbs 回答链接中)。
不管怎样,谢谢你的帮助
希望我的也会有所帮助。
【讨论】:
【参考方案3】:在你的 apache 配置文件中,你应该有一个 python 路径:
WSGIDaemonProcess myapp python-path=/path/to/myapp:/usr/local/lib/python3.4/dist-packages
^^^^^^^^^
【讨论】:
以上是关于Django项目:生产服务器,使用python 3的主要内容,如果未能解决你的问题,请参考以下文章
使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版——部署配置及相关知识
我无法使用 Python 2.7.10 在我的生产环境中部署 Django 1.8.5