跳转到主要内容

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

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

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

目前你访问 TONYHEAD 通利堂 的时候,只会从 tonyhead.com 上请求 index.php 和一个负责生成二维码的 qr.php ,其他的静态资源例如 .css .js .jpg 都会从又拍云 CDN tonyhead.chinacachecdn.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,当访客访问到非静态内容后缀的时候,跳转回源站。

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

  1. 当访客访问 cdn.tonyhead.com/1.jpg 的时候,回源 www.tonyhead.com/1.jpg,并用 cdn.tonyhead.com/1.jpg 推送给访客(加速生效)。
  2. 当访客访问 cdn.tonyhead.com/about.html 的时候,触发边缘规则,浏览器收到 301 重定向跳转回 www.tonyhead.com/about.html(同时防止了镜像收录)。

下图 正则不匹配(不区分大小写) 后的那个 匹配值 截图不完整,贴到这里,可以根据自己的情况增加或删除后缀。   

.(jpeg|jpg|gif|png|css|js|svg|ico|zip|rar|7z|woff2)(.*)$

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

又拍云 CDN 那边就设置好了,接着配置 Drupal ,先下载一个 CDN 插件,这个插件会自动把页面元素的 URL 替换成指定的 CDN 域名 URL。再启用插件,在后台进行配置,把需要加速的静态文件后缀加上,又拍云 CDN 的域名加上,保存即可。

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

清空 Drupal 缓存,打开 F12 看看效果吧。🤓

文章标签

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

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

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

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

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

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

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

Drupal 视图

在书单的内容类型下,建立若干个字段,例如 ISBN图书封面阅读状态豆瓣链接,悉随君便,我们稍后要用到这些字段来输出内容。

调整一下字段的位置,方便按自己的逻辑顺序输入内容,弄好后可以尝试创建一本「书」,编辑时后台大概长这样。(封面 那里实现得很脏,不过我乐意,0代码的代价🤣)

Drupal 视图

如法炮制创建了若干本书后,名为「书单」的内容类型就有「内容」了,这时我们再去视图里想办法把这些内容展示出来。

创建一个视图,显示 内容 类型为刚刚创建的 书单 ,生成一个页面 和 生成一个区块 都勾上,因为我们要生成一个展示所有书的页面和一个 在读的书 的小挂件,页面路径,是否生成 RSS 等选项可以稍后修改。

Drupal 视图

下一步,进入视图编辑状态,可以对着下图抄一遍,左上角显示的是目前在编辑 Page 页面 。

Drupal 视图

区块(小挂件)的设置,左上角显示的是目前在编辑 Block 区块。

Drupal 视图

注意的地方是编辑 Page 页面 的话,过滤条件里的设置也会影响到 Block 区块,所以在设置过滤条件的时候,选 (覆盖),就不会“传染”到邻居了。

Drupal 视图

操作都是很直观的,重复上面的话,“筛选了按 最后发表 排序的 1 个状态为 在读 的来自内容类型为 书单 的结果”,前几次用会感觉到迷糊,但成功设置过一次之后,就会觉得打开了新的大门一样。

回头再细细挖掘各个栏位,例如年底时可以通过过滤发布时间为 2020 年的读过的书,生成一个自己的 2020 年书单,没有做不到,只有想不到。😤

嗯就这样,这篇文章的目的就是督促自己看书和安利 Drupal ,遇到什么问题的可以留言共同研究。🤓

文章标签

宝塔面板安装 MovableType

Tony 提交于 周五, 2020-03-06 - 13:00

使用宝塔面板+ PSGI 的组合来运行 MovableType,默认用 Nginx 的组合进行安装,在软件商店里添加 Memcached 来提高性能。

宝塔面板安装 Movabletype

aaPanel应该也能用同样的方法操作。

安装 MovableType 需要的 perl 组件。

yum install -y perl-Cache-Memcached perl-Archive-Zip perl-XML* perl-YAML-Syck perl-Crypt-DSA perl-GD perl-Archive-Tar perl-Cache-* perl-Crypt-SSLeay perl-IPC-Run perl-DBI perl-DBD-mysql --skip-broken

安装 PSGI 环境。

这里需时较长,网络问题也会经常失败,重复执行直到提示都安装过了就行了。

yum install perl-ExtUtils* perl-Module-Build expat-devel gcc -y
curl -L http://cpanmin.us/ | perl - App::cpanminus

cpanm Plack
cpanm Task::Plack
cpanm XMLRPC::Transport::HTTP::Plack
cpanm Cache::Memcached
cpanm Cache::File

修改 Nginx 配置,mt 目录下的文件都交给 PSGI 处理。

回到 BT 面板,在需要运行 Movabletype 的 网站设置 里面,配置文件,在 Server {  里面加入以下,第一行的 /cgi-bin/mt/ 根据实际情况更改,以下设置为通过 abc.com/cgi-bin/mt/ 来访问 mt.cgi 。

location /cgi-bin/mt/ {
proxy_redirect off;
proxy_set_header    X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header    X-Forwarded-Host  $host;
proxy_set_header    Host              $host;
proxy_set_header    X-Real-IP         $remote_addr;
proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:5000;
proxy_read_timeout 1200;   //add these to improve timeout when import/export data
proxy_connect_timeout 1200;   //add these to improve timeout when import/export data
fastcgi_read_timeout 600s;   //add these to improve timeout when import/export data
}

重启一下 Nginx ,没有错误再继续往下做。

同时把 /www/wwwroot/abc.com/cgi-bin/mt/ 目录下的 mt-config.cgi 信息填好。

mt-config.cgi 长这样:

PIDFilePath /www/wwwroot/abc.com/cgi-bin/mt/mt.pid
CGIPath    http://abc.com/cgi-bin/mt/

文章标签

一些小而美的 BSP 和博客程序

Tony 提交于 周三, 2019-11-13 - 16:07

虽然我已经很少更新博客了,但还是很喜欢看别人的作品,尤其是加入到围绕着一个主题而展开互动的人群之中。

BSP

  1. Typlog ,一个有写作后台的静态博客。6 刀一个月,60 刀一年(比 Fireside 便宜多了)。特色是支持播客。创始人 lepture 的访谈,Typlog 的简介在这里
  2. Bitcron,一个可作为博客使用的互联网渲染引擎,只需网页即能工作,支持 Markdown 语法,通过 Web、微信、Dropbox 一键发布博客。不同套餐有不同的资源。Bitcron 的简介在这里,创始人海波的自我解释
  3. Blogger,没错,就是那个 Blogger ,因为众所周知的原因所以我说她“小”,但现在已被爱好者研究出搭建无缝的 Blogger 站台,动手文章在这里这里。我的评价是在 Blogger 面前没有可以打的免费 BSP 。

博客程序

  1. Gridea,一个静态博客写作客户端,免费,目前有活跃的用户在制作主题。
  2. Yellow, 无数据库,没有后台的 CMS。
  3. Grav CMS, 文本数据驱动的内容管理系统。 看看 MovableType 老朋友 dimlau 是如何安利的。

文章标签

网站丢失 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 里,老系统不一定看得见),问题解决。

文章标签

魔兽世界一键输出宏

Tony 提交于 周二, 2018-10-09 - 01:42

魔兽世界开120级了,无论如何也要玩一下,了解一下剧情和感受团队战斗的温暖。

我有3个110级的角色,按照经验,选猎人会比较容易升(bao)级(ming),进入游戏后发现天赋和输出手法跟110时代差不多,但一些技能在这次改版里被加入了 GCD(Group Cool Down(CD一直都写CD,一时间还没反应过来是 Cool Down 的缩写)),使得之前写的一些无脑绿叶红人输出宏变得无效。

人老了,也懒了,从网上找了几个猎人翻页宏就开始升级之路,用着还行,游戏过程就是单体 111111 或者需要 AOE 的场景 222222……

用两星期的零(ling)碎(chen)时间磕磕碰碰打到120,一星期把装等冲上320后进行了第一次团队副本,感觉任务比上一个版本集中,任务线的感觉很干净,三个大场景一块区域一块区域地清,一般完成其中两个就能满级,剩下一个在愉快的狩猎中也能很快完成(顺带冲一下项链等级和声望),副本只打了前6个BOSS,震撼度嘛不能和上个版本比,不过我还没见老七老八呢,打完再说。

直到……

谁发明了那么方便好用的一键无脑输出插件?!

GSE: Gnome Sequencer Enhanced : Advanced Macros

魔兽自带的宏,碰到有GCD的技能就不能往下走了,而这个 GSE 插件能突破这一限制,有 GCD 的技能也可以通过玩家主动按键进入下一步(如果玩家不主动按键而继续往下走的插件就相当于犯规)。没有这个插件以前,有翻页宏可以做到,按完一个带 GCD 的技能后翻到下一个工具条,再按第二个宏,但很笨重,循环多的输出手法要弄5,6个宏。这个可以看作是翻页宏的升级版,但不用翻页,还能保持完整的动作条(例如第一工具条第5个按键在翻页时就被第二个工具条的5号位置给顶掉了)。

谁发明的那么好用的懒(shou)人(can)福利~~~一路11111就能打出惊人的伤害(严格遵守 CD 来施放技能,排除人为干扰,手残党在点名走位时也能保持输出循环不变样,升级路也能用懒人输出,能边打游戏边看(kān)小孩了)。

于是,我马上开了一个新号战士娜希丽,因为一键输出宏实在太爽了,使得升级过程变成一种乐趣(现在的人物模型漂亮了许多),到了120之后再开其他职业!

另:打出无头骑士的坐骑了,退坑!

文章标签