【发布时间】:2013-03-15 13:04:38
【问题描述】:
我需要将文件放在哪个目录中?
我尝试了 public_html,但是当我将文件放在那里并单击 setup.py 时,它没有启动脚本。
【问题讨论】:
-
我无法写出详细的答案,因为这个问题已经结束,但这个分步指南将帮助Deploy Django app on Shared Hosting using CPanel
我需要将文件放在哪个目录中?
我尝试了 public_html,但是当我将文件放在那里并单击 setup.py 时,它没有启动脚本。
【问题讨论】:
由于以下原因,在 cPanel(共享主机)上运行 Django 应用程序可能不是最好的事情:
pip 安装包,只要它们不需要编译任何东西(例如 Django)但是,这并不是说这是不可能的。这些粗略的步骤应该足够准确,以引导您走上正确的道路。好久没做这个了,可能会有错误。
登录您的帐户并为您的 django 项目创建 virtualenv
$ cd ~
$ wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.9.1.tar.gz
$ tar -zxvf virtualenv-1.9.1.tar.gz
$ python virtualenv-1.9.1/virtualenv.py djangovevn
将 virtualenv bin 文件夹添加到路径中(.bash_profile 内)
export PATH="/home/<username>/djangovenv/bin:$PATH" # inside .bash_profile
# activate .bash_profile
$ source .bash_profile
然后pip 安装您的项目所需的一切。确保先激活 virtualenv
$ source ~/djangovevn/bin/activate
$ pip install django
像往常一样配置 Django。确保DEBUG 是False
在public_html 内部创建index.fcgi。确保使用 virtualenv Python 路径。 Django 文档关于此here。
!/home/<username>/djangovenv/bin/python
import sys, os
# add projects directory to the path so that
# settings from the project can be imported
sys.path.insert(0, "/home/<username>/path/to/project")
# Switch to the directory of your project #
os.chdir("/home/<username>/path/to/project")
# Set the DJANGO_SETTINGS_MODULE environment variable #
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings"
# Run the fastcgi instance #
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
在public_html/.htaccess中配置index.fcgi
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]
激活 fastcgi
$ cd ~/public_html
$ touch index.fcgi
$ chmod 0755 .htaccess
$ chmod 0755 index.fcgi
全部完成!
但是这种方法会让你很快发疯。 Apache 不是为此而设计的,并且这种方法不受欢迎是有原因的。一开始这应该足够好,但是随着您将获得更高级的 Django 应用程序部署,您应该考虑使用其他一些允许更大灵活性的托管服务提供商,例如 WebFaction 或 heroku。
【讨论】:
index.fcgi 文件的开头缺少一个哈希。此外,对于现在发现此问题的任何人,django.core.servers.fastcgi 模块已在 1.9 版中从 Django 中删除(请参阅this question)。
Django 是一个在 Python 实例中运行的框架,而不是作为一组从 Web 服务器提供的文件,如 HTML 或 PHP。您很可能需要另一个托管 Web 应用程序的托管服务提供商,例如 Heroku。
【讨论】: