欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

宁皓网 Drupal 8:配置管理 看完 video/4391

Drupal 8 上的配置管理。
介绍与准备
1)配置管理

我这里有两个 Drupal 8 网站, 一个表示网站的本地的开发环境,另一个表示网站的预备环境 .. 它们其实都是同一个复制品 ...

你可以在本地的开发环境上去开发网站 ... 比如创建一些内容类型,字段,视图 ...

然后你需要把开发的东西使用某种方法应用到其它的环境上,比如预备环境,或者网站的生产环境 .. 不要在这些环境上重复你在本地开发环境上的操作 ... Drupal 给我们提供了更好的方法,就是配置管理 ... 它是 Configuration Manager 这个模块提供的功能 ..

比如你在本地开发环境上为网站创建了一个视图,你想把这个视图应用到其它的环境上 ... 可以使用 Drupal 给我们提供的配置管理 ... 把视图的配置导出来 ... 然后再到其它环境上,把这个视图的配置导入进去 .. 这样你在其它的环境上就会拥有一个一样的视图了 ..

我们也可以把网站的配置使用代码的形式保存下来 .. 你可以把它们放到网站的版本控制里面 ..

2)准备

在我的桌面上,有两个目录 ... drupal 还有 drupal-stage , drupal 表示的本地的开发环境的网站 .. drupal-stage 模拟的是网站的预备环境 ..

我们先进入到 drupal 这个目录的下面 .. 这里我用的是 docker 运行的 drupal ,我定义了一个名字是 console 的服务 .. 可以进入到这个服务的里面 ..

drupal 网站的文件是在 drupal 这个目录的下面 ... 再进入到这个目录的下面 .. 在这里我们可以去执行一些 drush 命令 ...

新建一个终端的窗口 ... 再进入到 drupal-stage 这个目录的下面 ... 然后再进入到它的 console 服务的容器里 ...

这个提示符也是 console ... 为了区分一下 .. 我们可以去换一个其它的提示符 ..

echo "PS1='[stage console]# '" >> /root/.bashrc

退出来 ... 重新再进入到这个容器的里面 ...

再进入到 drupal 这个目录 ...

在这里我们也可以去使用一些 drush 命令修改预备环境上的网站 ...

配置管理
3)导出与导入配置

我们先在开发环境的这个网站上,创建一个新的内容类型 .. Structure .. Content Types .. 添加一个新的内容类型 .. 名字是 Product .. 保存一下 ..

在打开 Configuration .. 配置 .. 在 Development 区域里面,找到 Configuration synchronization ... 配置同步 ..

打开 Export ... 导出 .. Full archive 表示全部的配置 .. 你可以在这里导出网站的全部的配置 .. 点一下 Export ... 会给我们出成一个压缩文档 ..

在其它的网站上,你可以导入这个压缩文档 ...

或者我们也可以选择 Single item ... 某个具体的项目 ..

配置的类型,选择 Content Type .. 配置的名字是 Product ... 它是刚才我们创建的一个内容类型 ..

这个导出的配置代码是 Ymal 格式的 .. 复制一下它 ... 回到网站的预备环境 ... 打开 配置 ... 配置同步 ... 再打开 Import 选项卡 .. 在这里你可以导入配置 .. 可以导入全部的配置 .. 或者单独的某个项目 .. 类型选择 Content type ..

把刚才复制的代码粘贴到这里 ... 再点一下 Import .. Confirm ..

打开 结构 .. 内容类型 .. 在这里你会发现 Product 这个内容类型 ... 它是刚才我们使用导入的配置生成的一个内容类型 ..

4)同步配置

打开在本地开发环境上的 结构 .. 内容类型 .. 点一下 Product 后面的管理字段 .. 这里有一个 Body 字段 .. 再回到预备环境 .. 结构 .. 内容类型 .. 管理一下 Product 的字段 .. 这里并没有 Body 字段 ..

之前我们导入了 Product 这个内容类型的配置,但是它里面包括的字段我们还没有导入 ... 这里我们再试一下配置的同步 .. 先回到开发环境 .. 配置 .. 配置同步 .. Export .. 在 Full archive 这里,点一下 Export ... 导出网站的全部的配置 ..

这样会给我们生成一个压缩包 ..

再回到预备环境 .. 配置 .. 配置同步 .. Import ... 在 Full archive 这里,选择一下刚才从本地开发环境那里导出来的那个配置的压缩包 ... Upload ... 上传 ..

Drupal 会把配置文件的压缩包解压 .. 然后把里面的文件放到一个指定的目录的下面 .. 这个目录可以 Drupal 的配置文件里去设置一下 ..

在 Synchronize 这里,会告诉你导入的配置跟当前网站不同的地方一共有多少个 ..

仔细的看一下这些名字 .. 比如这里会有一个应用在 Product 这个内容类型上的 Body 字段 ...

另外还有跟 product 这个内容类型相关的一些东西 .. 比如 表单显示 ... 视图显示 ...

点一下 View differences 可以查看一下到底是哪里不一样 ..

确定以后,点一下 Import all ,导入全部 ..

完成以后,再回到 Product 这个内容类型的管理字段的界面 ... 刷新一下 ... 在这里会出现 Body 这个字段 .. 另外 .. 表单显示 ... 还有视图显示这里的所有的配置也应该跟本地开发环境是一致的 ...

配置文件的同步目录是在 sites/ default ... settings.php 里面设置的 ... 就是这个 config_directories ... 默认它的位置是在 sites/default/files/config ... 后面还有一串随机的字符这个目录 ..

找到这个目录 ... 在 sync 这个目录的下面 .. 存储的就是配置的文件 ... 这些文件就是刚才我们通过配置管理的用户界面导入进来的 ...

5)命令行下的配置管理

先看一下 drush 提供的跟配置管理相关的一些命令 ...

drush | grep config

在这个 Config commands 下面的命令就是跟配置管理相关的 .. config-delete 删除配置,config-edit ,编辑配置 .. 先查看一下配置的列表 ..

drush config-list ..

会列出所有的配置 .. 得到配置,可以用一下 config-get ... 比如我要得到这个 system.site ,也就是网站相关的配置 ...

drush config-get system.site

回到预备环境的命令行的界面上 ... 执行一下同样的命令 ... 你可以比较一下这两个在不同环境的网站的 uuid ... 是一样的 ... 也就是这两个网站其实是同一个复制品 ... 这样这两个网站之间才能使用配置的同步 ..

我们可以导出网站的全部的配置 ..

drush config-export

再查看一下配置管理文件所在的目录 ...

ls sites/default/files/config*/sync

这里你会发现一些配置文件 ... 现在我们可以把这个目录的东西同步到在其它环境上的网站上 ... 这样我们就可以导入这些在本地开发环境上导出的这些配置了 ..

版本控制流程
6)配置管理的版本控制流程:配置仓库

我在 github 上面创建了一个空白的远程仓库 ... 就是这个 drupal-config-sync .. 回到终端 ... 新建一个标签 ... 我想在本地上使用 git ... 因为我的本地电脑已经配置好了,有权限可以把项目 push 到 github 的 drupal-config-sync 这个仓库里 ..

当前我的位置是在桌面上的 drupal 这个目录的里面,它里面放的是本地开发环境的网站 .. 先进入到 Drupal 的配置同步目录的里面 ... 查看一下 .. 这里会有我们之前用 drush 导出的一些配置文件 .

再回到 console 这个容器里 .. 我想去修改几个权限 .. 把网站的配置文件同步目录里面的配置文件的拥有者,修改成 www-data ... 这是 php-fpm 使用的用户 ...

然后再用 chmod .. 设置一下群组 id .. 这样在这个同步目录下面新创建的文件的群组就会是 www-data 这个群组 .. 如果你没有遇到权限问题可以忽略掉这两步 ..

再打开这个新的终端标签 ... 初始化一个仓库 ... 添加所有的东西 ... 再去提交一下 ..

然后我们再把仓库 push 到这个空白的远程仓库上 ...

先去添加一下这个远程仓库 ... 名字是 origin .. 位置是 git@github.com:ninghao/drupal-config-sync.git

然后去把仓库 push 到这个远程仓库的里面 ... push 到 origin ,要 push 的分支是 master

复制一下这个添加远程仓库的命令,一会儿我们还会用到它 ... 回到这个远程仓库的页面 .. 刷新一下 .. 现在这里就有 push 上来的代码了 ... 这里就是一些 drupal 的配置 ..

回到这个预备环境的终端容器 ... 新建一个标签 ... 进入到预备环境的配置同步的那个目录 .. 查看一下它里面的东西 ..

这里会有一些配置文件 ... 它们是我们之前使用配置管理界面手工导入的那些 ...

先删除掉这些配置文件 .. 另外这里还有一个 .htaccess ... 我们也把它删除掉 ..

然后初始化一个仓库 ... 给这个仓库添加一个远程仓库 ... 这个远程仓库就是刚才我们把本地开发环境的配置 push 上去的那个远程仓库 ...

有了它以后,我们可以拉取远程仓库的代码 ... 拉取的是 origin .. master

完成以后,再查看一下这个目录 .. 现在这里就会有一些配置文件了 ... 它们是我们在本地开发环境上使用 drush 命令导出来的 ..

7)配置管理的版本控制:应用修改

下面我们可以继续在本地开发环境上去修改网站 .. 比如我要改一下网站的名字 ... 打开 Basic site settings ..

网站的名字现在是 ninghao,把它改成 ninghao.net ... 保存一下 ..

回到本地开发环境的 console ... 查看一下 system.site 这个配置 ... 你会看到,现在 name 仍然是 ninghao ..

重建一下缓存 ...

再查看一下 .. 现在网站的名字就是 ninghao.net 了 ...

现在我要把这个修改应用到在其它环境的网站上 ...

我们可以先在本地开发环境上导出网站的配置 ... drush config-export

会提示有一个配置需要更新 ... 确定,可以输入 y .. 再按一下回车 ..

完成以后,回到它的仓库 ... git status 查看一下状态 ... 有一个文件被修改了 ... 就是 system.site.yml ...

查看一下区别 ... 这里就是把之前的 ninghao 换成了现在的 ninghao.net ... 也就是我们对网站的修改已经保存到了对应的配置文件里了 ...

添加这个修改 ... 再去提交一下 ... 设置一下提交的信息 ...

然后把做的修改 push 到远程仓库上 ...

再回到预备环境的仓库这里 ... 在这里我们可以拉取一下推送给远程仓库的提交 ... 回到网站的 console ..

先用 drush 查看一下预备网站的 system.site 这个配置 ... 这里它的 name 是 ninghao ...

然后我们可以再用 drush config-import ... 把新的配置同步到 drupal 网站 ... 提示 system.site 这个配置有更新 ... 输入 y ... 按一下回车 ..

再打开预备环境的网站 ... 配置 ... 基本配置 ... 名字仍然是 ninghao ... 可能是缓存的事儿 ... 回到配置界面 .. 打开性能 ... 然后清空一下所有的缓存 ..

再回到基本配置 ....

你会发现,我们在本地开发环境上对网站的修改,现在就已经应用到了这个预备环境的网站上了 ...


来自  https://ninghao.net/course/4386#toc

普通分类: