Drupal

升级到 Drupal 10

Tony 提交于 2023-01-30 22:03, 星期一

咸鱼佬的启发,提前把升级 Drupal 10 放到这个月完成。

从 9 升级到 10 很容易,先把 前端主题 和 admin 主题切换到 Olivero 和 Claro,按老方法先下载新版本代码覆盖旧代码,打开 update.php 看看有没有绊脚石,不兼容的插件/主题先尝试升级到 dev 版本,还是不行的话引入

core_version_requirement: ">=8"

再刷新 update.php 看看有没有减少错误提示。

update.php 可以成功完成后清除一下 memcached 缓存,启用 CKEditor 5 扩展,在 文本格式和编辑器 里把 CKEditor 4 切换到 5,卸载 CKEditor 4,顺便把一些 decrepat 的并且不在使用中的插件从 /core/modules 文件夹移走。

切换回心仪的主题。

完成。

文章标签

升级到 Drupal 9

Tony 提交于 2021-03-14 22:48, 星期日

升级到 Drupal 9

Drupal 的🚂小火车已经来到 了 9 号车站,赶紧上车吧!

花了很多时间把 Drupal 9 升级搞懂了,目前网站从 8.9.11 升级到了 9.1.5,以下是大致的升级流程。

  1. ❗ 备份好 Drupal 8 的 Web 目录和 数据库
  2. 确保正在使用的 Drupal 8 模块都是有 Drupal 9 版本或者支持 Drupal 9 的,有工具但我用第9步里的方法 😉
  3. 寻找同类型的支持 Drupal 9 的模块来取代旧的模块,例如 TagClouds 可以取代 Tagadelic
  4. 对于不能割舍又没有对应 Drupal 9 的模块加入 core_version_requirement 标识,还有可能要改一些代码
  5. 在 settings.php 里加入 $settings['config_sync_directory'] = '/your-path-of-drupal/sync'; 并建立 sync 文件夹
  6. 把 Drupal 8 根目录下的 core 和 vendor 目录删除,把 sites 目录下的 simpletest 目录删除
  7. 下载 Drupal 9
  8. Drupal 9 解压后,把所有文件覆盖到原 Drupal 8 目录
  9. 浏览器打开 http://drupal/update.php,如果有错误提示回到第2步 debug 😨
  10. 如无错误表示升级完成
  11. 删除缓存,开门营业 🎉
  12. 如果你是老实人一个版本一个版本升级上来的还会遇到🕳 不能添加新内容的问题,解决方法在10楼和37楼(Drupal不流行不是没有原因的)

通过这次升级我还摸底了一下网站经过长期使用后所产生的变化,虽然有一些目前不能修复的地方,但都有绕过去的方法,总的来说对网站的整体结构是更加有把握的。

文章标签

如何利用又拍云 CDN 给 Drupal 加速

Tony 提交于 2020-03-24 19:21, 星期二

最近备案了一个仿蓝汛 CDN 的域名,当然是为了享受国内的 CDN 加速服务,例如又拍,七牛,各种 OSS。但我对七牛没什么感觉(单纯是名字不讨喜),各种 OSS 感觉又太重了,不值得为这个功能去记另外一套体系的东西,于是选择又拍云作为 CDN。

目前你访问 TONYHEAD 通利堂 的时候,只会从 tonyhead.com 上请求 index.php 和一个负责生成二维码的 qr.php ,其他的静态资源例如 .css .js .jpg 都会从又拍云 CDN cdn.tonyhead.com 处加载。这些静态资源其实都储存在 tonyhead.com,只是通过又拍云这个高速的中间人实现最优的内容投递。

访问路径大概是这样:访客  <->  ⚡又拍云 CDN⚡ <-> 源站 tonyhead.com

先在又拍云创建一个 CDN 空间,在 CDN 空间的设置里面:

  • 回源管理 需要添加源站地址如 www.tonyhead.com,端口 80,勾上协议跟随,又拍云会自动寻找位于 443 端口上的 HTTPS 端口。
  • 回源 Host 需要添加源站 www.tonyhead.com 以匹配 Drupal settings.php 里 trusted_host_patterns 的设置。
  • 源站资源迁移 建议勾上并配置一个又拍云云储存空间,当静态资源被第一次访问的时候,静态内容就会保存在这个空间里,访客会直接从又拍云 CDN 拉取这个文件,而不用每次都回源到 tonyhead.com 上。
  • 缓存配置 设置为全局缓存7天。
  • 性能优化成本控制图像处理 我没修改,用的都是默认。
  • HTTPS 可以申请免费的 Let's Encrypt 证书。

边缘规则 很重要要单独拿出来说说,我配置了一条规则,用来防止搜索引擎重复收录源站和又拍云 CDN 镜像站的 HTML 页面(想想看,作为网站主的你发现 www.tonyhead.com 和 cdn.tonyhead.com 的文章页居然是一样的时候是多尴尬的事情)。网上很多教程都是❌错的,或者效果不好(robots.txt 只能蒙搜索引擎,但访客依然有机会把镜像站的 URL 加入收藏夹),请用我这里的设置,原理就是告诉又拍云 CDN,当访客访问到非静态内容后缀的时候,跳转回源站。

简单来说,这个规则实现了这个功能:

文章标签

如何使用 Drupal 的视图功能为网站增加内容

Tony 提交于 2020-03-23 18:35, 星期一

MovableType 从 7.0 版本开始增加了 「Content Type 内容类型」 这一概念,殊不知 Drupal 早于十二年前已经实现。

视图是 Drupal 的另一个核心功能,通过控制可以高度自定义字段的位置来生成内容页或区块,Drupal 比我见到过的任何 CMS 都更加灵活,下面我介绍一下如何给网站添加一个增加情趣的类似豆瓣的「书单」功能,0代码,全部功能通过点点点鼠标即可实现。

我的网站我做主!“脏”数据“脏”结构我乐意!😎

先来看看成果,这是我的书单页 —— 📚 Tony 书单,有个小下拉选项,可以筛选 想读/在读/读过 状态。而每个页面的左边有一个 “在读的书”区块,“筛选了按 最后发表 排序的 1 个状态为 在读 的来自内容类型为 书单 的结果”。

具体操作方法,先建立一个名为 书单 的内容类型,发布选项里面的 发布到首页 可以去掉,因为我不想书单条目进入博客的主信息流里,其他栏位随意。

文章标签

网站丢失 emoji 表情的解决方法 📓

Tony 提交于 2019-03-08 01:08, 星期五

上次 升级到 Drupal 8 时顺便升级了数据库编码到 utf8mb4,但偶然发现(大概就是动过数据库备份/还原后)emoji 表情都变成了问号 ? 。

观察了一阵子,发现并不是所有的 emoji 都会丢失,在 Unicode 5.2 版本以下的 emoji 是不会丢失的,为此我还弄了一个页面来提醒自己哪个版本以下的 emoji 是可以使用的,在插入文章里会先看一下这个 emoji 的版本,为了方便复用还把网站常用的 emoji 保存到 Evernote 里,但终于也在一次 Evernote 升级时变成了 ❓ ……

解决方法,在 my.cnf 里加入以下设置:

 

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

重启 MySQL/MariaDB。

修复表的记录

mysqlcheck -u root -p --auto-repair --optimize --all-databases

再进行数据库备份/还原的操作,清除缓存,发现 emoji 终于没有变砖 🧱 了(这个砖头的 emoji 在 Unicode 11 里,老系统不一定看得见),问题解决。

文章标签

开源还是闭源?记使用Drupal时踩过的坑。

Tony 提交于 2017-08-18 19:19, 星期五

开源还是闭源?记使用Drupal时踩过的坑。

Drupal是一款流行的开源CMS,有着清晰的版本发行时间,同时也以庞大的模块库闻名,不懂代码的用户都可以通过1个或者多个模块来共同实现一个需要大量coding才能实现的功能。

在使用Drupal的过程里,我获得了大量积极的感受,让我感受到这个CMS的强大和开源社区的活力,然而回头看一下也为自己挖了很多坑……例如某个模块很可能因为没有跟上主程序小版本的更新而导致出BUG,甚至是没有动力为7到8这种主版本的升级提供相对应的版本,导致Drupal 8的用户只能放弃这个插件,或者停留在Drupal 7上。

记录一下从Drupal 7升级到Drupal 8,从Drupal 8.0升级到Drupal 8.3一路下来踩过的坑:

文章标签

Drupal 8 后台加载卡顿的解决方法

Tony 提交于 2017-03-16 13:30, 星期四

很多人觉得Drupal 8在登录状态下后台加载有卡顿的感觉,表现为上方的 admin bar 未完整加载时页面的链接都不能触发,鼠标指针也不能变成 mouseover 的状态。

有人说是 Admin Toolbar 模块的锅,但这么好的插件实在很难令人割舍。

经过检查,发现元凶是 Drupal 8 默认的 Quick Edit 模块解析加载耗时,这个模块对于生产环境来说基本是可有可无的,所以我的建议是直接把这个模块禁用。

但如果你十分需要快速编辑这个功能,那么我的建议是把js放到页面的底部来执行,具体可以安装 AdvAgg 模块,打开 AdvAgg Modifier 模块,把 js 移到页面底部

这样一来,Drupal 8 的操作就顺畅多了,又回到了 Drupal 7 的速度了。

2017-10-13更新,此"Bug"已在 Drupal 8.4.0 中解决,猴犀利! 🤔

文章标签

升级到 Drupal 8

Tony 提交于 2017-01-29 16:46, 星期日

先按照这几个步骤把 Nginx 的坑填好,Drupal 官方到现在都没有一个开箱即用的 Drupal 8 for nginx.conf ,连最基本的 clean url 和下载远程文件都得按不同的文章这里修修那里补补才能用上。

再按照这几个步骤把 Memcached 的坑填好,有大神说 Drupal 8 使用 Memcached/Redis 没有太多增益,嗨 ,先搭起来,目前没看到有类似X Autoload之类可以很明显增强性能的模块,SupercachePanels 有冲突,先放一边等更新再说。

最后按照官网的升级步骤做就可以了,再进行 Drupal 著名的点点点配置工作,我点了3天才把待完成列表点完,还有不少模块没有 Drupal 8 的版本而要想另外的方法实现或只能等待,1年前接触 Drupal 7,1年后更新 Drupal 8 ,升级到 Drupal 8 的好处都有啥?对个人用户来说还有 BigPipe数据库转换后还能用上 emoji ,总之,好玩! 😍

相关链接

文章标签

Drupal7在不同环境下的效能

Tony 提交于 2016-06-13 11:11, 星期一

在升级VPS环境时对比了一下php5,php7和Memcached对Drupal7的效能的影响。

亮点

  • Drupal7对高版本的php有优化,在启用Memcached的情况下,php7比php5减少了15%的查询次数。
  • 启用Memcached就能达到加速200%的效果,实施简单并且非常划算。
  • php7线程占用内存变少,意味着能同时承受更多的访问量。

回到顶部

有图有真相(数值越小越好)

drupal+php7+memcached

回到顶部

测试数据

drupal+php7+memcached

回到顶部

总结

推荐使用php7+apc+apcu+memcached的环境来跑Drupal7,目前还没看到有不兼容的问题出现。

回到顶部

文章标签

AdvAgg + CDN 为 Drupal 加速

Tony 提交于 2016-05-07 13:08, 星期六

Advanced CSS/JS Aggregation模块能把页面上的CSS和JS数量合并/压缩到指定数量,例如1,来减少HTTP请求数。CDN模块则能把指定格式/指定路径的静态文件改写到指定的域名上(例如改写到一个或多个支持CDN的空间)来进行加速。

效果图,TONYHEAD 通利堂首页的CSS和JS请求数减为1,misc目录下的文件(可以在CDN模块里通过黑白名单设置哪些路径)全部走又拍云上的CDN空间(cdn. tonyhead.com)。

AdvAgg + CDN 为Drupal加速

2016-06-11更新

在另外一个Drupal站实施AdvAgg加速的效果,三个结果分别为:

文章标签