0, Heroku
Heroku是老牌的免费云空间,可以很好的满足我们学习/研究/实验/测试的目的,同时,他对Python的支持非常良好。
下面来介绍如何把已经写完的Flask程序部署到Heroku平台。
(我使用的操作系统是OS X,Linux平台下操作类似)
1, 注册Heroku账号
进入Heroku官网进行注册, 163,QQ等应该是不支持的,可以翻墙Gmail或者Apple的iCloud邮箱去注册都可以 https://www.heroku.com/
2, 下载Heroku Toolbelt客户端
安装这个客户端就可以让我们以命令行来操作管理我们在Heroku上的程序。
下载安装方法详见官方文档https://devcenter.heroku.com/articles/heroku-cli#download-and-install
3, 登录Heroku
在终端输入heroku login 按提示输入刚刚注册的账号密码
MacBook:MyBlog$ heroku login
Enter your Heroku credentials.
Email: youremail@xxx.com
Password (typing will be hidden):
Logged in as youremail@xxx.com
MacBook:MyBlog$
最后的logged in as youremail@xxx.com 表示登录成功
4, 准备你的Web App
要使用Heroku部署Web App就要使用Git仓库托管,用git push的方法将程序放上Heroku。git是很优秀的版本托管工具,开发自然少不了和git打交道
4.1安装Git
下载安装 https://git-scm.com/downloads
使用命令行查看git版本
git --version
4.2 生成git仓库
在Web程序的目录下,命令行输入
git init #初始化git仓库
接着将文件托管到git仓库
git add .
git commit -m "v1.0" #版本号v1.0
5, 用Heroku创建app
命令行
heroku create <appname> #你的app的名字
heroku apps #查找你的heroku的app程序
heroku apps:destory <appname> #删除app程序
创建好app程序后开始配置数据库,Heroku可以支持Postgre数据库,这里我们就用这个。
$heroku addons:create heroku-postgresql:hobby-dev
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Created postgresql-asymmetrical-71831 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation
出现以上字样表示配置成功
6, 检查我们的必要文件
Heroku要求在我们的Web程序(Python Web)目录中必须要有下面的两个文件:
requirements.txt 和Profile,前者我们都知道,就是放置了各种扩展包的,后者Profile的内容就是
web: gunicorn manage:app
7, 进行git push部署
git push heroku master
$ git push heroku master
对象计数中: 97, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (90/90), 完成.
写入对象中: 100% (97/97), 35.04 KiB | 0 bytes/s, 完成.
Total 97 (delta 22), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing runtime (python-2.7.11)
remote: -----> Installing dependencies with pip
remote: Collecting Flask==0.10.1 (from -r requirements/common.txt (line 1))
..........
remote: -----> Preparing static assets
remote: Collectstatic configuration error. To debug, run:
remote: $ heroku run python manage.py collectstatic --noinput
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 37.2M
remote: -----> Launching...
remote: Released v6
remote: https://my-heroku-app-cn.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy.... done.
To https://git.heroku.com/my-heroku-app-cn.git
* [new branch] master -> master
以上就说明git push成功了
接着,进行初始化
$ heroku run python manage.py deploy
$ heroku restart #重新启动
8, 开始访问
以上都完成后,我们就可以开始访问我们的web 程序,
<appname>.heroku.com