在Heroku云平台上部署Python的Django框架的教程


Posted in Python onApril 20, 2015

Heroku是一个很棒的平台,它有很多的控件,并且搭建环境相对来说也比较容易。本指南中,我将一步一步指导你在Heroku平台上部署一个简单地Django应用
搭建开发环境
Heroku工具链

假设你已经在Heroku平台上注册了一个帐户,并且在里面创建了一款应用,为了一会儿通过CLI与Heroku交互,你需要安装Heroku工具链。在这篇指南中,我们用"Sample-Project"作为应用的名字。
Git仓库

在部署你的应用到Heroku之前,你需要先将你的代码签入git仓库中。Heroku提供的git仓库信息可以在你的应用设置页中找到。
 

one git@heroku.com:sample-project.git

Python 和 Virtualenv

如果这不是你的第一款python应用,你或许已经把环境搭建起来了。然后,不同的Pyton版本之间存在兼容性问题,因此你应该在开发你的Python应用时使用Virtualenv命令来创建一个虚拟的环境。
 

# Install pip 
$ [sudo] python get-pip.py 
 
# Install Virtualenv
$ [sudo] pip install virtualenv 
 
# Create a virtual environment
$ virtualenv venv
 
# Activate venv
$ source venv/bin/activate

创建一款Django应用

建议你安装django-toolbelt,它由以下几部分组成。

- Django
- Gunicorn (WSGI服务器)
- dj-database-url (一个Django配置工具)
- dj-static (一个Django静态文件服务器)

(venv)$ pip install django-toolbelt
(venv)$ cd Sample-Project
 
# Create a Django project name Sample_Project
# A valid Django project name can't contain dash
(venv)$ django-admin.py startproject Sample_Project .
 
# Create the requirements file  
(venv)$ pip freeze > requirements.txt

 
部署你的代码

1. 创建ProcFile
ProcFile被用来声明应该被执行的开始web dyno命令。这个文件应该被放在manage.py(指定的)文件夹中。简单地创建一个ProcFile文件,如下面的一行例子所示。

unicorn Sample_Project.wsgi --log-file -

2. 查看你希望部署代码的远程服务器简称。下面这个例子显示地是配置仅有一个简单远程服务器的例子,它的简称是origin。(假设)你可能已经配置过很多的远程服务器。
 

$ git remote -v
origin git@heroku.com:Sample-Project.git (fetch)
origin git@heroku.com:Sample-Project.git (push)

3. 部署你的代码

使用"git push"去部署你的代码。
 

$ git push origin master
Initializing repository, done.
Counting objects: 11, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (11/11), 2.64 KiB | 0 bytes/s, done.
Total 11 (delta 0), reused 0 (delta 0)
 
-----> Python app detected
-----> Installing runtime (python-2.7.8)
-----> Installing dependencies with pip
    Downloading/unpacking Django==1.6.6 (from -r requirements.txt (line 1))
    Downloading/unpacking dj-database-url==0.3.0 (from -r requirements.txt (line 2))
     Downloading dj_database_url-0.3.0-py2.py3-none-any.whl
    Downloading/unpacking dj-static==0.0.6 (from -r requirements.txt (line 3))
     Downloading dj-static-0.0.6.tar.gz
...
To git@heroku.com:Sample-Project.git
 * [new branch]   master -> master

4. 验证你部署的代码
 

$ heroku open

你应该看到标准的Django开始页面(显示的是)“It worked! Congratulations on your first Django-powered page.”

5. 使用dyno测量你的应用规模
 

$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:1X.
Python 相关文章推荐
Python中暂存上传图片的方法
Feb 18 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Django开发中复选框用法示例
Mar 20 Python
TensorFlow实现简单卷积神经网络
May 24 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python创建学生成绩管理系统
Nov 22 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
django rest framework serializers序列化实例
May 13 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
从Python程序中访问Java类的简单示例
Apr 20 #Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 #Python
python使用7z解压apk包的方法
Apr 18 #Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 #Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 #Python
python对指定目录下文件进行批量重命名的方法
Apr 18 #Python
python开启多个子进程并行运行的方法
Apr 18 #Python
You might like
PHP4中实现动态代理
2006/10/09 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php表单处理操作
2017/11/16 PHP
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
python字典序问题实例
2014/09/26 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Python实现SMTP邮件发送
2020/06/16 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
新闻系毕业生推荐信
2013/11/16 职场文书
小学少先队活动方案
2014/02/18 职场文书
党员承诺书内容
2014/03/26 职场文书
党员十八大心得体会
2014/09/12 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
施工安全保证书
2015/05/09 职场文书
运动会100米加油稿
2015/07/21 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
中学语文教学反思
2016/02/16 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书