
回顾
2016年02月,丙申年正月初一。
因为很久没管系统的事儿了,今天睡醒觉,索性登到青岛服务器上,不看不知道啊,WordPress又把php-fpm给拖死了!重启服务之后,用了一上午时间,细细的思考了一下折腾ECS这两年都在干些什么。
记得从几年前受够了WebFaction共享主机到国内的牛车网速那一刻起,就开始了折腾之路,当时的阿里云资源还是比较好的,大概因为刚刚开拓市场,硬件资源还比较充足的缘故吧,试用一个月ECS之后,决定把服务器全都迁移到阿里云上。当时阿里云只有青岛和杭州两个区,作为北方人,自然选择了青岛区,费了几天功夫搭建好基础服务,直接SSH到ECS上把几个django projects和两个WordPress迁移了回来。
速度自然是比国外服务器快多了,可为什么说折腾呢?因为原来外国的服务器,外国的域名商,不存在备案问题,这一下子全都迁移回了国内,不但工信部备案,按照北京市规定,还要去公安局备案。先后折腾了两个礼拜,才把全套手续拿下,传说中的京ICP备和更加传说中的京公网安备两个“身份证”也光荣的挂在了Footer上。唯一美中不足的,当时只是抱着试试看的心态去备案的,生活中也有不少事情占用时间,没有太多的精力管这些事儿,结果,就只备案了一个域名,剩下四套系统原来的域名统统挂不到服务器上了……
当时想,无所谓了,既然这样,干脆从头开始吧,于是暂时搁浅了所有的django项目,只保留了WordPress,毕竟好多年间写的几乎所有东西都在上面。启用了新域名LNYK2.COM,弄好了模板和插件。
其实反观自己,这些年来不管干啥,都想走一套极简的风格,而一旦折腾起来,却又乐此不疲……类似这样的矛盾,一次次的存在。就好像摄影,从最早的大变焦狗头,到最后只玩儿定焦纯手动,结果就是一大箱子镜头背着累死累活,看到变焦头还满头大汗的对人家嗤之以鼻;又好像出游,从最初“捏”张照片看景色那种单纯的快乐,一度演变成出游只为拍照,丢掉了旅行本身的乐趣,身边的人,也不再是出游最重要的陪伴,而仅仅成了画面中的模特;再好像django,架了nginx/Apache/PostgreSql一整套系统只为接个微信公众号的API!事后想想也是醉了。最后说写文章,从将近二十年前的纯HTML到CGI论坛,从ASP到PHP,从dotText到.Net Community Server再到自己写的Melody框架,从Confluence到MediaWiki最后到WordPress,期间丢了多少篇文章真是数不过来了,其实数据都留着,一直想着哪天有时间了,找台破本儿重新架起来所有东西,只为把当年的文字找回来。在这些年的“系统变革”中,其实我一直欣赏那种简约扁平的素雅风格,可是渐渐的WordPress后台装了若干插件,若干风格,让本就庞大的系统更加臃肿,同时为了弥补响应速度,底层各种Memcached/Accelerator吃光了本就不多的内存,造成访问延时,系统资源耗尽,就像这次。同样的,事后反观(我这人比较喜欢总结式的“马后炮”),本就没几个人访问的博客,折腾这些干啥?……
于是,在这“春意盎然”的新年新气象中,开始了新一轮的折腾,这次我决定,是该扔掉所有臃肿的累赘了。
开始折腾
本来想写一篇纯“娱乐”的文字,放在Whispers里,写了第一节之后重新阅读才发现,居然又莫名其妙的朝着Ironware风格去了……干脆第二节就继续来些硬货吧。
系统风格
这次折腾,因为有一个明确的目标——极简,多余的东西统统不要,所以系统平台最终选择了这么几样:
还是阿里云的ECS,这次开到了香港区,不为别的,就是不喜欢备案(虽然咱也是有“身份证”的人了),这样青岛区的服务器纯用来承载Git/django等其他服务,同时用作大陆方面的CDN.
除
LNYK2.COM仍然解析给青岛区以外,包括hk*.LNYK2.COM在内所有域名统统解析到香港区,因为LNYK2.COM是有证的,做入口点及CDN没问题。
域名注册商转移到万网(阿里云),因为实在不喜欢Godaddy的收费策略,第一年便宜的要死,等骗你上了贼船,之后续费的时候再挣你的钱。
这次折腾的主角——博客系统,彻底扔掉了WordPress,简单几步把所有东西转到了Typecho上。
关于Typecho在这里多说几句,先搬一下官方的广告词:
仅仅7张数据表,加上不足400KB的代码,就实现了完整的插件与模板机制。超低的CPU和内存使用率,足以发挥主机的最高性能;原生支持Markdown排版语法,易读更易写。支持BAE/GAE/SAE等各类云主机,即使面对突如其来的高访问量,也能轻松应对;精心打磨过的操作界面,依然是你熟悉的面孔,更多了一份成熟与贴心。每一个像素的剪裁,都只为离完美更进一步。
比起已经被我搞成大胖子的WordPress来说,Typecho这“哗哗”的运行速度和朴素到多余东西一点儿没有的后台风格,让我突然觉得找到了老相好~
再说主题,这次用的是Min童鞋修改的绛木子的仿简书风格,自己做了点儿小修改(下面会介绍),在这里对以上两位筒子的辛苦劳动表示一下由衷地感谢!
好吧,正式转到Ironware风格,我们开始吧!
具体操作
架好服务
还是不想折腾,直接上LNMP,弄好Nginx/PHP-FPM/MySQL;
Typecho官网上下载最新版,我这里偷懒,直接从Typecho on GitHub上clone的Master,丢到vhost的root;
这里先别着急安装,因为LNMP的[vhost].conf是默认关闭pathinfo的,所以要先操作一下虚拟主机的配置文件:
1 | sudo nano /usr/local/nginx/conf/vhost/[虚拟主机名].conf |
这样之后,安装完Typecho就不会碰到404没法进后台的错误了。
之后的操作,假设你已经完成了Typecho的安装,系统一切正常。
迁移数据
以下操作在
香港区服务器上
首先是安装Typecho的插件,建议先装AppStore,这是Typecho的一个应用商店插件,用起来很方便。关于插件的安装,最标准的安装方式是把[插件]目录直接上传到[typecho root]/usr/plugins/中。先用这个方法装上应用商店,之后就可以从后台中启用应用商店插件,并直接依靠应用商店来装一些常用插件了,很方便。
如果连应用商店都不想装,那咱就直奔主题,下载安装WordpressToTypecho这个插件,启用之后进入插件配置,填写WordPress的数据库服务器相关信息,配置完了点运行,如果不出意外,插件顺利工作完毕会有提示,所有的文章和页面就都转换到Typecho上了。
我这里的操作相对复杂一点,因为不想把青岛区服务器的3306端口开放到公网,我是在青岛区服务器上另装了一套Typecho,迁移完数据后用phpMyAdmin导出、导入到香港区的,貌似阿里云的内网IP跨区是不互通的,也没想着深究iptable/阿里云盾之类的内容,对于这种问题我一贯奉行一个原则:
如果一个看似巧妙的操作却会为问题本身引入更多的复杂度,那么Hard Operations往往是更好的解决办法。
喝杯可乐,我们继续:)
到这里,数据库里的内容已经迁移完毕,接下来的是给文章中的附件“换门牌号”:
WordPress的附件地址一般是[WP root]/wp-content/uploads/
Typecho的附件地址是[Typecho root]/usr/uploads/
如果你的WordPress没有修改过默认上传路径,或者装过什么奇怪的插件的话,其上传目录中的结构和Typecho是完全一致的,全是uploads/[年]/[月],这样就太方便了,直接把WordPress的uploads/所有东西统统复制到Typecho的uploads/里面,附件就都过来了。
然后打开phpMyAdmin或者直接myadmin之类操作MySQL的东西,使用查询语句,将原来文章中的附件地址替换成新的,以我为例,blog.lnyk2.com上的WordPress附件地址,替换成williamyao.com上的Typecho附件地址,查询这么写:
1 | UPDATE typecho_contents SET text = REPLACE(text,'http://blog.lnyk2.com/wp-content/uploads/','https://williamyao.com/usr/uploads/'); |
执行完查询,回到Typecho前台,随便开个带附件的文章看看,观察一下附件地址,是不是已经全过来了?
恭喜你,到这一步,数据迁移全部完成!
主题设置
以下是关于Min 童鞋修改的绛木子的仿简书风格的小修改。
删除“打赏”按钮
貌似支付宝已经取消了捐赠功能?(还是我没找到,不得而知),总之觉得这个可爱的小功能有点儿不大符合咱这大叔模样的行事风格,贱贱的就把它删掉了,具体如下:
1 | 修改 page.php 和 post.php |
将这两个<span>...</span>简单粗暴的整段删掉,在“赞”和“分享”中间的“赏”按钮就消失了,其他dialog之类的不用动,当然删的干净一点儿也无妨。
支持侧边导航栏的自定义链接
这套主题在后台是可以自由切换侧边栏显示文章分类还是独立文章的,做的真的很贴心,忍不住再赞一个!但是对于大多数想要定制这个侧边栏的童鞋来说,只能动手改,好在改动不大。
因为主题本身支持Links插件,只不过插件定义的友情链接需要单独建立slug为links的独立页面,并且把链接聚合到这个单独页面中,这里我们正好可以利用Links插件,给她小小扩展一个新功能,支持选择是否把友情链接分类放到侧边栏!
不要紧张,修改步骤很简单,跟我来:
首先,满足一下我们的升级强迫症,将主题自带的Font Awesome替换为最新版本。Font Awesome维护一个字体和一整套应用,这个字体的特殊之处在于它包含的全是小图标!这套主题左侧导航栏开头的那些小图标,用的就是FA字体里的。
- 从Font Awesome官网上下载最新版;
- 用
fonts/中的文件替换服务器上[Typecho root]/usr/themes/jianshu/fonts/中的同名文件; - 用
css/中的font-awesome.min.css文件替换服务器上[Typecho root]/usr/themes/jianshu/css/中的同名文件。
其次,你要装上HANNY的Links插件,这也是这套主题默认支持,推荐安装的。
然后,用好一点的编辑器(记事本其实也行……)打开Links/Plugin.php找到
1 | public static function output_str($pattern=NULL, $links_num=0, $sort=NULL) |
这个函数,在前面的条件判断中新加一个判断条件:
函数原来的前几行:
1 | public static function output_str($pattern=NULL, $links_num=0, $sort=NULL) |
我们只需要在最后一个else if段后面再加一个else if,用来判断一个FA_NAV条件,把上面几行变成这样:
1 | public static function output_str($pattern=NULL, $links_num=0, $sort=NULL) |
好了,插件修改就这么简单,接下来更简单:
打开主题的header.php,找到<div class="dropdown" id="nav-menu">这一段,在本段最后</div>之前加上下面这句:<?php Links_Plugin::output(FA_NAV,0,'fa-nav');?>
修改后的样子是这样:

修改好了?OK,一切搞定!那么怎么用呢?很简单!
打开后台的管理/友情链接,新建一个友情链接,在链接分类中填写fa-nav,在自定义数据中填写不带左斜杠的Unicode图标代码。
什么是图标代码?Font Awesome官网图标页有该字体的所有图标示例,你选好了哪一个,直接点图标进去,里面的Unicode后面就是字体代码:

填完了没?应该是这个样子:

最后回到前台刷新,效果是这个样子:

会用了不?是不是很简单?Links插件所有功能一切正常,我们给它加了个功能,只要把链接分类写成fa-nav,并且给它一个Font Awesome的图标,它就会自动出现在左侧导航栏中!
这里有个小Bug:想要出现在左侧导航栏中的链接,必须填写图标代码,不然显示的时候原来的图标位置会有点小瑕疵,想改改的筒子就自己上手试试吧。同时,链接默认是开新窗口(标签页)打开,如果想要同窗口打开,需要删掉
Links/Plugin.php中那行代码的"target=_blank"属性。
其他插件
Typecho的插件虽然都不算大,但好在一些不错的简单功能都能找到对应的插件:

这几个都挺不错的。
这个主题需要装上
TeStat插件,“阅读”和“点赞”统计才会生效。
后记
执着而不计成本,不为索取只为陶醉,有时候人就是应该活的简单些。
憋了小一年没更新文章,一回来就搞这么冗长的一片口水文,有失大雅,有碍观瞻,新春之际,望君海涵,但有不妥,欢迎拍砖!
最后,等到哪一天连这些都嫌烦了,就回归老路线,TeX直接输出PDF,把自己写的所有文章都放进去,看看若干年后能不能弄出本儿书来……
Jekyll最近貌似很火?我总觉得,有折腾Ruby Gem和github.io的功夫,想写的东西早就写出来了,何必呢?
我其实是个喜欢用钢笔和牛皮纸本子写日记的人。