在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开发编码规范
Sep 08 Python
python实现异步回调机制代码分享
Jan 10 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
django2.0扩展用户字段示例
Feb 13 Python
python使用threading.Condition交替打印两个字符
May 07 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
python实现批量nii文件转换为png图像
Jul 18 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
python选择排序算法的实现代码
2013/11/21 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python中创建二维数组
2018/10/17 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
业务代表的岗位职责
2013/11/16 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
学校运动会霸气口号
2014/06/07 职场文书
团队拓展训练心得体会
2016/01/12 职场文书