对于Laravel框架的目录结构可以点击该链接查看更具体一些的目录结构。
我们在全栈开发使用数据库时,需要经过这些过程:
启动数据库服务器:这里是 Homestead 中的 mysql 服务器。这是给web服务器连接的。
启动web服务器:这里是 Homestead 中的 Nginx web服务器。这是给客户端请求连接的。
编写后端脚本:这里是在 Homestead 中的 php 环境中。
视察数据库动态:需要数据库可视化管理工具。
启动 Homestead 虚拟机后,会自动启动 web 服务器和数据库服务器。
整个流程大概是:客户端请求数据,会连接到后端的 web 服务器,web 服务器会让 php 对请求进行逻辑处理,若需要对数据库操作,php 则会再去连接到数据库服务器,对数据库进行 php 的 CURD 指令。
- Homestead.yaml 配置文件的简单介绍
该文件是虚拟机的配置文件,每次修改了该文档,都需要重启虚拟机。
features :安装可选功能。
如果未创建虚拟机时(注意是未创建),创建虚拟机时会识别 features 里为 true 的选项进行安装(安装到虚拟机中),为 flase 的则不会安装;
如果是重启虚拟机,创建时已经安装过的选项无论为true还是false都无作用,因为创建虚拟机时已经安装了其创建时为 true 的选项了。
这里我有一点不大清楚,homestead 默认是没有安装 mysql 的,并且我也没有在 features 中启用 mysql 的安装,但是 php 还是可以连接上虚拟机的 mysql ,有大佬知道的没?不过我们还是把 mysql8 设为 true 比较好。
另外一点,为什么是 mysql8 而不是 mysql , 这是因为 features 的键名是以 \homestead\scripts\features 文件中的文件名为名。
servieces:禁用与启用哪些服务器(这里是服务器)。
我们将 mysql 服务器启用了即可。这里是 mysql 而非 mysql8。
注意点:
注意缩进。
当配置中键没有值时,重启虚拟机会显示”未定义变量 each”等启动失败的信息,因此没有值时,就不要写键了!
修改该配置文件后要重启虚拟机才能生效。
正确的写法:
- .env 配置文件和 config 配置文件的区别
修改 .env 文件后, 需要php artisan config:cache清理缓存后才能生效
在早些版本的 Homestead 中只有 config ,而并没有 .env 。我们在多个开发或项目版本迭代的时候,所使用的环境(使用的电脑)可能不同,这意味着 host 和 port 可能不同,那么我们肯定得需要统一的 host 和 port,但这玩意儿显然并不能进行统一,但我们又不能乱修改项目的 这些配置 ,改来改去的话,别人对改项目的测试就会出问题,那这改咋整呢?
因此引出了 .env 这个配置文件,这个文件驾驭于 config 之上。以 mysql 的配置为例,运行项目时,该项目会优先从 .env 中的配置进行处理,若. env 未对 mysql 进行配置,才会从 config 的 database.php 获取配置。(可以删除 .env 进行测试)
简单理解就是,每个队友都有一个属于自己的唯一的 .env ,该 .env 不会经过任何其他人的手里,它只属于自己;而 config 仅有一个且不属于任何一个队友,它会不断的经过他人之手。
这样的话,A队友写了个项目,对 config 的 database.php 部分进行了配置,B队友拿过来该项目在自己的电脑上运行,只需配置自己 .env 文件即可,C队友拿过去,也只需对他自己的 .env 文件进行配置,这样子的话,就不会对项目的根电脑(A队友)的配置乱修改了。当然,A队友也可以配置自己的 .env 。
我们再查看 项目根目录下的 .gitignore 文件,该文件标记了该项目哪些文件无需上传到github上,其中就包含了 .env 配置文件。当队友 clone 该 github 项目时,并没有将 .env 拷贝过来,只把 config 拷贝了过来。
若 .env 不小心被删了,可以拷贝一份 .env.example 。
- 数据库可视化管理工具——Workbench
虽然 Homestead 虚拟机中提供了很多开发时需要的工具,比如 mysql,但是并没有 mysql 可视化管理的工具,我们总不能一直用命令行来查看数据库吧,因此我们需要自己在 windows 主机中下载一个可视化工具使用。我这里使用的是 mysql 官方出的 Workbench 。
- 数据库可视化管理工具连接到 mysql 服务器
连接服务器时得需要开启数据库服务器,并且得知道 mysql 服务器得 host 和 port。
开启数据库服务器很简单,就是启动 homestead 虚拟机。
修改数据库配置,以 .env 为例 挨个说明:
注意:这里修改的只是【连接服务器】的配置值,并不是将服务器本身的 ip 进行修改!
connection:选择的是什么数据库,比如 mysql、mongodb 等。
HOST与PORT : 127.0.0.1:3306 ——这是代码要写的、配置文件要写的
我们知道 项目代码 是独立于虚拟机的环境中运行的,项目中的所有配置都是在虚拟机的环境中读取的,包括 相互独立的 ip。 因此项目代码上访问的是虚拟机上的 ip,即代码要写成 host=127.0.0.1 和 port=3306 。
HOST与PORT :127.0.0.1:33060 或 192.168.10.10:3306 ——数据库管理工具(位于宿主机)要连接的
宿主机是无法访问虚拟机上的 ip 的,而 Homestead 给我们宿主机分配了一个对应ip :host=127.0.0.1 和 port=33060,也可以直接连接192.168.10.10:3306
database:默认将要连接的数据库的名称。这里我们还没有创建。
username=homestead,password=secret :
访问数据库服务器时需要获取用户权限,Homestead 给我们默认 username=homestead,password=secret。
知道了以上信息,我们就可以打开数据库可视化管理工具进行管理了。
同时我们可以直接写代码对数据库进行操作了,在代码中操作数据库无需再指定数据库的ip、端口、数据库名称等信息了,因为在 .env 或 config 都已经配置了默认值了。
- 数据库的备份:
我们知道整个项目环境都在虚拟机中运行的,包括数据库存在于虚拟机中。这一步的备份是为了防止虚拟机被 vagrant destroy 时,同时把数据库也给删除掉。
要开启自动数据库备份,需添加如下的行到你的 Homestead.yaml 文件:
backup: true
具体请看:数据库备份。
本作品采用《CC 协议》,转载必须注明作者和本文链接