关于“Python”的核心知识点整理大全63

目录

[20.2.11 使用 Git 跟踪项目文件](#20.2.11 使用 Git 跟踪项目文件)

[1. 安装Git](#1. 安装Git)

[2. 配置Git](#2. 配置Git)

[3. 忽略文件](#3. 忽略文件)

.gitignore

注意

[4. 提交项目](#4. 提交项目)

[20.2.12 推送到 Heroku](#20.2.12 推送到 Heroku)

注意

[20.2.13 在 Heroku 上建立数据库](#20.2.13 在 Heroku 上建立数据库)

[20.2.14 改进 Heroku 部署](#20.2.14 改进 Heroku 部署)

[1. 在Heroku上创建超级用户](#1. 在Heroku上创建超级用户)

注意

注意


20.2.11 使用 Git 跟踪项目文件

如果你阅读完了第17章,就知道Git是一个版本控制程序,让你能够在每次成功实现新功能 后都拍摄项目代码的快照。无论出现什么问题(如实现新功能时不小心引入了bug),你都可以轻 松地恢复到最后一个可行的快照。每个快照都被称为提交。 使用Git意味着你在试着实现新功能时无需担心破坏项目。将项目部署到服务器时,需要确 保部署的是可行版本。如果你想更详细地了解Git和版本控制,请参阅附录D。

1. 安装Git

Heroku Toolbelt包含Git,因此它应该已经安装到了你的系统中。然而,在安装Heroku Toolbelt之 前打开的终端窗口中无法访问Git,因此请打开一个新的终端窗口,并在其中执行命令git --version:

python 复制代码
(ll_env)learning_log$ git --version
git version 2.5.0 

如果由于某种原因出现了错误消息,请参阅附录D中的Git安装说明。

2. 配置Git

Git跟踪谁修改了项目,即便项目由一个人开发时亦如此。为进行跟踪,Git需要知道你的用 户名和email。因此,你必须提供用户名,但对于练习项目,可随便伪造一个email:

python 复制代码
(ll_env)learning_log$ git config --global user.name "ehmatthes"
(ll_env)learning_log$ git config --global user.email "eric@example.com"

如果你忘记了这一步,当你首次提交时,Git将提示你提供这些信息。

3. 忽略文件

我们无需让Git跟踪项目中的每个文件,因此将让Git忽略一些文件。为此,在manage.py所在 的文件夹中创建一个名为.gitignore的文件。注意,这个文件名以句点打头,且不包含扩展名。在 这个文件中输入如下内容:

.gitignore
python 复制代码
ll_env/
__pycache__/
*.sqlite3

我们让Git忽略目录ll_env,因为我们随时都可以自动重新创建它。我们还指定不跟踪目录 pycache,这个目录包含Django运行.py文件时自动创建的.pyc文件。我们没有跟踪对本地数 据库的修改,因为这是一个糟糕的做法:如果你在服务器上使用的是SQLite,当你将项目推送到服务器时,可能会不小心用本地测试数据库覆盖在线数据库。


注意

如果你使用的是Python 2.7,请将_pycache_替换为*.pyc,因为Python 2.7不会创建目录 pycache


4. 提交项目

我们需要为"学习笔记"初始化一个Git仓库,将所有必要的文件都加入到这个仓库中,并 提交项目的初始状态,如下所示:

python 复制代码
1 (ll_env)learning_log$ git init
Initialized empty Git repository in /home/ehmatthes/pcc/learning_log/.git/
2 (ll_env)learning_log$ git add .
3 (ll_env)learning_log$ git commit -am "Ready for deployment to heroku."
[master (root-commit) dbc1d99] Ready for deployment to heroku.
 43 files changed, 746 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Procfile
 --snip--
 create mode 100644 users/views.py
4 (ll_env)learning_log$ git status
# On branch master
nothing to commit, working directory clean
(ll_env)learning_log$

在1处,我们执行命令git init,在"学习笔记"所在的目录中初始化一个空仓库。在2处, 我们执行了命令git add .(千万别忘了这个句点),它将未被忽略的文件都添加到这个仓库中。 在3处,我们执行了命令git commit -am commit message,其中的标志-a让Git在这个提交中包含 所有修改过的文件,而标志-m让Git记录一条日志消息。

在4处,我们执行了命令git status,输出表明当前位于分支master中,而工作目录是干净 (clean)的。每当你要将项目推送到Heroku时,都希望看到这样的状态。

20.2.12 推送到 Heroku

我们终于为将项目推送到Heroku做好了准备。在活动的虚拟环境中,执行下面的命令:

python 复制代码
1 (ll_env)learning_log$ heroku login
Enter your Heroku credentials.
Email: eric@example.com
Password (typing will be hidden):
Logged in as eric@example.com
2 (ll_env)learning_log$ heroku create
Creating afternoon-meadow-2775... done, stack is cedar-14
https://afternoon-meadow-2775.herokuapp.com/ |
 https://git.heroku.com/afternoon-meadow-2775.git
Git remote heroku added
3 (ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Launching... done, v6
4 remote: https://afternoon-meadow-2775.herokuapp.com/ deployed to Heroku
remote: Verifying deploy.... done.
To https://git.heroku.com/afternoon-meadow-2775.git
 bdb2a35..62d711d master -> master
(ll_env)learning_log$

首先,在终端会话中,使用你在https://heroku.com/创建账户时指定的用户名和密码来登录 Heroku(见1)。然后,让Heroku创建一个空项目(见2)。Heroku生成的项目名由两个单词和一 个数字组成,你以后可修改这个名称。接下来,我们执行命令git push heroku master(见3), 它让Git将项目的分支master推送到Heroku刚才创建的仓库中;Heroku随后使用这些文件在其服务 器上创建项目。4处列出了用于访问这个项目的URL。

执行这些命令后,项目就部署好了,但还未对其做全面的配置。为核实正确地启动了服务器 进程,请执行命令heroku ps:

python 复制代码
(ll_env)learning_log$ heroku ps
1 Free quota left: 17h 40m
2 === web (Free): `gunicorn learning_log.wsgi __log-file -`
web.1: up 2015/08/14 07:08:51 (~ 10m ago)
(ll_env)learning_log$

输出指出了在接下来的24小时内,项目还可在多长时间内处于活动状态(见1)。编写本书 时,Heroku允许免费部署在24小时内最多可以有18小时处于活动状态。项目的活动时间超过这个 限制后,将显示标准的服务器错误页面,稍后我们将设置这个错误页面。在2处,我们发现启动 了Procfile指定的进程。

现在,我们可以使用命令heroku open在浏览器中打开这个应用程序了:

python 复制代码
(ll_env)learning_log$ heroku open
Opening afternoon-meadow-2775... done

你也可以启动浏览器并输入Heroku告诉你的URL,但上述命令可实现同样的结果。你将看到 "学习笔记"的主页,其样式设置正确无误,但你还无法使用这个应用程序,因为我们还没有建 立数据库。


注意

部署到Heroku的流程会不断变化。如果你遇到无法解决的问题,请通过查看Heroku文档 来获取帮助。为此,可访问https://devcenter.heroku.com/,单击Python,再单击链接Getting Started with Django。如果你看不懂这些文档,请参阅附录C提供的建议。


20.2.13 在 Heroku 上建立数据库

为建立在线数据库,我们需要再次执行命令migrate,并应用在开发期间生成的所有迁移。要对Heroku项目执行Django和Python命令,可使用命令heroku run。下面演示了如何对Heroku部 署执行命令migrate:

python 复制代码
1 (ll_env)learning_log$ heroku run python manage.py migrate
2 Running `python manage.py migrate` on afternoon-meadow-2775... up, run.2435
 --snip--
3 Running migrations:
 --snip--
 Applying learning_logs.0001_initial... OK
 Applying learning_logs.0002_entry... OK
 Applying learning_logs.0003_topic_user... OK
 Applying sessions.0001_initial... OK
(ll_env)learning_log$ 

我们首先执行了命令heroku run python manage.py migrate(见1);Heroku随后创建一个终 端会话来执行命令migrate(见2)。在3处,Django应用默认迁移以及我们在开发"学习笔记" 期间生成的迁移。 现在如果你访问这个部署的应用程序,将能够像在本地系统上一样使用它。然而,你看不到 你在本地部署中输入的任何数据,因为它们没有复制到在线服务器。一种通常的做法是不将本地 数据复制到在线部署中,因为本地数据通常是测试数据。 你可以分享"学习笔记"的Heroku URL,让任何人都可以使用它。在下一节,我们将再完 成几个任务,以结束部署过程并让你能够继续开发"学习笔记"。

20.2.14 改进 Heroku 部署

在本节中,我们将通过创建超级用户来改进部署,就像在本地一样。我们还将让这个项目更 安全:将DEBUG设置为False,让用户在错误消息中看不到额外的信息,以防他们使用这些信息来 攻击服务器。

1. 在Heroku上创建超级用户

我们知道可使用命令heroku run来执行一次性命令,但也可这样执行命令:在连接到了Heroku 服务器的情况下,使用命令heroku run bash来打开Bash终端会话。Bash是众多Linux终端运行的 语言。我们将使用Bash终端会话来创建超级用户,以便能够访问在线应用程序的管理网站:

python 复制代码
(ll_env)learning_log$ heroku run bash
Running `bash` on afternoon-meadow-2775... up, run.6244
1 ~ $ ls
learning_log learning_logs manage.py Procfile requirements.txt runtime.txt users
staticfiles
2 ~ $ python manage.py createsuperuser
Username (leave blank to use 'u41907'): ll_admin
Email address:
Password:
Password (again):
Superuser created successfully.
3 ~ $ exit 
exit
(ll_env)learning_log$

在1处,我们执行命令ls,以查看服务器上有哪些文件和目录;服务器包含的文件和目录应 该与本地系统相同。你可以像遍历其他文件系统一样遍历这个文件系统。


注意

即便你使用的是Windows系统,也应使用这里列出的命令(如ls而不是dir),因为你正通 过远程连接运行一个Linux终端。


在2处,我们执行了创建超级用户的命令,它像第18章在本地系统创建超级用户一样提示你 输入相关的信息。在这个终端会话中创建超级用户后,使用命令exit返回到本地系统的终端会话 (见3)。

现在,你可以在在线应用程序的URL末尾添加/admin/来登录管理网站了。对我而言,这个 URL为https://afternoon-meadow-2775.herokuapp.com/admin/。 如果已经有其他人开始使用这个项目,别忘了你可以访问他们的所有数据!千万别不把这当 回事,否则用户就不会再将其数据托付给你了。

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

你可能希望URL更友好,比https://afternoon-meadow-2775.herokuapp.com/更好记。为此,可 只需使用一个命令来重命名应用程序:

python 复制代码
(ll_env)learning_log$ heroku apps:rename learning-log
Renaming afternoon-meadow-2775 to learning-log... done
https://learning-log.herokuapp.com/ | https://git.heroku.com/learning-log.git
Git remote heroku updated
(ll_env)learning_log$

给应用程序命名时,可使用字母、数字和连字符;你想怎么命名应用程序都可以,只要指定 的名称未被别人使用就行。现在,项目的URL变成了https://learning-log.herokuapp.com/;使用以 前的URL再也无法访问它,命令apps:rename 将整个项目都移到了新的URL处。


注意

你使用Heroku提供的免费服务来部署项目时,如果项目在指定的时间内未收到请求或过 于活跃,Heroku将让项目进入休眠状态。用户初次访问处于休眠状态的网站时,加载时 间将更长,但对于后续请求,服务器的响应速度将更快。这就是Heroku能够提供免费部 署的原因所在。


关于"Python"的核心知识点整理大全62-CSDN博客

关于"Python"的核心知识点整理大全37-CSDN博客

关于"Python"的核心知识点整理大全25-CSDN博客

关于"Python"的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新

相关推荐
Wanderer X1 分钟前
【代码】hot100
python
铅笔小新z2 分钟前
【C语言】数组详解
c语言·开发语言
CC城子4 分钟前
EtherCAT研究之物理层PHY(一)
linux·运维·数据库
摇滚侠5 分钟前
Java 饿汉式 单例模式
java·开发语言·单例模式
hahdbk5 分钟前
口碑好的医疗设备外观设计选哪家
大数据·人工智能·python
yyuuuzz6 分钟前
国际云服务器的技术特点与使用经验
运维·服务器·网络·数据库·云计算·aws
lbb 小魔仙8 分钟前
工业数据困局的破局者:DolphinDB 如何让海量时序数据真正“跑“出价值
开发语言·人工智能·python·langchain
TDengine (老段)8 分钟前
TDengine VNode 生命周期 — 从创建到销毁的完整旅程
大数据·数据库·重构·系统架构·负载均衡·tdengine·涛思数据
2301_783848659 分钟前
JavaScript中利用Symbol实现单例模式的属性锁定
jvm·数据库·python
枫叶丹410 分钟前
【HarmonyOS 6.0】Device Security Kit安全审计阻断功能深度解析
开发语言·安全·华为·harmonyos