在Heroku服务器上部署准备好的Django应用程序

时间:2014-08-25 08:20:54

标签: django heroku django-deployment

我已经使用Python Django开发了一个应用程序并且它正在工作,我是Python Django的新手,现在我需要在heroku服务器上部署它,有很多博客和网站,包括heroku网站,解释了部署从头开始在heroku上的django应用程序我还没有发现任何关于正在运行的应用程序的讨论

例如,所有这些都需要安装django让我感到困惑,

这是我的应用的文件夹结构:

 myapp
 |_my_app
 | |_Settingd.py
 | |_urls.py
 | |_wsgi.py
 |__webapp
    |_statics(folder) 
    |_admin.py
    |_models.py
    |_views.py

该应用程序正在本地连接到mysql服务器

问题:

现在我完全糊涂了,我如何在heroku上部署正在运行的应用程序?在下面提供的heroku上部署应用程序的步骤中哪些是强制性的,哪些是我可以逃脱的,根据我的文件夹结构,应该是requirements.txt或Procfile的位置以及它们的内容应该是什么? / p>

https://devcenter.heroku.com/articles/getting-started-with-django

我必须安装virtualenv吗?是的我应该在哪里运行此命令(在哪个文件夹中) 我想我不必为django安装django或任何数据库api或驱动程序?因为它们都已安装

1 个答案:

答案 0 :(得分:2)

所以你的第一个问题是为什么应用程序应该在Virtualenv中运行?

  

第一步是什么?安装Django,对吧?不完全的。将软件包直接安装到当前站点包区域的一个常见问题是,如果您有多个项目或在您的计算机上使用Python而不是Django,您可能会遇到应用程序与已安装软件包之间的依赖性问题。出于这个原因,我们将使用virtualenv来管理我们的Django installation。这是Python和Django用户之间的常见和推荐练习。

然后使用此命令安装并激活您的virtualenv ...

$ virtualenv env

$ source env/bin/activate

最后我们激活了环境。现在它看起来像这样

(env)rs@rajasimon-desktop:~/studio/Project$

然后我猜你的第二个怀疑是什么目的安装django-toolbelt?

如果您正在安装django-toolbelt,它将安装所有依赖项或包需要。

它包含Django,psycopg2,gunicorn,dj-database-url,dj-static,static

首先,Heroku本身使用postgres。如果你在当地使用它,生活会更容易。

如果你真的想使用mysql,你有两条路可以遵循。

  

1)在本地运行mysql,但在使用mysql2psql gem迁移到Heroku时转换为postgres,如下所述:https://devcenter.heroku.com/articles/heroku-mysql

     

2)使用像https://addons.heroku.com/cleardb

这样的mysql插件

但是我的建议是将endgres端到端地使用,因为它已经融入了Heroku,你将使用Heroku的默认方式,而不是

这是我目前工作的项目包

(env)ri@rajasimon-desktop:~/studio/project$ pip freeze
Django==1.6.5
MySQL-python==1.2.5
Pillow==2.5.3
argparse==1.2.1
django-ckeditor-updated==4.2.8
wsgiref==0.1.2

应该是requirements.txt&的位置。 Procfile?

如何制作requirements.txt文件

通过运行以下命令将自动包含txt文件中的所有包。

  

pip freeze> requirements.txt

使用Procfile

声明进程类型

procfile用于在生产时启动dyno。我总是这样对..

web: gunicorn project.wsgi

所以最后你的项目结构将如下所示

myapp
 |_my_app
 | |_Settingd.py
 | |_urls.py
 | |_wsgi.py
 |__webapp
 |   |_statics(folder) 
 |   |_admin.py
 |   |_models.py
 |   |_views.py
 |__manage.py
 |__requirements.txt
 |__Procfile