在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解析html开发库pyquery使用方法
Feb 07 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
Django文件存储 默认存储系统解析
Aug 02 Python
python简单的三元一次方程求解实例
Apr 02 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python如何定义接口和抽象类
Jul 28 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
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
一些不错的js函数ajax
2008/08/20 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
python 获取et和excel的版本号
2009/04/09 Python
Python中多线程及程序锁浅析
2015/01/21 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python中的self用法详解
2019/08/06 Python
Python新手学习函数默认参数设置
2020/06/03 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
机械工程师的岗位职责
2013/11/17 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript
详解jQuery的核心函数和事件处理
2022/02/18 jQuery