在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语言的12个基础知识点小结
Jul 10 Python
python读写json文件的简单实现
Apr 11 Python
Python与R语言的简要对比
Nov 14 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
Django logging配置及使用详解
Jul 23 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
python 如何用terminal输入参数
May 25 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新手谈谈我的学习心得
2007/02/25 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Django如何实现防止XSS攻击
2020/10/13 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
学校门卫工作职责
2013/12/07 职场文书
机械工程师岗位职责
2014/06/16 职场文书
商标侵权律师函
2015/05/27 职场文书
国庆阅兵观后感
2015/06/15 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书