我以前从未部署过 Django 站点。我目前正在寻找在我的豪华 GoDaddy 帐户中进行设置。有没有人有关于如何在 GoDaddy 上安装 python 和 django 的文档?
5 回答
供将来参考,因为我假设您已经继续...
可以在 GoDaddy 主机上使用 Django,使用他们推荐的 VirtualEnv。Python 2.7 是本机安装的并且工作正常,尽管它不是要运行的默认版本。
- 在您的站点上启用 SSH 访问。
- 使用主机面板设置您的初始 MySQL 数据库。它不需要任何条目,只需确保它存在并记下连接信息即可。
- SSH进去,下载VirtualEnv.py。您可能会获得整个 tarball,但您只需要单个文件。
- 运行'/usr/bin/python2.7 virtualenv.py --system-site-packages your_new_env'
- 运行'source your_new_env/bin/activate'
- 运行'pip install django'
- 您现在可以直接按照 django 教程进行操作,当然不使用 runserver(因为您已经运行了一个网络服务器)
这适用于我的豪华帐户,但我仍然建议任何绝对想使用 Django 的人寻求替代托管。GoDaddy 不是很友好,我不确定一切都会继续工作。
编辑
我意识到在没有常规 mod_* 选项的情况下,如何让 Django 在 Apache 中正常运行也可能存在一些混淆。这是我的方法:
- 在 html 目录结构之外的某个地方创建您的 django 项目。例如在 ~/code 中运行 django-admin 以创建 ~/code/yoursite
- 按照 Django 教程中描述的正常项目和数据库设置进行操作。
- 在您的虚拟 python 环境中,运行“pip install flup”。
在 ~/code 中创建以下脚本“django_cgi.py”(注意 python 路径!):
#!~/your_new_env/bin/python import sys, os # Add a custom Python path for your project sys.path.insert(0, "/must/be/full/path/to/code/yoursite") # Set the DJANGO_SETTINGS_MODULE environment variable. # This should match the name for the project you added to the path above os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings' from django.core.servers.fastcgi import runfastcgi runfastcgi(method="threaded", daemonize="false")
在 ~/html 中,使用以下变体创建或编辑 .htaccess 文件:
RewriteEngine On RewriteCond %{REQUEST_URI} !=/mysite.cgi RewriteRule ^(.*)$ /mysite.cgi [QSA,L,PT]
最后,创建 ~/html/mysite.cgi 如下:
#!/bin/sh ~/your_new_env/bin/python ~/code/django_cgi.py 2>&1
- 确保所有内容都经过适当的修改 (755)
这过于简化但功能齐全,并且应该导致对任何页面或文件的每个请求都被传递给 Django。
这种跑路的原因是 GoDaddy 只为我们无法使用的旧版本 Python 提供原生 CGI 支持,所以我们必须使用我们的虚拟环境。虽然我们不能直接在 CGI 脚本中使用它,但幸运的是,我们可以运行一个 shell 脚本并手动调用它。mod_rewrite 规则只是确保所有流量都通过 Django。
根据 Godaddy 的说法,他们可以使用 Python 2.7.2,如果你有他们的虚拟主机的豪华版,你可以编程。按照我的理解,当您在第一行键入 python 安装的目录位置时,python 就会起作用:
#!/usr/local/bin/python2.7
但是,当我尝试测试它时,它不起作用。我在我的帐户上启用了 SSH。我尝试与 Putty 连接,如果我运行它,它就可以工作。但是,问题是,该网站只是没有出现。
我试图检查 Python 的版本是什么。我发现它是 Python 2.4.3。所以,我试图找到他们的目录。我发现它可能是:
#!/usr/local/bin/python2.4
或者
#!/usr/local/bin/python2.4/site.py - (not sure)
我尝试了每个目录并更改了所有可能的语法。没有任何效果。
这是支持 Python 的文章:http: //support.godaddy.com/help/article/7254/can-i-use-python-272-with-my-hosting-account ?locale=en
因此,根据我的观察,任何一个答案都可能是正确的:
- Godaddy 声称他们支持 Python。但是没有能力支持它。
- Godaddy 支持 Python。但是,他们的技术支持人员不知道他们的服务器是如何工作的。
- Godaddy 声称他们支持 Python。但是,他们真的没有。
但在下结论之前,我已经请求将我的 Godaddy Python 服务器更改为 2.7。一旦我发现,我会更新这篇文章。
更新: Godaddy 声称您可以在虚拟专用服务器或专用服务器上运行 Python,我认为这是可能的,因为您正在运行自己的计算机。从技术上讲,您可以在自己的计算机上安装任何东西。因此,如果 Python 运行,Django 可能会运行,但我怀疑他们是否知道如何支持它。
我不特别熟悉 GoDaddy 的设置,但一般来说,除非特别支持(如 Dreamhost),否则您无法在共享主机上安装 Django。因此,除非 GoDaddy 在他们的文档中特别提到 Django(或者可能是 mod_wsgi 或其他东西),这是不太可能的,否则您可以假设它不受支持。
从理论上讲,您可以在任何拥有 shell 访问权限和足够权限的地方安装 Python 并运行 Django,但是您将无法实际将 Django 站点作为共享主机的一部分提供服务(即,在端口 80 上并响应您选择的主机名)因为您无权访问网络服务器配置。
您将需要一个 VPS(GoDaddy 提供但它不是他们的核心业务;Linode 和 Rackspace 是其他选项),或专门支持 Django 的共享主机(例如 Dreamhost),或应用程序主机(Heroku 或 Google App Engine)。我个人推荐 Heroku,特别是如果您对设置和维护自己的网络服务器没有信心。
我就是这样做的。
- 使用 CENTOS 5.8 在真实服务器(您可以完全访问的服务器)上创建 chroot
- 在那里安装所有需要的包,包括 sqlite3-devel、你自己编译的 python 2.7、虚拟环境等。
- 在那里安装 django 并进行设置。
- 对整个 chroot 进行快照并将其复制到机器上,
- 对于执行,只需使用 virtualenv 即可。
请参阅此处的自述文件:https ://github.com/lawrencecreates/RHEL5-chroot/blob/master/README我还修改了该工具的代码,这就是我使用的。