在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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
深入理解python中的atexit模块
Mar 07 Python
深入理解Python3中的http.client模块
Mar 29 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python使用requests.session模拟登录
Aug 09 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
python如何判断IP地址合法性
Apr 05 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
Python sublime安装及配置过程详解
Jun 29 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
微信小程序的生命周期的详解
2017/10/19 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
高三自我鉴定范文
2013/10/19 职场文书
区三好学生主要事迹
2014/01/30 职场文书
2014和解协议书范文
2014/09/15 职场文书
家长高考寄语
2015/02/27 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL