自己写了个Django博客,最后成功的部署到了heroku上,记录一下艰辛的过程(windows上)

准备阶段

首先得有个heroku账号,我是用gmail注册的

然后就可以按照基础教程一步一步部署到heroku上

https://devcenter.heroku.com/articles/getting-started-with-python

安装好git(版本控制工具)以及heroku客户端

安装好后将heroku启动路径加入环境变量,接下来就能在cmd登入heroku

$ heroku login
Enter your Heroku credentials.
Email: user@example.com                       #  账号
Password:                                     #  密码

接下来可以按照官方教程下一个Django app试验一下流程

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

上传操作

上传前需要安装一些包才能正常使用静态文件以及数据库服务见下文django设置,如果只是用官方示例app直接进行下方操作就行

上传操作其实和上传到github的操作大致一致,先进入Django目录下git init—》git add . ——》git commit -m “first commit”

$ heroku create (可加一个app name)#在heroku上创建app
Creating lit-bastion-5032 in organization heroku... done, stack is cedar-14
http://lit-bastion-5032.herokuapp.com/ | https://git.heroku.com/lit-bastion-5032.git
Git remote heroku added $ git push heroku master          #把本地文件部署到heroku上   

$ heroku ps:scale web=1           #确保app在运转$ heroku open                     #打开网站

查看日志了解你部署的app运转情况,ctrl+C退出

$ heroku logs --tail
2014-08-15T15:17:55.780361+00:00 app[web.1]: 2014-08-15 15:17:55 [2] [INFO] Listening at: http://0.0.0.0:19585 (2)
2014-08-15T15:17:55.780488+00:00 app[web.1]: 2014-08-15 15:17:55 [2] [INFO] Using worker: sync
2014-08-15T15:17:55.830489+00:00 app[web.1]: 2014-08-15 15:17:55 [7] [INFO] Booting worker with pid: 7
2014-08-15T15:17:55.779494+00:00 app[web.1]: 2014-08-15 15:17:55 [2] [INFO] Starting gunicorn 19.0.0
2014-08-15T15:17:56.321151+00:00 heroku[web.1]: State changed from starting to up
2014-08-15T15:17:57.847806+00:00 heroku[router]: at=info method=GET path="/" host=lit-bastion-5032.herokuapp.com request_id=7fd99883-20ec-43d5-8b2d-5204351cdf2d fwd="94.174.204.242" dyno=web.1 connect=1ms service=240ms status=200 bytes=679

上传前的准备工作

在项目根目录下创建一个Procfile文本文件,用于定义app启动需要执行的命令

web: gunicorn gettingstarted.wsgi --log-file -        中间的gettingstarted.wsgi需替换成项目名.wsgi,不替换会报错找不到gettingstarted

还可以定义一个在本地windows上运行的Procfile.windows文件

web: python manage.py runserver 0.0.0.0:5000

定义项目所依赖的环境,安装的包

如果你使用的是Pipenv创建的虚拟环境根目录下会有Pipfile这个文件

使用其他方法的话需要新建一个requirements.txt文件,可以进入虚拟环境后输入命令pip freeze > requirement.txt写入

这个文件让heroku知道要安装哪些包

beautifulsoup4==4.6.0
bs4==0.0.1
dj-database-url==0.5.0
dj-static==0.0.6
Django==2.0.7
django-toolbelt==0.0.1
gunicorn==19.9.0
Pillow==5.2.0
psycopg2==2.7.5
pytz==2018.5
static3==0.7.0
whitenoise==3.3.1
django-heroku==0.3.1
certifi==2018.4.16
chardet==3.0.4
idna==2.7
requests==2.19.1
setuptools==28.8.0
urllib3==1.23

requirement.txt

本地启动app

$ python manage.py collectstatic           #报错了需根据错误信息解决问题,上传到heroku也有这个过程搜集静态文件
$ heroku local web -f Procfile.windows     #本地启动app服务

打开http://localhost:5000 访问本地app

通过heroku上传本地更新的内容

$ git add .
$ git commit -m "Demo"
$ git push heroku master
$ heroku open

部署后的控制台

可以通过heroku run命令打开控制台

$ heroku run python manage.py shell
$ heroku run python manage.py makemigrations
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser

Django部署的一些特别设置

安装Gunicorn web server

$ pipenv install gunicorn

安装django-heroku

安装whitenoise

settings文件设置

import django_heroku
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False         #把debug模式设置成falseINSTALLED_APPS = ['whitenoise.runserver_nostatic',      加到app最上面'django.contrib.admin',
]MIDDLEWARE = ['django.middleware.clickjacking.XFrameOptionsMiddleware','whitenoise.middleware.WhiteNoiseMiddleware',        加到中间件
]###########静态文件设置###############
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),
)# Django用户上传的都叫media文件
MEDIA_URL = "/media/"
# media配置,用户上传的文件都默认放在这个文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR, "media")#数据库设置
if os.getenv('DATABASE_URL') is not None:import dj_database_urlDATABASES['default'] = dj_database_url.config()STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'# Activate Django-Heroku.
django_heroku.settings(locals())

