部署学习笔记

接下来我们将使用Heroku(基于Web的平台)管理Web应用程序的部署。

建立Heroku账户

访问https://signup.heroku.com注册一个帐号。

安装Heroku Toolbelt

安装Heroku Toolbelt,对部署到Heroku服务器的项目进行管理。访问https://toolbelt.heroku.com/进行安装。

安装必要的包

在虚拟环境中使用pip安装dj-database-url、dj-static、gunicorn,帮助在服务器上支持django项目提供的服务。
其中dj-database-url帮助django与Heroku使用的数据库进行通信,dj-static帮助django正确的管理静态文件,而gunicorn是一个服务器软件,能够在在线环境中支持应用程序提供的服务。

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

pip freeze > requirements.txt

我们部署时,Heroku将会安装以上列出的所有包。接着我们在包列表中添加 psycopg2,它帮助Heroku管理活动数据库。

指定Python版本

python --version



接着在manage.py所在的文件夹 中仙剑一个名为runtime.txt:

记住小写和减号!

为部署到Heroku而修改settings.py

在settings.py末尾添加

getcwd()

创建启动进程的Procfile

在manage.py的文件中创建Procfile(无后缀)

这行代码让Heroku将gunicorn用作服务器,并使用learning_log/wsgi.py里的设置来启动应用程序。标志log-file告诉Heroku应将那些类型的事件写入日志。

为部署到Heroku而修改wsgi.py

修改wsgi.py

我们导入了帮助正确地提供静态文件的Cling,并使用他来启动应用程序。

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

在目录
接着在manage.py的同一目录下创建文件夹static,并在static文件夹中新建一个placeholder.txt当作占位文件,因为项目被推送到Heroku时不会包含空文件夹。

使用Git跟踪项目文件

1.安装Git
如果你安装了Heroku Toolbelt,则里面已经包含Git了。
2.配置Git
执行

git config --global user.name "ehmatthes"git config --global user.email "eric@example.com"

3.忽略文件
记住不要上传数据库文件!!!在manage.py所在的目录创建一个名为.gitignore的文件。

4.提交项目





git initgit add .git status

推送到Heroku

在虚拟环境中执行







heroku ps



heroku open



在Heroku上建立数据库

migrateheroku run



现在可以将这个应用程序的URL分享给你的小伙伴了~

改进Heroku部署

DEBUGFalse




2.在Heroku上创建对用户友好的URL




确保项目的安全

修改settings.py

提交并推送修改

现在将settings.py的修改提交到Git仓库,在将修改推送到Heroku。



Heroku发现仓库发生了变化,因此重建项目,但不会重建数据库,所以不用在迁移数据库。

创建自定义错误页面

当用户遇到404或者500的错误时,会返回错误页面。404表示代码没错,但请求的对象不存在。500表示代码有问题。现在我们将自定义错误页面。
1.创建自定义模板
在learning_log/learning_log中新建一个 templates文件夹,创建404.html、505.html

这些新文件要求对settings.py做修改。

2.在本地查看错误页面
本地的settings.py进行修改

DUBUGFalseALLOWED_HOSTSDUBUGTrue




get_object_or_404()

修改之后记得提交。

继续开发

git add .git commit -am "commit message"git push heroku masterheroku run python manage.py migrateheroku run bashpython manage.py migrate

设置SECRET_KEY

Django根据settings.py中设置SECRET_KEY的值来实现大量的安全协议。

将项目从Heroku删除

heroku apps:destroy --app appname

本学习笔记到尾声啦,如果遇到什么解决不了的问题可以在评论提出来哦。
即将再见!


entry.text

打开topic.html并添加

done!