在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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python中for循环控制语句用法实例
Jun 02 Python
python实现人脸识别代码
Nov 08 Python
Python中的单继承与多继承实例分析
May 10 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
Elasticsearch 批量操作
Apr 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP的FTP学习(一)[转自奥索]
2006/10/09 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
物业门卫岗位职责
2013/12/28 职场文书
营销总经理岗位职责
2014/02/02 职场文书
货车司机岗位职责
2014/03/18 职场文书
小学生作文评语大全
2014/04/21 职场文书
村委会贫困证明范本
2014/09/17 职场文书
未婚证明格式
2015/06/15 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
pycharm代码删除恢复的方法
2021/06/26 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL