跳转到主要内容

MovableType

MovableType

活字印刷,MT至高!

MovableType 交流QQ群:21518121

如何在 MovableType 子站点启用干净搜索

Tony 提交于 周六, 2021-06-19 - 12:21

多站台功能一直是 MovableType 的卖点,但实际使用中子站点在进行搜索和评论操作中会暴露 MT 后台的地址,无伤大雅但我们可以改进一下。

针对搜索功能,改进的方法包括:

  1. 不使用搜索,使用清晰的分类和完整的存档页面(小站点完全可以)。
  2. 人为弱化搜索结果页的设计感,尽量减少被访客加入收藏夹的机会。
  3. 使用第三方搜索引擎,对后台没有负担,但如果站点没有收录或者收录较少时效果就很差了。

在 MovableType 启用干净搜索的方法,在子站点的 Nginx 的 Rewrite 处加入:

location /search {
   proxy_pass http://127.0.0.1:5000;
   rewrite ^/search/(.*)$ /cgi-bin/mt/mt-search.cgi?search=$1&IncludeBlogs=22&limit=20 break;
}

Blogs=22 替换成 MT 子站点的ID,再修改一下 Search Widget 里的代码,使之匹配 /search/ 就可以了。

rewrite 很简单,但 proxy_pass 的引入可以很方便地令地址栏保持一致,再次感叹一下 PSGI 模式运行 的便利性。

相关链接

  1. 搞懂nginx的rewrite模块
  2. Nginx rewrite URL examples with and without redirect address
  3. Nginx Rewrite URL Rules Examples
  4. GET request without the question mark
  5. meme图

文章标签

宝塔面板安装 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 Task::Plack XMLRPC::Transport::HTTP::Plack Cache::Memcached Cache::File

回到顶部

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

回到 BT 面板,在需要运行 Movabletype 的 网站设置 里面,配置文件,添加以下 URL Rewrite Rule,第一行的 /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;
proxy_connect_timeout 1200;
fastcgi_read_timeout 600s;
}

重启一下 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/

文章标签

如何把 MovableType 导入 Drupal

Tony 提交于 周四, 2016-02-04 - 12:22

此文记录了如何把一个MovableType的博客导入Drupal的过程,也可当成是一个WordPress导入Drupal的教程。 大体思路是先把MovalbeType导入WordPress,然后通过Migration from WordPress模块把WordPress导入Drupal。

回到顶部

导入前导入后的文件结构区别

N/A表示在转换过程中会丢失。

  • MovableType ---> WordPress ---> Drupal
  • Entry ---> Post ---> Article
  • Page ---> N/A ---> N/A 注:MovableType导出的文件不带Page的部分
  • Category ---> Category ---> Tags(taxonomy)
  • Tags ---> Category ---> Tags(taxonomy) 注:在MovalbeType导入WordPress过程中后会自动截取文章标题转录入Tags,会有大量Tags生成。
  • Custom Fields ---> N/A ---> N/A
  • Comment ---> Comment ---> Comment
  • Trackback ---> Comment ---> Comment

回到顶部

MovalbeType导入WordPress

  1. 在MT 6后台,选 Tools -> Export Entries -> Export Website,可以得到一个TXT文件。
  2. 把这个TXT文件改名为 mt-export.txt ,上传到WordPress的 wp-content 目录下。
  3. 在WP后台,选 工具 -> 导入 -> Movable Type and TypePad (可能会提示需要安装插件) -> 导入 mt-export.txt
  4. 完成。

回到顶部

WordPress导入Drupal所需要的模块

因为Migration from WordPress支持在线导入WordPress站点,不需要任何数据文件,使得两边导入非常便捷,不用担心导入体积较大的网站时会出现脚本超时的状况。导入过程也伴随一个导入向导,你可以在向导中设置各种导入参数,甚至可以在导入结束后把Drupal倒回原来的状态。

回到顶部

Typepad 托管试用心得

Tony 提交于 周日, 2015-08-02 - 21:50

Typepad托管试用心得

试用了一下Typepad的收费版,计划是如果Typepad的表现能接近Movabletype或相仿的话就会把自建的Movabletype博客转移上去托管,毕竟都是同一个东家的产物。

试用的是$14.95一个月的Unlimited Plan(年付的话送两个月$149.5),可以开无数个子博客,开启完全自定义HTML功能,没有广告。

回到顶部

Typepad托管的特色

  • 支持MovableType的Template Tag Reference,MT皮肤移植SO EASY!
  • 支持从WordPress,MovableType导入文章。
  • 众多插件支持,包括Disqus,Bit.ly Link Shortener,Google Analytics。
  • 支持通过邮件上稿。(上班的时候想吐槽就在OUTLOOK里来一发)
  • 后台有大量应对SEO友好的设置。
  • 每个博客都支持多作者合写。

回到顶部

托管在Typepad的好处

  • 速度飞快,经过过MovableType静态生成的人一定会惊讶TypePad页面生成的速度。
  • 访客如果已经登录了Typepad,当访问其他Typepad托管的博客时,可以方便地加入阅读器并关注。
  • 无限博客数量是很让人上瘾的……

回到顶部

托管在Typepad的不足

  • 贵。
  • 绑定域名部分的操作很不人性化。
  • 搜索功能非常差,对中文搜索不好,我遇到中文搜索不能的情况后跟客服交流过几次,按照客服的指引做(等待索引)依旧不能成功,这是我放弃Typepad的最主要因素。
  • Typepad前端加载在CloudFlare上,有部分CF的IP在国内访问不到。

blog.tonyhead.com. 300 IN CNAME tonyhead.typepad.com.
tonyhead.typepad.com. 300 IN CNAME cname-cloudflare.typepad.com.
cname-cloudflare.typepad.com. 300 IN A 190.93.247.9
cname-cloudflare.typepad.com. 300 IN A 141.101.115.9
cname-cloudflare.typepad.com. 300 IN A 190.93.244.9
cname-cloudflare.typepad.com. 300 IN A 190.93.245.9
cname-cloudflare.typepad.com. 300 IN A 190.93.246.9

回到顶部

总结

如果你需要做很多个英文的小站,并且只需要1个系统管理员,那么可以考虑Typepad。

回到顶部

TONYHEAD.COM切换到HTTPS上

Tony 提交于 周五, 2014-08-15 - 14:39

TONYHEAD.COM切换到HTTPS上

响应Google号召,使用 HTTPS 为TONYHEAD 通利堂全站护持。

SSL证书是msg7086友情帮忙签的Comodo Positive SSL,再次感谢。

回到顶部

2014-09-14更新

出于速度考量(又拍云的二级域名需要花费5秒在SSL Negotiation上),只对后台启用HTTPS加密,前台使用HTTP。

回到顶部

MovableType配置

修改 mt-config.cgi 里 CGIPath ,如果只是需求单纯Admin后台部分(mt.cgi)启用HTTPS那么就改成 AdminCGIPath ,因为我的计划是前后台(mt-comment.cgi+mt.cgi)都启用HTTPS,所以我设置的是 CGIPath 。

CGIPath https://www.tonyhead.com/cgi-bin/mt/

回到顶部

Nginx配置

在server括号中加入下列,把所有走80端口的流量都重定向到HTTPS下。

if ($server_port ~ "^80$"){ set $rule_0 1$rule_0; } if ($rule_0 = "1"){ rewrite /(.*) https://www.tonyhead.com/ $1 permanent; break; }

回到顶部

页面元素路径配置

把页面元素的引用路径都改成"//domain/flower.jpg"是一个好习惯,浏览器会根据当前页面是HTTP或是HTTPS来自动适配。

回到顶部

其他发现

  1. 在清理页面混合内容的过程中发现新浪云的 .sinaapp.com 和又拍云的 .upaiyun.com 都能支持HTTPS访问,在此大力推荐。
  2. AdminCGIPath 和 CGIPath 的区别
  3. 为了让手机上的浏览器(包括QQ浏览器和Chrome)完美支持加密访问TONYHEAD(不需要在客户端加入额外证书,避免了感叹号提示),需要在服务器端上做好足够的证书链,为什么需要完整的证书链可以参考这里
  4. TONYHEAD.COM的证书链截图。

回到顶部

文章标签

如何通过 Nginx+PSGI 运行 MovableType

Tony 提交于 周一, 2014-08-11 - 12:50

一个游戏在通关前我都说不上喜爱,随后所有的精诚法门敏捷操控总在我知道我能通关为前提下一一展现。例如贪吃蛇,全屏首尾相接是没有悬念的,区别只在后期食物和加分水果距离蛇头的位置,来决定通关后能够获得的差异的分数。这也是我喜欢网页设计的原因,反正最终是可以实(chao)现(xi)这个效果的,只是看要花多少时间走怎(pian)样(men)的路线罢了。

于是我又来折腾了,把TONYHEAD 通利堂从传统的Apache-cgi_module-CGI切换到Nginx-PSGI-CGI上。

先说说为什么要用PSGI来跑MovableType这个Perl应用,用过MT的都知道MT后台的反应是多么的龟速(短板不在硬件上),想达到WordPress后台那种按按按就出结果的节奏是不可能的,但亲测转到PSGI后效果有明显改善。根据测评,PSGI模式的效率是CGI模式的1.9倍,是FastCGI的1.4倍,在另一个测评中,PSGI的效率都在CGI的2倍以上,如图:

CGI vs PSGI

图片来源

总之切换到PSGI后效能的提升是显而易见的,下面开始介绍做法。

回到顶部

系统环境

Starman是一个PSGI网关,在MovableType 5.2开始支持Nginx+PSGI时进入视野,mt-starman-daemon作为守护进程会把 /cgi-bin/mt/ 目录先预读进内存,把该目录下的所有cgi/pl脚本交给Starman处理,Nginx则负责处理前端静态文件和转发Starman。在AWS市场里Nginx+MySQL+Starman是作为MovableType 6的标准配置,可见这一组合和思路是被推崇的。

回到顶部

步骤

OS部分

先安装cpanminus。

curl -L http://cpanmin.us/ | perl - App::cpanminus

安装Plack,XMLRPC和Starman,这一步需时较长,请耐心等待。

cpanm Task::Plack XMLRPC::Transport::HTTP::Plack Starman

下载mt-starman。