在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 24 Python
深入解读Python解析XML的几种方式
Feb 16 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
python tkinter界面居中显示的方法
Oct 11 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
python对文档中元素删除,替换操作
Apr 02 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程序
2006/10/09 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
js href的用法
2010/05/13 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
使用js画图之饼图
2015/01/12 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
django+mysql的使用示例
2018/11/23 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
python如何读取bin文件并下发串口
2019/07/05 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
教师师德反思材料
2014/02/15 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
英语投诉信范文
2015/07/03 职场文书
辩论会主持词
2015/07/03 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS