heroku搭建邮件服务器,在Heroku上搭建简单的Python Web 应用

开发一个小应用放在互联网上给大家使用是一件成就感很高的事情,不过支持Python的免费空间不是很多,虽然GAE支持Python,不过由于众所周知的原因,在国内是很难打开GAE,这篇文章为大家介绍一下Heroku,heroku支持Python,并且在数据量不大的情况下是免费。

涉及到的工具

git:分布式版本管理工具,这里推荐大家看一下廖雪峰的GIT教程

Virtualenv,Python的虚拟环境模块

Virtualenvwrapper,在Virtualenv之上封装了一些更简便的方法

Flask,Python的web框架

Heroku Toolbelt,Heroku提供的命令行工具

搭建本地的环境

安装Virtualenv和Virtualenvwrapper

sudo pip install Virtualenv

sudo pip install Virtualenvwrapper

安装之后需要在.bash_profile中添加如下两行代码:

export WORKON_HOME=$HOME/.virtualenvs

source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

这里source的路径可以通过:which virtualenvwrapper.sh来确定

创建一个叫做toyapp的文件夹,用于存放这个项目相关的文件

进入toyapp,初始化一个git仓库

cd toyapp

git init

用Virtualenvwrapper创建一个名为toyapp虚拟环境

mkvirtualenv toyapp

创建一个虚拟环境好处在于:每个App都有其依赖的特定版本Python模块,不同版本的模块可能导致App无法运行,而在本地的Python主环境中只能安装一个版本的模块,并且不同的App也并不会需要安装主环境中的所有模块。

通过虚拟环境,我们可以为不同的环境安装不同版本的模块,同时也可以为App只安装需要必须模块的纯净环境。

通过mkvirtualenv命令创建虚拟环境后会默认进行这个虚拟环境

通过postactivate文件添加一些进入虚拟环境的初始命令

postactivate中的变量可以在运行workon(virtualenvwrapper提供的切换虚拟环境命令)后运行,比如,对于我们的项目,我们可以在postactivate添加cd命令,这样当我们切换到虚拟就可以进入到项目的目录中

vi $VIRTUAL_ENV/bin/postactivate

在虚拟环境中运行上面的命令,就可以编辑postactivate文件,在vim编辑器中,英文模式下输入i进入插入模式,添加cd 项目的路径,比如cd /Users/cloga/Documents/clogatoyapp,添加完毕后,按ESC键退出插入模式,英文模式下输入:wq保存修改并退出vim

用deactivate命令退出虚拟环境,再用workon toyapp命令进入虚拟环境,这时你会发现目录也会自动进入到项目的路径

如果要删除一个虚拟环境,需要使用

deactivate

rmvirtualenv 虚拟环境

但是这个命令不会删除安装的模块,如果要删除所有按照的模块需要使用

rm -r 虚拟环境的文件夹

比如对于我的情况,需要使用

rm -r /Users/cloga/.virtualenvs/toyapp/

创建一个简单的Flask项目

安装Flask,并把当前环境中依赖的python模块输入到requirements.txt

pip install flask

pip freeze > requirements.txt

requirements.txt里面记录了当前环境中安装的各种模块及其对应版本,当上传到Heroku时,Heroku会按照这个文件安装对应的模块,如果以后有新增的模块,也需要及时通过pip freeze命令将模块版本信息添加到这个文件中

创建app.py,并在其中添加如下代码

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello():

return "Hello World!"

if __name__ == '__main__':

app.run()

在terminal中运行 python app.py,这样一个最简单的Flask web app就开始运行了,访问http://localhost:5000/试一下吧

如果要关闭服务器,按CTRL+C

简单解释一下app.py中的代码作用

首先,引入了Flask类

接下来创建了一个Flask类的实例。参数是这个模块或包的名称。当将app.py直接运行时__name__等于__main__,如果将app作为一个模块引用则等于引用时为app指定的名字。Flask需要这个名字来了解去哪里查找模板,静态文件等等

用route修饰器来告诉Flask哪些URL应该触发下面方法

定义一个hello_world方法,当方法运行时返回‘Hello World!’字符串

最后是一个Python中很常见的用法,如果这个脚本文件是在python解释器直接运行则运行app()

所以简单来说,app.py的作用就是当有人访问/页面时返回‘Hello World!’字符串

将项目部署到Heroku

免费的Heroku支持一个Dynos和10K以下记录的PgSQL

下载并安装Heroku Toolbelt

Toolbelt提供了Heroku的命令行工具

定义 Profile

touch Procfile

在其中输入以下语句

web: gunicorn app: app

Profile是一个在应用根目录的文本文件,用于声明用于启动应用的语句

上面的一行语句声明了一个单一的进程类型:web以及运行它需要的语句。Web在这里很重要,它表明这个进程类型将隶属于Heroku的HTTP路由栈,并且在部署时接受web流量

安装gunicoin,并将版本信息计入requirements.txt

pip install gunicorn

pip freeze > requirements.txt

登陆Heroku

heroku login

输入用户名和密码

在Heroku上创建一个App

heroku create toyapp

将本地的App推送到Heroku上

git add -A

git commit -m 'init'

git push heroku master

你也可以为这个git库同时绑定一个github仓库

假设你创建了一个名字为test的github仓库,那么你可以通过下面的代码将本地的代码库与远程的Github库关联

git remote add origin https://github.com/cloga/test.git

通过git push orgin master,就可以将本地的代码库推送到github。

enjoy你的第一个web app吧

heroku open

PS:我在Heroku上放了两个小项目:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值