2019年9月

缘起

照例,讲下缘起。

我的博客,从2017年9月开始使用Bitcron + Dropbox + Disqus方案。至今已有2年,期间偶尔因Bitcron的龟速有调整的冲动,但本着「多写少折腾」的原则,都克制住了。

这套方案的Dropbox和Disqus都需要梯子。然而,最近因某些原因,常用梯子经常抽风,也尝试寻找替代方案,均不理想。

想来这不是长久之计,又不满Bitcron的速度,于是趁机寻找新的博客方案。

其实博客已经玩的很溜了,主要在两个方案之间犹豫:

  • 静态博客:使用Hexo或Hugo + GitHub托管 + Gitalk一类的评论组件
  • 动态博客:搭建独立的WordPress博客

因发现AWS的Lightsail仅3.5刀/月,比较便宜,并且可以免费使用一个月,于是开通账户尝试WordPress方案。

很久没有用WordPress,也好奇发展成什么样子,结果很失望,作为个人博客程序,太复杂了。

至于闻名已久的Typecho,我当然知道。但我对小众程序总有些偏见,担心资源太少、作者弃坑。这次因看到一些漂亮的Typecho主题,抽风的第一次尝试安装Typecho。然后,当我登录后台的那一刻,被它的简单惊艳到了。配上朴素的主题,卧槽,这正是我想要的呀。

Typecho后台
Typecho后台

Typecho默认主题首页
Typecho默认主题首页

于是乎,开始折腾Typecho了。

搭建Typecho博客

步骤1:搞定服务器

AWS的Lightsail虚拟主机,后台可以直接创建LAMP实例,即Typecho所需的运行环境。

Lightsail后台创建LAMP实例
Lightsail后台创建LAMP实例

创建LAMP实例后:

1、使用SSH登录主机。方法如下:

ssh -i LightsailDefaultKey-ap-northeast-1.pem bitnami@X.X.X.X

其中,LightsailDefaultKey-ap-northeast-1.pem是主机的账户密钥,需要从AWS Lightsail后台下载。bitnami是主机的默认登录名,X.X.X.X替换为后台显示的公网IP。

2、Apache根目录是~/htdocs/,Typecho文件放于此目录,即可通过公网IP访问安装。

3、~目录中的bitnami_credentials文件,存放着主机的默认密码,同时也是Mysql数据库的默认密码。

步骤2:下载Typecho

登录主机后,依次执行

wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz #下载安装包
gzip -d 1.1-17.10.30-release.tar.gz    #解压安装包
tar xvf 1.1-17.10.30-release.tar       #解压安装包
mv build/* htdocs/                     #将Typecho文件移动到Apache根目录htdocs

完成后,htdocs目录下拥有如下文件:

drwxrwxr-x 6 bitnami bitnami  4096 Sep 26 13:47 ./
drwxrwxr-x 6 bitnami bitnami  4096 Sep 26 13:50 ../
drwxr-xr-x 5 bitnami bitnami  4096 Sep 26 13:46 admin/      #后台文件夹
-rw-r--r-- 1 bitnami bitnami   721 Oct 29  2017 index.php   #首页文件
drwxr-xr-x 2 bitnami bitnami  4096 Sep 26 13:46 install/    
-rw-r--r-- 1 bitnami bitnami 48403 Oct 29  2017 install.php #安装入口文件
-rw-r--r-- 1 bitnami bitnami 14974 Oct 29  2017 LICENSE.txt 
drwxr-xr-x 5 bitnami bitnami  4096 Sep 26 13:46 usr/        #用户文件,包括主题、插件、图片。安装主题、插件需要使用到。
drwxr-xr-x 5 bitnami bitnami  4096 Oct 29  2017 var/        

步骤3:创建Mysql数据库

安装前,需要先创建好Mysql数据库,步骤如下:

mysql -uroot -p          #登录Mysql,会提示输入密码,密码在bitnami_credentials文件中
create database typecho; #创建数据库,数据库名为Typecho

步骤4:安装Typecho

浏览器访问公网IP,将见到如下安装页面,按要求填写后确认安装。

Typecho安装界面
Typecho安装界面

我安装时出现错误提示,要求在网站根目录下创建config.inc.php,按要求创建即可。

安装完成后,即可通过公网IP访问博客。

步骤5:迁移数据

我有旧博客,需要迁移数据,我的文章在本地有备份,共174篇,使用了最笨的方法:一篇一篇的重新发布到Typecho博客,费了不少时间。

新博客忽略这一步。

步骤6:绑定域名

到域名服务商后台,添加一条A记录,指向Lightsail实例的公网IP即可。

绑定域名在步骤1之后就可以进行,如此,在步骤4中就可以访问域名而非IP安装Typecho。我之所以在最后绑定域名,是因为我要迁移博客数据,数据迁完后,才将域名解析到新博客,保证博客平稳过度。

至此,博客基本功能已搭建完成,可安心食用。

进阶功能

以我强迫症性格 + 折腾精神,当然要继续折腾。顺利完成以下功能:

URL改写

Typecho默认的URL结构是www.skyue.com/index.php/1/,中间的index.php不忍直视。

可以在「后台-设置-永久链接」中,启用「地址重写功能」,然后选择一个喜欢的URL结构。

启用时会报错,报错后选择坚持开启,随后完成下面两步即可生效。

1、修改apache配置文件,文件地址/opt/bitnami/apache2/conf/httpd.conf,修改内容:

AllowOverride None

改为

AllowOverride All

2、在网站根目录htdocs中新建.htaccess文件,文件内容为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

评论邮件通知

博客评论有邮件通知,能更快的掌握动态并与读者互动。Typecho默认不支持,但可以使用「CommentToMail」插件实现。

安装步骤:

cd ~/htdocs/usr/plugins/       #进入插件目录
git clone https://github.com/visamz/CommentToMail.git #安装插件,Lightsail LAMP实例默认支持git
chmod 777 CommentToMail/cache  #设置cache文件夹权限,否则后台启用插件时出错

安装后,博客后台可以看到插件,启用并完成相关设置即可。

主题推荐

推荐几款主题,我偏向简洁的风格。

目前我使用的主题是iKirbySimplicity,第一次看到很是惊艳。

Simplicity主题
Simplicity主题

当然,Typecho的默认主题也非常漂亮,说不定哪天我就换回默认主题。

此外,WingLimAirCloudmemset0Rringo也是我喜欢的风格。

AirCloud主题
AirCloud主题

Ringo主题
Ringo主题

Markdown渲染图片注释

注:这部分内容全部来自:https://www.jianshu.com/p/9901b2ebfe26

Markdown插入图片格式如下:

![注释](url)

渲染时,希望注释能够显示在图片下方,类似下图样式。

Typecho加图片注释
Typecho加图片注释

需要修改Typecho的var/HyperDown.php文件第357行。将

<img src=\"{$url}\" alt=\"{$escaped}\" title=\"{$escaped}\">

修改为(有调整,见后文2020年3月14日更新)

<img src=\"{$url}\" alt=\"{$escaped}\" title=\"{$escaped}\"><center><div class=\"image-caption\">{$escaped}</div></center>

同时在主题样式中添加如下css。如果是Simplicity主题,注意它引用的是style.min.css,不是style.css

/*设置图片插入居中*/
p img {clear:both;display:block;margin:auto;}
/* 设置注释样式*/
.image-caption{
min-width: 20%;
    max-width: 80%;
    min-height: 22px;
    display: inline-block;
    padding: 10px;
    margin: 0 auto;
    border-bottom: 1px solid #d9d9d9;
    font-size: 14px;
    color: #969696;
    line-height: 1.7;
}

本文有不少图片,可看到效果。

支持HTTPS

我使用的是阿里云的免费SSL证书,配置有些复杂,完全参考这篇文章进行的,不班门弄斧了。

其中有一步,需要把下载的证书上传到Lightsail主机。没有研究出来Lightsail怎么连接FTP,于是先把证书上传到图床,再使用wget从图床下载,很trick,不过奏效。

图床

趁这次恢复使用第三方图床,有几个要求:

  • 必须:因为博客启用了https,所以图床也需要支持https
  • 必须:文件路径和文件名完全自定义,不希望被改写
  • 最好:支持绑定域名
  • 最好:免费

很幸运,又拍云同时满足四个要求。刚好我的Markdown编辑器MWeb也支持又拍云,完美。

图床的配置很简单,不赘述。唯一需要注意的是,如果像我一样使用MWeb或其它工具上传图片,需要在又拍云后台创建一个操作员角色,并且授权操作员使用云存储空间。

结语

不知为何,折腾这些很容易上瘾,最近下班回家很早就躺床上听《斗破苍穹》,这几天却埋头处理这些而不知疲倦,常常一晃就过了12点。

常觉自己适合做个码农,可惜被产品耽误了。


2020年3月14日更新

HyperDown.php中,对图片修改为

<figure><img class=\"skyimg\" src=\"https://static.skyue.com{$url}\" alt=\"{$escaped}\" title=\"{$escaped}\"><figcaption class=\"image-caption\">{$escaped}</figcaption></figure>

相应style.css增加

figure {
        border-style: solid;
        border-width: 1px;
        border-color: #e7e7e7;
        padding: 2px;
}

.image-caption {
    color: #999999;
    text-align: center;
}

以上修改实现的功能:

  • src增加https://static.skyue.com前缀,本地写作时,不用补全前缀即可发布。
  • 图片和图片标题包在figure中,并添加灰色边框,避免白底图与背景色重合,分不清边界。
  • 图片标签放在figcaption中,使用灰色字段。

最终效果图如下:

最新效果图
最新效果图

中秋(13~15日)去苏州玩。

行程

月初便决定了去苏州,但并没有规划。行程均为临时起意:

【第一天】

上午从杭州开车到苏州,中午在古城的豆壳吃午餐。下午报临时团,游「狮子林-寒山寺-丝绸博物馆-山塘河游船-山塘街夜市」,每人150元。

【第二天】

上午逛苏州博物馆,中午在平江路「上下若」(店名很奇特)吃饭,然后逛平江路。下午到诚品生活,晚上金鸡湖夜景,顺便在苏艺影城看了电影《诛仙1》。

【第三天】

上午开车回杭州。原计划下午加班,结果睡了半天。

游玩

苏州,整座城市是一体两翼的布局,以古城所在姑苏区为中心,东西两侧都是现代化的商业中心。

苏州古城区
苏州古城区

古城区很小,成长方形,从地图上看,长约4.5公里,宽3公里多点,被护城河包围,面积约14平方公里。

古城建筑被很好的保护下来,据说建新房或旧房修缮,高度被严格限定在25米以内,外观色彩只能是黑色、白色或灰色,总之,一切都必须与古城的风格保持一致。

狮子林

提起苏州,多数人第一个想到的就是「苏州园林」,它已成为专有名词,其中又以拙政园最为出名。不过,我们因为临时报团,选择了紧挨着拙政园的狮子林,名气大约也仅次于拙政园了。

狮子林最后一位主人是贝润生,听到这个名字时很陌生,但得知他是著名建筑师贝聿铭的叔公时,生出一份熟悉之感。贝聿铭的大名可是早有耳闻,应属成就及声望最高的华人建筑师,曾经看到他顶着压力设计卢浮宫前玻璃金字塔的事迹,颇为激动人心。解放后,贝氏后人将园林捐给了国家,不过,狮子林中仍然保留着贝氏祠堂。

与拙政园相比,狮子林不大,但在古代也绝对是大户人家。其最大的特色是后园的假山,奇形怪状、暗道极多,非常适合攀爬玩耍,据说,贝聿铭曾在这里渡过一段童年时光。我想,即便没有手机互联网,生活在此的童年也决不失色。

假山瀑布
假山瀑布

窗外
窗外

狮子林房间一角
狮子林房间一角

寒山寺

寒山寺位于古城西面。

「月落乌啼霜满天,江枫渔火对悉眠,姑苏城外寒山寺,夜半钟声到客船」,逛着寒山寺,重温了无数遍这首寺,因为寺内多处刻着它,甚至一间院子墙壁全刻着这首诗,用着不同人的笔迹。虽说寒山寺出名全靠这首诗,还是觉得用力过猛。

其实,也不全因这首诗,更因这首诗上了中学课本。若是没有进入课本,除苏州人,谁知寒山寺呢。

我一直以为「寒山」是座山,然后山中有座庙,名曰寒山寺。却原来,「寒山」是位僧人,寒山寺因他所建而得名,倒是涨知识了。

山塘河与山塘街

话说,1000多年前,大名鼎鼎的诗人白居易,在苏州当了一年多市长。任期干的最大的一件事,便是凿了条河,连接阊门(古城西边的城门)和虎丘,便是山塘河,河长7华里,又称七里山塘。文人商贾常聚于此,两岸日渐繁华而成商业街,名曰山塘街。

我们到山塘街已是夜晚,灯火通明、人山人海。街不长,店铺很多,但种类却不多,以绸缎店为主,外加一些小吃店和极少商品店。如果不买绸缎,没什么意思。游船则看座位,若能靠窗或许有些景致,我们运气不好,没排到靠窗的位置,遗憾……

置身其中,想象1000多年前繁华的街市,只觉历史之绵长,人生之短暂。

山塘街夜景
山塘街夜景

苏州博物馆

苏博
苏博

周五逛狮子林前就想先参观苏博,因为没有预约,方才放弃。

苏博免费,要提前预约,若是节假日,必须提前多天预约。我们得知要预约后前往官网查看,三天假期的名额都预约完了。

不过,我们仍然在网上找到了付费渠道,是团队预约,99元/人,所以,周六成功参观了苏博。参观后觉得这99元花的太值了。两天逛了这么些景点,若要挑个最好的,必须是苏博。

苏博是贝聿铭的作品,虽然不懂建筑艺术,却处处感受到它的美感。在外面从西边看过去,明明立体的苏博却像一幅平面画,那是利用透视关系造成的错觉,第一次看到觉得特别神奇。在大厅,透过一面玻璃墙便是后院,后院有面墙是拙政园or忠王府的,白色,前面摆放了几块石头,错落有致,隔着玻璃看过去,也如水墨画一般。贝聿铭擅长利用几何图形,以景为画,把透视关系真的玩到极致,美不胜收。

苏博后院
苏博后院

苏博大厅摆放了一幅水墨画,必须说道说道。正面看只觉得栩栩如生,也没有多惊艳,大约自己也看不懂。但走到画后,却是被震撼到了。原来这幅画不是画的,是作者在画布后面利用塑料袋、草绳垃圾进行编排,再利用灯光投影出来的。这比直接画出来有创意的多,难怪有资格摆放在苏博大厅展览。

当天苏博展览主题是屏风,陈列着各种屏风作品,有真实的屏风,有以屏风为主题的画作。其中有幅《乾隆皇帝是一是二图》,听导游的讲解特别有意思。导游是位老师兼职的,讲了不少干货。

宋代素人作品
宋代素人作品

乾隆皇帝是一是二图
乾隆皇帝是一是二图

上面大图便是《乾隆皇帝是一是二图》,它跟小图很像。小图是宋代素人所画,被乾隆皇帝偶得,特别喜欢,于是自己cosplay找宫廷画师依样画了一幅,听说画面中的桌椅摆饰至今保留在故宫中。两幅画布局上最大的不同是宋代作品前景有个东西,而乾隆cosplay的没有,因为这影响皇家气势,所以被乾隆取消。

苏博书房一角
苏博书房一角

平江路

平江路是与山塘街齐名的古代商业街,山塘街在古城外,而平江路在古城内。从苏博向南步行不远就到了。

与山塘街相比,我更喜欢平江路,因为有很多创意商品店铺,文艺范很足,可玩性更强。比如,有一家店以竹子为主题,所有商品都是竹制品,很特别。平江路边也有一条小河,比山塘河更窄,来往的是手摇船,船夫戴着斗笠、摇着船桨,颇具古风之美。

平江路手摇船
平江路手摇船

诚品生活

每到一个新城市,总想看看当地有名的书店。苏州最有名的自然是诚品书店,诚品书店在大陆只有两家,苏州是第一家,第二家开在了上海。

诚品书店位置于金鸡湖附近,准确说不叫「诚品书店」,而是「诚品生活」,更像一个拥有书城的商场,除了书,还有大量文创作品,当然吃的也不会少。总之,非常适合逛,喜欢文艺小清新,来这里准不错。

诚品书店
诚品书店

金鸡湖夜景

苏博是我最推荐的,这里则是我最失望的。前一天坐出租车,司机海吹金鸡湖夜景有多漂亮,一定要去看看。结果一言难尽,如果维多利亚港打10分,这里最多2分吧。

于是,我们去看了《诛仙1》,虽然也是个大烂片。

吃住行

苏州两天,感觉消费比杭州低一些,至少吃喝如此。

古城及周边的网红餐厅很多,大部分都排长队,甚至根本排不到。第一天我们就去了虎丘附近的「苏小馆」,没有位子。然后改道去古城的「豆壳」,一家创意菜餐厅,没让我失望,味道很好,一份牛肉酱炒饭都觉得香喷喷的(可能也是饿了),价格也很实惠。

在平江路,光顾了「上下若」,大众点评评分不错,但味道很渣。唯一值得称道的是环境,它开在一栋古宅中,带有院子,门口挂着一笼鸟,养着几只漂亮的小鸟。两侧是回廊,改造成坐台,摆着小茶几,有几分恬静。我们便坐在这里唠嗑玩手机,饭菜却是没动几筷子。

住宿使用积分兑了两晚苏州万豪酒店,条件一般。离古城不近不远的,也尴尬。来苏州这样的城市,民宿或许更加合适。

很久没追国产动漫了,最近一次是去年年初的《一人之下S02》,当时还弃剧了。

《斗罗大陆》是FY推荐的,推荐时不忘描述他高中的青葱岁月,与我当年看《诛仙》一样,追着IP改编的剧,是一种情怀。(诛仙电影13号也要上映了~~)

斗罗已更到70多集,我用了三个晚上就看完了。看电视一直这样,只要陷进去,便没日没夜,打鸡血似的,上班都顾不上。那几天刚好工作调整,天天放羊,幸运。

追完《斗罗大陆》,又找来《斗破苍穹》。做搜索的时候,经常看到这两个词出现在热搜榜,那时分不清两部小说也分不清两位作者,现在都门清了。

二者的剧情,都是优秀的游戏脚本,一路训练养成、打怪升级。其实没啥营养,但看着不费脑子,目睹坏人被一个个干掉,眼见每次深陷绝境时的力挽逛澜,都会潜移默化的把自己代入其中,就一爽字。这是人的天性,和小朋友想象自己拥有翅膀遨游天际一样。区别在于,人家是小朋友,我现在成年了,小孩那叫童趣,我这叫无聊。

两部作品最大的不同是男主对待感情的态度真是南辕北辙。唐三可谓「弱水三千只取一瓢」的典范,萧炎则见一个爱一个,典型后宫向。作为男生,固然羡慕萧炎,但也会想,一个人真能同时爱多个人吗,我是怀疑的。

相比这个,还有另一个问题困扰我多时。爱一个人是与生俱来的天赋还是后天形成的能力。当一个单身汉说没有遇到喜欢的人时,是遇不到,还是爱不了。我就从来没有过轰轰烈烈的爱情,我大概也不会为女友死去活来。有人会说,那因为不是真爱。问题是,真爱在哪。所以,陷入了死循环。

最近的八卦具惠善和安宰贤曾经多么高调,多么甜蜜,现在又的多么不堪与狼狈。世事无常,爱情更是如此,我追求永恒却不轻易相信永恒。焉识和婉喻的爱情再次浮现在我眼前,寡味开端与完美归宿形成了鲜明对比,爱情终归是唯心的经验,因人而异,未到迟暮之年,恐难有定论。

追完剧,再看阅文集团的股价,才25港币,该出手了。