在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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
详解python中asyncio模块
Mar 03 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python pygame实现2048游戏
Nov 20 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python word转pdf代码实例
Aug 16 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Python IO文件管理的具体使用
Mar 20 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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/11/25 PHP
php error_log 函数的使用
2009/04/13 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
cakephp常见知识点汇总
2017/02/24 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
js获取class的所有元素
2013/03/28 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
一看就懂得Python的math模块
2018/10/21 Python
python实现梯度法 python最速下降法
2020/03/24 Python
python 贪心算法的实现
2020/09/18 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
医院办公室主任职责
2013/12/29 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
人事局接收函
2015/01/31 职场文书
新闻稿标题
2015/07/18 职场文书
检讨书格式
2019/04/25 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
mysql死锁和分库分表问题详解
2021/04/16 MySQL
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS