heroku部署django应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/summer2day/article/details/81111192

一、注册一个账号

需要翻墙,不然验证码不显示。

二、安装heroku toolbelt

1.安装必要的包

pip install dj-database-url
pip install dj-static
pip install static3
pip install gunicorn

2.创建包含包列表的文件requirements.txt

pip freeze > requirements.txt
将所有需要的包文件都写入txt文件中,与manage.py在同一个文件夹下
在包列表中和添加psycopg2>-2.6.1

3.指定python版本

在虚拟环境中执行python –version
可以看到python版本
在manage.py文件夹下建一个runtime.txt文件,输入如下内容:(输你自己的python版本号)
python-3.6.3

三、修改settings.py

在后边添加如下代码:

#heroku设置
cwd=os.getcwd()#获取当前的工作目录
#确保这个设置文件在本地和在线都能使用,只有部署到kuroku才会执行if
if cwd=='/app' or cwd[:4]=='/tmp':
    import dj_database_url
    DATABASES={
        'default': dj_database_url.config(default='postgres://localhost ')
    } 

    SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')

    ALLOWED_HOSTS=['*']#支持所有的主机头
    #静态资产配置
    BASE_DIR=os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT='staticfiles'
    STATIC_URL = '/static/'
    STATICFILES_DIRS=(
        os.path.join(BASE_DIR,'static'),
    )

四、创建启动进程的Procfile

创建一个Procfile. 文件(没有后缀),与manage.py在同一个文件夹下,内容如下:

web: gunicorn blog.wsgi --log-file -

五、修改wsgi.py

import os
from dja`这里写代码片`ngo.core.wsgi import get_wsgi_application
from dj_static import Cling

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")
application = Cling(get_wsgi_application())

六、创建用于存储静态文件的目录

在与settings.py在同一个文件夹下,新建一个文件夹命名为static,并在其中创建一个名为placeholder.txt的占位文件,因为项目被推送到heroku上时将不会包含空文件夹。
placeholder.txt文件中内容没有什么特别之处,只是指出了添加这个文件的原因。

This file ensures that blog/static/ will be added to the project.
django will collect static files and place them in blog/static/

七、使用git跟踪项目文件

1.配置git

第一次需要配置
git config –global user.name “用户名”
git config –global user.email “邮箱”
git init初始化
这里写图片描述

2.忽略文件

在manage,py文件同文件夹下创建一个名为.gitignore的文件,注意,这个文件以句点打头,在windows下需要建.gitignore. 建成后自动忽略后边的点。
.gitignore文件中内容如下:

__pycache__/
*.sqlite3

八、提交项目

1.登录heroku

在命令行中heroku login
输入账号和密码

2.创建app

heroku create app名

如果报错name is already taken说明名字重复了,换个名字。
打开网站说明创建成功。
这里写图片描述
查看该账户下有多少个app可以用heroku apps

3.将项目推送到heroku

git add .
git commit -m "new"
git push heroku master

这里写图片描述

4.完成后heroku ps

可以看到下图,说明基本上没有问题了。
这里写图片描述
打开网页heroku open,会自动跳转到页面

5.在heroku上建立数据库

之前的设置可以看到主页,但是应用还不能使用,因为还没有建立数据库。

heroku run python manage.py migrate

完成后可以正常访问应用程序,但是看不到在本地的任何数据,因为它们没有复制到在线服务器。
这里写图片描述

常见错误:

1.’heroku’ does not appear to be a git repository
heroku git:remote -a app名
2.显示识别不出来语言,建立时可以用下边的指令
heroku create –buildpack heroku/python
3.
输入heroku ps
报错:No dynos on ⬢ calm-badlands-84252
输入heroku ps:scale web=1
报错:Scaling dynos… !
! Couldn’t find that process type.
还有git push时
remote: —–> Discovering process types
remote: Procfile declares types -> web
都是因为Procfile.文件的问题,注意:没有后缀名。web后边有空格。
内容为web: gunicorn blog.wsgi –log-file -

九、改进heroku部署

1.在heroku上创建超级用户

使用命令heroku run bash打开bash终端会话
然后python manage.py createsuperuser创建超级用户,输入用户名、邮箱和密码。
exit退出bash
完成后可以通过admin来登录管理网站了。

2.在heroku上创建对用户友好的url

heroku apps:rename 新名字

完成后用新的url来访问的网站,以前的不起作用了。

这里写图片描述

3.确保项目的安全

修改settings.py,让我们能够在本地看到错误信息,但部署到服务器后不显示任何错误消息

 ALLOWED_HOSTS=['mysummerblog.herokuapp.com']     #改成网页的url
DEBUG=False

提交修改到git上,再推送到heroku

git commit -am “set debug”
git status

显示master上并没有任何未提交的修改,如果信息不对说明有修改没有提交将不会被推送到heroku上
需要再次commit

git push heroku master

4.将项目从heroku删除

使用命令heroku apps:destory –app appname
或者进入heroku网站https://www.heroku.com/登录,可以看到托管的所有项目,单机想要删除的项目,单机settings,滚到最后点击删除,输入项目名称。

猜你喜欢

转载自blog.csdn.net/summer2day/article/details/81111192