[day12]Heroku 基本使用

如果你有自己的固定IP,可以在本机进行部署,或着使用免费版本的Heroku Platform在云端建立你的服务器,方法没有一定,今天进行Python版本的建置流程

套件安装

这边建立你的Heroku Free Account

安装Heroku CLI

下载并启用范例专案

git clone https://github.com/heroku/python-getting-started.git
cd python-getting-started

如果你因为设定错了参数,想要重新使用已经创建的App,可以使用以下指令设定远端专案

heroku git:remote -a [the-app-name]

建立第一个Heroku App

建立一个新App,并将当前的专案推送至Heroku

heroku create
git push heroku main

建置完成的App,在未启用前处於压缩的状态(slug),将其部属到节点(dynos),才能启用App,使用以下指令分配一个dynos给App:

heroku ps:scale web=1

完成资源分配後,你的App就能够使用分配到的资源开始运作,使用以下指令测试App:

heroku open

检视Log:

heroku logs --tail

Procfile

Procfile,是App的启动指令,格式为

<process type>: <command>
# 测试App中的Procfile为
web: gunicorn gettingstarted.wsgi

只有web类型的程序能够进行HTTP传输,其他类型的则无法从Heroku的Router上接收传送资料

requirements环境套件

如果专案根目录存在requirements.txt,Heroku将会判断专案为Python语言,同时在部署时Heroku会读取内部的内容安装指定的套件

如果你没有虚拟环境,或虚拟环境有太多不相干的套件,可以使用pipreqs产生专案的requirements.txt

pip install pipreqs
pipreqs /path/to/project

本机运行测试

在部署上去之前,可以在个人电脑进行模拟测试,以避免上船上去後发生编译错误或其他问题,由於是本机运作,如果系统为Windows需要设定专用的Procfile:

# Procfile.windows
python manage.py collectstatic

#以此指令在Windows上启动本机模式
heroku local web -f Procfile.windows

#以此指令在Unix系统上执行本机模式
heroku local web

使用浏览器打开http://localhost:5000,如果正常,应该可以看到App产生的网页

将修改完成的新版本上传到云端

Heroku使用与Git同样的格式进行版本控管,以下为范例

修改requirements.txt,新增reequests套件使用

在hello/views.py加入import requests,并修改index函式为:

def index(request):
    r = requests.get('http://httpbin.org/status/418')
    print(r.text)
    return HttpResponse('<pre>' + r.text + '</pre>')

完成本机测试後,与Git相同

git add . 
git commit -m "new Index"

部署

git push heroku main

开启

heroku open

设定环境变数

Heroku鼓励使用config vars作为变数的储存方式,可以通过网页的控制台页签中的Setting-Config Vars进行设定,或使用CLI

#显示专案环境变数
heroku config

#取得特定的变数值
heroku config:get [Key]

#设定环境变数
heroku config:set [Key]=[Val]

#移除环境变数
heroku config:unset [Key]

其他功能

插件执行命令、开启Bash

今天简单的过一遍基础的Heroku使用方式,明天进入将Line机器人部署的教学


<<:  【Day 9】Replica 之间的一致性

>>:  Day 9 - Laravel 8.0的Error Handling

day27 : k8s backup/restore/migrate with velero(下)

昨天介绍了velero的概念,今天来配置一套velero出来看看吧。 配置velero非常的简单,只...

[DAY 10] Pytorch 简介

前言 在开始进入我们各式各样的深度模型之前,我们要先来介绍一个非常 Powerful 的 Deep ...

Day 1 | 前言与大纲

哈罗我是Todd,是一个比较喜欢写前端的全端工程师,工作上大部分是使用 React 及 Node.j...

[Day12] Storybook - Writing Docs

DocsPage DocsPage 是由 Storybook Docs 所提供的页面,无需任何的设定...

django新手村13-----路由规则

urls.py str有可以用int path('personal_info<str:name...