Hello World
年末了,戏言给自己的圣诞礼物就是这个站点。特意去翻了账单,11 月 22 日我就在 GoDaddy 上挑选好了域名,一直拖延到今天才架起来。
这一个月的空当,我都在干嘛?
当然是玩啊
玩及摸鱼 30%:前半个月在 b 站看克苏鲁游戏视频,玩 EVE,直到 12 月 15 日显卡炸了;
处理各种倒霉事 60%:花了周末一个下午检查电脑到底哪个部件坏了,然后又花了几天联系厂家,邮寄显卡去修;EVE 中第一次被人爆了蛋;还有最让人抓狂的是建站中各种踩雷;
收集建站素材 10%:写东西变成踩雷中的放松活动。
以下就是我建站中踩雷的种种。
挑把顺手的锤子
我是电脑坏了之后想起来建站的。说到建站,我只知道 WordPress。于是 16 日,我去它的官网观察了一下。原来 WordPress 的官网有 .org 和 .com 后缀的区分。(好像很多 Linux 软件组织都这样。)一个免费,一个商业付费,搜了下很多人嫌弃它臃肿。我还去 b 站看了下别人发的“三十分钟建站”教学视频,是用 WordPress 搭配一个“国产服务器博客解决方案”(宝塔?忘记了)。国产服务器自带管理后台,网页上这里按按,那里点点,然后站就架好了,整个过程一点都不 geek。我早就买好了服务器。本来就是因为有服务器,所以才想着要么建个站吧,现在让我换成国产服务器是不可能的。总之看了半天,还是一头雾水没有什么收获。
我有那么一点点完美主义强迫症,信奉“磨刀不误砍柴工”。不管文章数目配不配得上工具吧,我就是想要又省事,又能高自定义。在没挑到顺手工具前,工期就拖延了。
于是继续闲逛。17 号到 18 号的时候,发现别人用的 Hexo 建的站也很漂亮。进而了解了一下,原来网站分动态静态。WordPress Typecho 属于动态,搭配数据库来动态的查询、调用、展示网页。Typecho 国产开源。我所知的有几位大佬是用的这个。只是最新的稳定版是 17 年,莫非现在凉了?另外动态系统还有一个 Ghost。跟 WordPress 比起来,据说要轻便一些。算是 WordPress 新的有力竞争对手。
静态站点没有数据库,通过“静态站点生成器”(static site generator)直接生成纯 html 网页文件来供浏览。优点是生成的小型网站浏览时速度较快,搬家容易。缺点是每次生成的时候都是重新生成,对于大型网站就不适合了。反正对我来说静态就够了。一番搜索之后,常用的静态站点生成器有这么几个选项:
- Jekyll 用的 Ruby,跟 GitHub 关系密切
- Octopress 基于 Jekyll
- Hexo 用的 Node.js,是一个台湾人开发的,自带中文说明
- Hugo 用的 Go,据说速度最快,不少人是从 Hexo 迁移到 Hugo 的
- Pelican 是使用 Python 编写的
观察很多人路径是从 Jekyll 到 Hexo 最后迁移到 Hugo。既然如此,我还是一开始就用 Hugo 好了。反正都不懂,干脆就看看 Google 的 Go 编写的 Hugo 到底香不香。
安装 Hugo
- 下载对应 Win 版本的 zip 包。
- 随意找个地方创建个 hugo 文件夹,并且在这个文件夹下再建两个文件夹:bin 和 sites。bin 作为软件存放地,刚刚下载好的 zip 包就解压到这里。sites 用于存放日后生成的网站。我是将 hugo 放在 D 盘根目录下。
- 添加环境变量(PATH):在 PowerShell 中,输入 set PATH=%PATH%;D:\hugo\bin
然后我居然没添加成功。不明原因!
最后还是通过鼠标点击,去“系统”里搜索环境变量添加好了。官方文档写的真的详细,仅针对 Win 的安装方法,都对新手、老手给出了不同的操作步骤。
使用
常用命令
# 定位到 sites 文件夹下,然后
hugo new site <SITENAME>
# 添加内容
hugo new <SECTIONNAME>/<FILENAME>.<FORMAT>
# 生成测试站点(默认生成在 public 文件夹下)
hugo
# 部署一个本地服务器,可用于上线前的测试,如果要显示草稿,记得加上 -D
hugo server
注意每次 hugo 生成站点之前,需要手动删除 public 文件夹下的文件,不然可能会出错。最好是把开发环境和生产环境分开,使用不同的文件夹存放测试。(这是官方说的,有啥错误,我还不知道啊)
主题
接下来是挑主题。
选用呼声比较高的 Even 吧。git clone或者(更建议)使用git submodule add之后,把主题 exampleSite 目录下的 config.toml 复制到刚建好的站点下,覆盖同名文件。
修改相应内容。先改改站点名字、分类什么的,其他的以后再设置吧。
站点根目录下的文件优先级大于主题中的文件。配置时,建议修改站点目录下的文件。主题中的内容不要调整,主要考虑原作者更新版本时,本地同步方便维护。
制作图标
图片版权动不动就出个大新闻。为了避免麻烦(一劳永逸),找了很多年前自己随手画的小黑脸表情图做成图标。这样总没问题了吧。自己画的就是萌,越看越可爱。
直到目前为止,都还算顺利,接下来就是雷区了。
上线
19 号 20 号的时候,我总算进行到部署这个步骤了。本来在前几天学习的时候,就发现部署这部分我完全不明白。都以先选主题,先做图标,先准备内容忽悠过去了。一切都准备好,到了部署这里,避不开了。
官方给出了几种部署方法。一般都是部署到 GitHub 上,对我不适用。另外官方推荐使用 rsync 部署到 VPS,步骤大概是:
-
服务器和客户端均安装好 rsync
-
使用这条语句进行部署(上传 public 内的文件至 VPS)
hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
然后我就卡住了。卡在了 win 安装 rsync 上。去下载了专为 win 设计的 cwRsync 免费版,结果不能用。
“我要开始绕路了.jpg”
内心 MMP,都到这一步了,总不能放弃吧。
先研究服务器端好不好?粗略了解了下 LAMP 和 LNMP 方案,决定试用 Nginx 进行部署。在 VPS 上安装好 Nginx 之后,无法运行,我也没深究为什么无法运行。
连续几个晚上回家都没有休息,一直在捣鼓建站,智商已经清零。这时候遇到挫折就开始动摇是不是一开始就选择错误,不应该用静态站点,Typecho 也挺好啊。有后台我就可以不用上传了啊。直接网页上发布文章,随便什么电脑都能发布,多好。
这就叫行百里者半九十。
时间到了 20 号晚上。周五了,放肆了。顺着 Typecho 的安装说明,大半夜我尝试使用 LNMP 一键安装包。结果一装装了一个多小时,中间还被我关掉重新装了一次。按照某站的方法设置了一遍。依然无法运行。
然后就失眠了。半夜一点多还没睡着。
周六白天昏昏沉沉,还好从牛角尖中钻出来,还是回归静态这条路吧。休整一天,补觉看纪录片。晚上按照国外的教学重新设置了 VPS 的用户权限。然后发现原来我是 80 端口被占用了,当然 Nginx 跑不起来。
正确的路径
直到 24 号平安夜(还真是圣诞礼物了),设置成功,主要依靠这几篇:
-
这里遇到的坑是服务器上配置的编写。按照这个教程
scp -r public droplet:~/blog实际上是把 public 整个传到了服务器。所以在 Nginx 配置中,路径应该是多一层 public 文件夹的。 -
证书设置还得靠“Let’s Encrypt”官方推荐的教程 certbot
这里遇到一个问题,还好我机智地解决了。没有卡很久。
在按照 certbot 设置好之后,服务器上提示一切正常,但实际网页就是打不开,提示说“重定向的次数过多”。
这个时候千万不要慌。
去 CloudFlare 确认下 SSL/TLS encryption mode 勾选 Full 模式,也就是“Encrypts end-to-end, using a self signed certificate on the server”就 OK 了。
教训一: 教程一类的,尽量用英文关键词查英文资料。中文毕竟属于小圈子。大多数的中文内容都像是程序员写给自己看的笔记。外行人看了简直令人头秃。
教训二: 跟着教程走,一些无关紧要的命名尽量跟着教程来,比如文件夹的名称什么的。如果自己设置的话,就要特别当心,一不小心某一步骤就忘记改成自己的名称了。
教训三: 遇到问题别死磕,多请教别人!这点最重要。
还有很重要的评论系统
静态站点评论系统是令我不太满意的。大多数人选用 disqus,墙内看不到评不了。再者有牛人编写的开源 isso,评论存在本地。
折腾到这里已经折腾不动了,暂时先用现成的 disqus 吧。以后再上 isso 或者其他。
更多的废话
为了建这个小破站,我看了一大堆的个人站点。发现原来有那么多那么多人都建好了自己的站,人手一个热闹的跟菜市场一样。虽然大部分人一年只写不到十篇,且多是 IT 技术文章。无聊内容占大多数,估计也没啥流量,但也发现了不少有趣的小品站点。也看到有些人跟我一样,不是“搞技术的”。比如有个在云南开旅店的掌柜自建的个人站点,平时晒晒旅行风景,也算是见识了不同的人生。
调试主题,搞测试非常的折腾。于是就有了第一个类别“折腾”。中途我也无数次怀疑智商,甚至回忆起了小时候题目做不出,人家 5 分钟就做出来的那种恐惧。不想前功尽弃,对自己的愤怒让我坚持下去。总之,这个站就这么建起来了。
可喜可贺,可喜可贺。
终于又可以愉快地摸鱼了。