数据库相关

django数据库上传不上去

heroku用的是heroku-postgresql数据库服务

所以部署好app后得重新写入数据库

转载于:https://www.cnblogs.com/blue-day/p/9347185.html

如何在heroku上部署你的Django程序相关推荐

  1. ci/cd heroku_在GitLab上设置CI / CD以在Heroku上部署Python Flask应用程序

    ci/cd heroku Recently I came across a challenge to deploy a Python Flask web application to Heroku. ...

  2. heroku服务器_如何在Heroku上使用Express服务器部署React应用

    heroku服务器 by Ashish Nandan Singh 通过Ashish Nandan Singh 如何在Heroku上使用Express服务器部署React应用 (How to deplo ...

  3. heroku创建linux主机,在 Heroku 上部署 Django 应用

    在 Heroku 上部署 Django 应用 Heroku是一个很棒的平台,它有很多的控件,并且搭建环境相对来说也比较容易.本指南中,我将一步一步指导你在Heroku平台上部署一个简单地Django应 ...

  4. 如何把自己的网站部署在网上_Terminal:如何在IPFS上部署Wordpress网站

    2020年3月19日,胡安兴奋的向大家推送: 利用terminal.co在IPFS上部署了我的个人网站,耗时小于10分钟,这太棒了! 为@terminaldotco喝彩! Terminal简介 从本地 ...

  5. ci/cd heroku_在Heroku上部署Dash或Flask Web应用程序。 简易CI / CD。

    ci/cd heroku First, we'll transform the animated scatter map built in my previous article into a bas ...

  6. aws 删除ec2实例_如何在AWS EC2实例上部署Spring Boot应用程序

    aws 删除ec2实例 你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialise ...

  7. 如何在AWS EC2实例上部署Spring Boot应用程序

    你好朋友, 在本教程中,我们将看到如何在AWS EC2实例上部署Spring Boot应用程序. 这是我们将要执行的步骤. 1.使用Spring Boot Initialiser创建一个Spring ...

  8. 怎么抓python程序的包_如何在AWS上部署python应用程序

    如何在AWS上部署python应用程序,学姐呕心沥血亲自总结,亲测有效,比网上看网上大把大把的文档要快得多! 作者:蕾学姐 亚马逊云计算服务(Amazon Web Services,缩写为AWS),由 ...

  9. docker部署在linux怎么代理,如何在linux 上部署docker

    如何在linux 上部署docker? Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 可以将 ...

  10. 实操手册:如何在GKE上部署HTTP(S) Load Balancer及容器应用程式

    Kubernetes(下文简称 k8s) 代表了 Google 的第三代容器管理系统,仅次于 Borg 和 Omega ,现在已经成为主要的容器平台.GKE 提供了了全套的 k8s 托管服务,将 Au ...

最新文章

  1. JAVA多线程提高十四: 面试题
  2. 编辑器推荐KindEditor
  3. navicat开启mysql数据库root用户的远程访问
  4. tinyhttp源码阅读(注释)
  5. mysql 列换行 表设计 设计_今天来讲一下怎么利用MySql进行库表设计
  6. docker~从Dockerfile到Container的过程(终于算是OK了)
  7. PHP浮点运算结果出现误差原因分析及解决方案
  8. 怎样高效实现增长?这里有50个经典的增长黑客策略
  9. .net链接带密码的ACCESS数据库
  10. 已安装过matplotlib但提示ModuleNotFoundError: No module named ‘matplotlib‘的解决方法
  11. 初接触设计模式--简单工厂(二)
  12. Python3-笔记-E-012-库-JSON
  13. 微云存储空间多大_微云免费存储容量由1T降为10G,百度还能坚持多久?
  14. 计算机控制的行业规模,2019年中国DCS控制系统行业市场现状及竞争格局分析,内资“两家独大”「图」...
  15. 简单破解 Sencha Architect 2.2 (ExtJs Designer) - 李路平 - 博客园
  16. 计算反转录转座子插入时间一:计算原理
  17. 内构函数java_图灵学院笔记-java虚拟机底层原理
  18. 执行sudo apt-get update时,不再含有release文件问题解决
  19. android删除微信授权管理员权限,微信小程序授权登录取消授权重新授权处理方法 附可用代码...
  20. mac重装系统之后删除容器中的其他卷宗内容

热门文章

  1. 强大的Common类库
  2. sql server期中综合练习
  3. 高性能网站架构的思考
  4. Angularjs中设置cookies的过期时间
  5. 寻找高匿名破盾代理方案1. tinyproxy
  6. Python struct模块与简单使用
  7. 21. 包含min函数的栈(C++版本)
  8. docker自定义网络
  9. 计算机图形学全代码,计算机图形学作业参考代码
  10. mysql c3p0 释放连接池_mysql – 如何阻止c3p0连接池隐藏连接异常的原因?