第二十章 设计样式和部署(一)
部署学习笔记
接下来我们将使用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
Heroku需要知道项目依赖那些包,因此我们使用pip来生成一个文件,其中列出依赖包。在虚拟环境中执行.
我们部署时,Heroku将会安装以上列出的所有包。接着我们在包列表中添加psycopg2,它帮助Heroku管理活动数据库。
指定Python版本
如果没有指定python的版本,heroku将使用当前默认的版本。在虚拟环境中执行.
接着在manage.py所在的文件夹 中仙剑一个名为runtime.txt:
记住小写和减号!
为部署到Heroku而修改settings.py
在settings.py末尾添加
首先我们使用了函数,用来获取当前的工作目录。在Heroku部署中,这个目录总是/app。在本地部署中,通常是项目文件夹的名称。
这个if测试确保仅当项目被部署到Heroku时,才运行这个代码块。这种结构让我们能够将同一个设置文件用于本地开发环境和在线服务器。
接着我们导入了dj_database_url,用于在Heroku配置服务器。Heroku使用PostgreSQL作为数据库。这些设置对项目进行配置,使其在Heroku上使用PostgreSQL。其他设置思维作用分别是:支持HTTPS请求;让djang能够使用Heroku的URL来提供服务;设置项目,使其能够在Heroku上正确提供静态文件。
创建启动进程的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
执行
3.忽略文件
记住不要上传数据库文件!!!在manage.py所在的目录创建一个名为.gitignore的文件。
4.提交项目
命令表示在“学习笔记”所在的目录中初始化一个空仓库。命令表示将未被忽略的文件都添加到这个仓库。命令输出表明当前位于分支master中,而工作目录是干净的。
推送到Heroku
在虚拟环境中执行
接着执行命令
接着执行命令
在Heroku上建立数据库
为建立在线数据库,我们需要再次执行命令。要对Heroku项目执行django和python命令,可使用命令
现在可以将这个应用程序的URL分享给你的小伙伴了~
改进Heroku部署
在这部分,我们将创建超级用户来改进部署。为了项目更安全,将设置为,防止他人看到错误信息。
1.在Heroku上创建超级用户
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进行修改
当
被设置时,必须在中指定一个主机。
查看错误页面之后,将
设置,方便进一步开发。(在settings.py中用于Heroku部署的部分中,确保DEBUG = False)。
3.将修改推送到Heroku
4.使用方法get_object_or_404()
现在当用户手动请求不存在的主题或条目,将导致500错误。这种情形应该视为404错误合适一点。因此我们使用函数。修改views.py
修改之后记得提交。
继续开发
首先,对本地项目做必要的修改,如果在修改过程中创建了新文件,使用命令将他们加入到Git仓库中。如果有修改要求迁移数据库,也需要执行这个命令,因为每个迁移都将生成新的迁移文件。
然后,使用命令将修改提交到仓库,在使用命令将修改推送到Heroku。如果你在本地迁移了数据库,也需要迁移在线数据库。为此,你可以执行一次性命令,也可以使用打开一个远程终端,在其中执行。然后访问在线项目,确认修改生效。
设置SECRET_KEY
Django根据settings.py中设置SECRET_KEY的值来实现大量的安全协议。
将项目从Heroku删除
1.在官网上删除。
2.执行
本学习笔记到尾声啦,如果遇到什么解决不了的问题可以在评论提出来哦。
即将再见!
2018.3.31
修复笔记文本过长导致的溢出。现已自动换行。
打开base.html并添加
打开topic.html并添加
done!
领取专属 10元无门槛券
私享最新 技术干货