在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的汉字转GBK码实现代码
Feb 19 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Python异常处理操作实例详解
May 10 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
python开发游戏的前期准备
May 05 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python列表切片常用操作实例解析
Dec 16 Python
通俗讲解python 装饰器
Sep 07 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
python使用torch随机初始化参数
Mar 22 Python
Python自动化实战之接口请求的实现
May 30 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 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
js正确获取元素样式详解
2009/08/07 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python continue继续循环用法总结
2018/06/10 Python
彻底理解Python中的yield关键字
2019/04/01 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
如何进行Linux分区优化
2013/02/12 面试题
工程力学专业自荐信范文
2014/03/17 职场文书
模特大赛策划方案
2014/05/28 职场文书
个人授权委托书格式
2014/08/30 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