一. 安装git
&sudo apt-get install git
二. 把完整的web程序放到一个新目录里面
比如说我已经有一个完整的web应用, 它里面有这些文件:
然后创建一个Heroku_pro文件夹, 把上面所有的文件都放进去, 放进去以后检查一下:
三. 在Heroku_pro目录下生成一个git仓库
这时你会发现目录下多了一个.git:
四. 把当前目录下的所有文件托管到本地git仓库
五. 注册heroku账号
注册时不能填163邮箱或qq邮箱, 可以注册一个outlook邮箱。
注册完以后会提醒你去邮箱点击验证链接, 如果不能连外网的话是打不开验证链接的, 所以要想办法翻墙, 你注册的账户才能通过验证继而使用。
六. 安装heroku客户端
可以参考官方文档
下载的时候可能遇到不能访问ftp链接的错误, 换一下source.list里面的源就行了, 具体方法可自行百度。
七. 登录heroku
登录邮箱是你注册heroku账号是所填写的邮箱, 密码是邮箱密码。
八. 使用heroku客户端, 创建app程序
因为我已经创建过一遍了, 所以提醒我程序名已经被使用, 所以我们要创建一个没有被使用过的程序名。
创建成功以后会显示类似下面的信息:
Creating my-heroku-app-cn... done, stack is cedar-14
https://sjk-flask-app.herokuapp.com/ | https://git.heroku.com/sjk-flask-app.git
当然app程序的名字是可以修改的, 登录官网在个人信息页就可以修改。
九.配置数据库
Heroku以扩展的方式支持Postgres数据库,只是有些限制而已,正如前面所说。这里我们就使用Postgres数据库,这也意味着,你需要在你的Web应用源代码中添加相应的数据库路径,这个我们待会再说。
环境变量HEROKU_POSTGRESQL_COBALE_URL中保存了数据库的url。
下述命令把前面创建的数据库提升为主数据库。
会提醒类似下面的信息:
Promoting HEROKU_POSTGRESQL_COBALE_URL to DATABASE_URL ... done
这就是说, 我们刚刚创建的sjk-flask-app程序创建了一个名为DATABASE_URL的环境变量, 变量的值就是该数据库在heroku平台中的路径, 也就是说, 我们只要把程序实例的配置作如下改动:
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'data.sqlite')
程序就可以自动连接到postgres数据库。
十.配置必要的环境变量
比如我在我的源代码的配置文件中有下面的两行代码:
1.MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
2.MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
显然电子邮件的用户名和密码这些敏感的信息不应该出现在源代码中,所以我是通过获取环境变量的值来知道用户名和密码的,因此我需要在Heroku上设置相对应的环境变量,命令如下:
如果还有别的环境变量, 配置方法如上。
十一. 添加依赖需求文件和Profile文件
1.requirements.txt——Web应用程序所依赖的各种第三方扩展包
程序中需求文件是相互依赖的, 但最终等效的requirements.txt的文件内容就是该程序所需的所有依赖, 内容大概如下:
alembic==0.9.3bleach==2.0.0
blinker==1.4
click==6.7
dominate==2.3.1
Flask==0.12.2
Flask-Bootstrap==3.3.7.1
Flask-HTTPAuth==3.2.3
Flask-Login==0.4.0
Flask-Mail==0.9.1
Flask-Migrate==2.0.4
Flask-Moment==0.5.1
Flask-PageDown==0.2.2
Flask-SQLAlchemy==2.2
Flask-WTF==0.14.2
html5lib==0.999999999
itsdangerous==0.24
Jinja2==2.9.6
Mako==1.0.7
Markdown==2.6.8
...
gunicorn==19.7.1
psycopg2==2.7.3
2. Procfile文件——里面包含的是我的Web应用服务器启动时执行的命令
web:gunicorn manage:app
注意, 这两个文件都要再Heroku_pro文件夹目录下
十二. 执行git push部署
1.再次执行下面两条命令提交我们的修改:
git add .
git commit -m "ver1.0"
2.执行命令进行部署
成功后显示类似这样的信息* [new branch] master -> master
3.启动web服务器进行相关初始化配置
注意此处我们是在heroku平台上执行deploy命令, 记得manage.py文件中的代码行吗?
@manager.command
def deploy():
# create or update user roles
# ensure all users are following themselves
db.create_all()
Role.insert_Roles()
User.generate_fake()
Post.generate_fake()
创建数据库, 添加角色, 并生成一些虚拟数据即可。
4. 重新启动
十三. 部署成功
上面完成后, 我们就可以使用链接http://sjk-flask-app.herokuapp.com访问我们的web程序了~