一、注册一个账号
需要翻墙,不然验证码不显示。
二、安装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,滚到最后点击删除,输入项目名称。