在Heroku上部署现有Django应用
我正在按照Heroku的教程操作,但我已经创建了一个相当复杂的Django应用程序,想要上传到Heroku上。我把这个应用复制到了一个新的文件夹里,并成功地运行了git init
,然后把文件添加到了一个提交中。接着我运行了heroku create --stack cedar
,这样我就得到了一个网站,然后我执行了git push heroku master
。结果出现了以下内容:
Counting objects: 6756, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5779/5779), done.
Writing objects: 100% (6756/6756), 6.98 MiB | 953 KiB/s, done.
Total 6756 (delta 2210), reused 0 (delta 0)
-----> Heroku receiving push
-----> Removing .DS_Store files
-----> Python app detected
! Django app must be in a package subdirectory
! Heroku push rejected, failed to compile Python app
To git@heroku.com:sitename.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:sitename.git'
在Heroku的文件夹里,我有我的init、settings、manage和urls.py文件,还有一个名为OmniCloud_App的文件夹,里面包含了这个应用的admin、models、Templates(文件夹)、static(文件夹)、tests、urls和views。为什么Heroku不识别这个应用呢?
2 个回答
我有一个示例的Django应用程序,已经部署到Heroku上,你可以在这里查看:https://github.com/synedra/django-linkedin-simple
我写了一篇博客,讲的是如何将这个系统部署到Heroku,你可以在这里找到:http://www.princesspolymath.com/princess_polymath/?p=511
需要注意的是,我的文章主要是关于如何让认证功能正常工作。你可以参考我博客中链接的Heroku Django教程,这个教程应该足够详细。你可以按照教程的步骤走一遍,然后看看你的设置和教程有什么不同。
Chris,
对于Django来说,Heroku希望你在你的Django项目所在的文件夹里进行操作(这个文件夹应该和你的requirements.txt文件在同一个层级)。你可以用ls命令查看这个文件夹的内容,结果可能会像这样:
$ ls
requirements.txt appfolder
$ ls appfolder
__init__.py manage.py settings.py urls.py
这样做可以让你部署一个已经存在的应用,然后根据需要配置你的Procfile。