博客搭建过程(二)
1 静态博客搭建(Hugo)
选择Hugo的原因前面有写,没想到本来以为很简单的静态博客也会遇到坑,无语,还是自己太菜了啊。
1.1 Hugo本地安装
- 首先通过
homebrew安装Hugo。 - 然后通过
hugo version命令检查一下Hugo的版本。 - 然后是通过
hugo new site <blog>命令生成项目目录。 - 然后是安装主题,这是必须的。
- 通过
Git安装比较方便,要先在Github上创建一个仓库,用来存放博客源文件。 - 然后执行
git init命令。 - 然后安装主题(这里用的是Anubis主题)。
git submodule add https://github.com/mitrichius/hugo-theme-anubis.git themes/anubis - 安装后需要启用主题,方法是将主题名称写入到根目录下的默认配置文件 config.yml 中
echo 'theme = “anubis”’ >> config.toml。 - 现在可以生成第一篇文章了
hugo new posts/my-first-post.md。 - 想本地看的话,就执行
hugo server,然后去1313端口查看,不过要把markdown里的draft改成false。
1.2 托管到Github Pages(后期放弃)
-
发布到
GitHub Pages上去,稍微有点复杂,容易踩坑。 -
先去
GitHub上再建一个仓库,名字有要求,不想花钱就得public。 -
这里有个超级大坑,就是静态目录的仓库创建的时候,不能是空仓库,不然之后添加
Git子模块会报错,手动搞非常麻烦,解决方法是创建的时候,选择添加readme文件。 -
然后把配置文件里的
baseUrl改成自己的地址,很容易忘记。 -
先去到项目文件夹,这个时候只有
git init,没有添加远程仓库git remote add origin XXX.git。 -
然后推送一波:
git initgit remote add origin https://github.com/Github 用户名/Github 用户名.github.io.gitgit add .git commit -m '[介绍,随便写点什么,比如日期]'git push -u origin master -
然后如果你这个时候,生成了
public文件夹,要先删掉,这一步不能少。 -
然后执行
git submodule add -b main https://github.com/<USERNAME>/<USERNAME>.github.io.git public -
如果远程仓库是空的,会失败。
1 2 3warning: You appear to have cloned an empty repository. fatal: 'origin/main' is not a commit and a branch 'main' cannot be created from it Unable to checkout submodule 'public' -
如果之前创建仓库的之后,添加了
readme文件就不会有这个问题。 -
然后编辑自动执行脚本,运行,成功!
1.3 实现博客的中英文切换
- 首先,
Hugo本身是支持多语言的。 - 如果用的主题,原生不支持多语言的话,关键在于
Hugo的TOML配置文件的修改,可以实现博客整体的多语言切换。 - 某一篇文章单独的双语言切换,需要主题的原生支持。
- 例如,我最开始用的主题,
Anubis,支持全站的语言切换,但是不支持单独一篇文章的语言切换,后来联系作者,他表示需要他做一些工作,然后就可以单篇文章切换语言。
1.4 主题变更
- 一开始我用的是一个在
Hugo主题网站随便找的一个比较简洁的主题,叫Anubis,但是过于简单,主要还是多语言这里做的不是太好。 - 后面试过Eureka,也是一个非常不错的主题,不过设计这块没有戳中我。
- 最终选择了LoveIt,一个非常强大非常灵活的主题。
1.5 LoveIt主题报错无法使用
- 大坑报错什么
failed to render pages
1.6 托管到Vercel
-
GitHub Pages托管简单,但是有国内访问慢,不容易被百度收录等问题,可考虑其他托管平台,例如Vercel或者Netlify,查了点资料似乎前者更好。 -
(经实际测验,同时部署的情况下,
Netlify的DNS会优先于Vercel,遂放弃Netlify) -
值得注意的是,
Vercel的Hugo版本比较低,不支持LoveIt主题,需要手动指定一下,在项目根目录添加vercel.json文件,并加入以下内容。
|
|
Netlify也是一样的问题 在项目根目录添加netlify.toml文件,并加入以下内容。
|
|
1.7 托管后国内无法访问
- 解决国内无法访问的问题,关键在于添加的域名,要带
www,然后把阿里云的解析,解析道Vercel的DNS,而不是IP地址,可实现国内正常访问,自带Https,舒服。
1.8 Valine评论系统异常
- 还要解决一个
Valine评论异常:Code 403: 访问被API域名白名单拒绝,请检查你的安全域名设置,原因是Valine评论基于LeanCloud,主题里默认用的是别人的账户,没有自己注册,自然不在别人的白名单里。
- Valine有隐私问题,目前尚未解决,但是可以手动处理一下,实测已经可以用了。
1.9 更换Waline评论系统
Valine许久不更新,还有各种各样的问题,决定换成Waline,毕竟是为了解决Valine的问题而生,而且更好看一点。
按照大佬的指导,一步一步完成
serverUrl不要忘了https://,不然不行。。。- 多语言支持,页面顶部的评论数没有修改,需要改一下。
|
|
- 下一步是改评论框的样式,现在这样太丑了,原来
Valine的样式比较好看,而且支持明暗主题变化,写在后面。
1.10 LoveIt主题样式修改
1.10.1 图标删除
- 删除主页的头像,配置文件中
avatarURL = ""即可。 - 删除页脚主题的图标,找到
/themes/LoveIt/layouts/partials/footer.html这个文件,删除15行的标签<i class="far fa-kiss-wink-heart fa-fw"></i>即可。 - 删除文章作者前的头像图标
- 删除
/themes/LoveIt/layouts/_default/summary.html中第30行的”Icon" (dict "Class" "fas fa-user-circle fa-fw") - 删除
/themes/LoveIt/layouts/_default/single.html中第36行的"Icon" (dict "Class" "fas fa-user-circle fa-fw")
- 删除
- 删除标签页的图标,去到
/themes/LoveIt/layouts/partials/link.html,把4到17行的href后的路径全部干掉即可。
1.10.2 许可证协议更改
- 协议链接改为
https://creativecommons.org/licenses/by-nc-nd/4.0/
1.10.3 背景颜色修改
- 感觉浅色主题背景颜色太白,刺眼,改灰一点
- 修改
/themes/LoveIt/assets/css/_variable.scss中的13行颜色变量即可,改成#f1f0f0 - 再把
/themes/LoveIt/assets/css/_variable.scss中第56行的Header颜色加深一点,改成#f9f9f9
- 修改
- 感觉深色主题背景颜色不好看,模仿少数派
- 修改
/themes/LoveIt/assets/css/_variable.scss中的14行颜色变量即可,改成#232222 - 再把
/themes/LoveIt/assets/css/_variable.scss中第57行的Header颜色加深一点,改成#2F2D2D
- 修改
1.10.4 字体修改
- 字体大小修改
- 把页面标题的字体改大一点
/themes/LoveIt/assets/css/_page/home.scss中第116行,改成1.6rem/themes/LoveIt/assets/css/_page/_single.scss中第6行,改成1.8rem
- 把副标题的字体改小一点,主题的
/themes/LoveIt/assets/css/_page/_home.scss文件里中第34行,修改为font-size: 2rem; - 把作者名字字体改小一点,
/themes/LoveIt/assets/css/_page/_single.scss中的第34行,改成0.875rem - 把文章目录字体改小一点,
/themes/LoveIt/assets/css/_variable.scss中的第75行,改成0.8rem - 把菜单字体改粗一点,
/themes/LoveIt/assets/css/partial/_header.scss中的第50行,增加font-weight: 400;
- 把页面标题的字体改大一点
- 字体粗细修改
- 正文字体改细一点,修改
/themes/LoveIt/assets/css/_variable.scss中的9行字体粗细即可,改成300 - 首页标题字体改细一点,
/themes/LoveIt/assets/css/_home.scss中的119加入font-weight: 400; - 单篇文章标题字体改细一点,
/themes/LoveIt/assets/css/_page/_single.scss中的第7行改成font-weight: 400;
- 正文字体改细一点,修改
- 字体颜色修改
- 暗色背景下,把字体颜色改亮一点,修改
/themes/LoveIt/assets/css/_variable.scss中的18行字体颜色即可,改成#B6B6B6 - 浅色背景下,修改摘要字体颜色,注释
/themes/LoveIt/assets/css/_home.scss中的130行即可
- 暗色背景下,把字体颜色改亮一点,修改
1.10.5 标题目录修改
_custom.scss实现,基本靠雨临大佬的博客。-
把
/themes/LoveIt/assets/css/_single.scss中的第106行到108行,111行,117行全部注释掉 -
把
/themes/LoveIt/assets/css/_partial/_single/_toc.scss中的17行注释掉,28行改成padding-left: 1rem; -
这里是我的
_custom.scss
|
|
1.10.6 Waline评论框样式修改
LoveIt主题默认不支持Waline,需要手动加入。
- 默认的Waline,样式不是很喜欢,想改成默认Valine的样式。
_custom.scss文件里是不会生效的,至少我这里是这样,会被覆盖,不知道如何解决,只能去修改引入的Waline.min.js,配置文件里的路径为https://cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js,把这个文件下载下来,修改完再上传到某个地方,重新引入配置文件即可(我用的是阿里云OSS)。- 修改评论框背景:删除.
v[data-class=v] .vpanel {}中的background: var(--waline-bgcolor); - 修改输入框高亮:删除
.v[data-class=v] .veditor:focus, .v[data-class=v] .vinput:focus {}中的background: var(--waline-bgcolor-light); - 修改字体颜色:删除
:root {}中的--waline-text-color: #444; - 修改评论者名称颜色:删除
v[data-class=v] .vcard .vhead span.vnick {}中的color: var(--waline-dark-grey);
1.10.7 增加二级菜单
1.10.8 添加站点运行时间
大佬的博客中只给出了中文的站点运行时间,这里给出根据主题切换的中英文站点运行时间。
custom.js文件
|
|
footer.html文件
|
|
1.10.9 增加标签页效果与点击效果
1.10.10 增加正文宽度
- 在
/themes/LoveIt/assets/css/_core/_media.scss中的第3行与第9行,将宽度改为150%。
1.11 图片展示
- 有两种方式,一是在文档的同目录下,建立
images文件夹,把图片放进去,使用相对路径放到markdown中,这样的好处是编写的时候可以预览,缺点是部署到网页后,图片不会自适应,会保持原大小,居左。 - 另一种方式是使用内置
Shortcodes的figure标签,或者扩展Shortcodes中的image标签,图片必须放在assets目录下的images目录中,缺点是不能预览,好处是可以自适应。 - 比较各种样式之后,选择
figure。 - 【2021/11/15更新】figure标签不生效,需要使用image,原因未知。
1.12 显示数学公式
-
不知道为什么,按照文档的默认方式无法显示数学公式。
-
参考大佬的解决方法解决了这一问题。
-
在
/themes/LoveIt/layouts/partial/目录下,加入mathjax.html1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35<script type="text/javascript" async src="https://cdn.bootcss.com/mathjax/2.7.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$','$$'], ['\[','\]']], processEscapes: true, processEnvironments: true, skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'], TeX: { equationNumbers: { autoNumber: "AMS" }, extensions: ["AMSmath.js", "AMSsymbols.js"] } } }); MathJax.Hub.Queue(function() { // Fix <code> tags after MathJax finishes running. This is a // hack to overcome a shortcoming of Markdown. Discussion at // https://github.com/mojombo/jekyll/issues/199 var all = MathJax.Hub.getAllJax(), i; for(i = 0; i < all.length; i += 1) { all[i].SourceElement().parentNode.className += ' has-jax'; } }); </script> <style> code.has-jax { font: inherit; font-size: 100%; background: inherit; border: inherit; color: #515151; } </style> -
修改同一目录下的
header.html,第二行加入{{ partial "mathjax.html" . }}
1.13 博客收录
-
让
Internet Archive收录自己的网站,比较简单 -
让搜索引擎能检索到自己的网站,要先验证自己是网站所有者,要去
DNS解析服务商那边提供验证,粘贴谷歌给的TXT,然后主题自带的sitemap,在谷歌的控制台上传即可。 -
百度收录竟然要真实姓名,手机QQ微信等,不想弄了,就让百度搜索不到吧。
1.14 文章链接与SEO
-
LoveIt默认的文章链接使用标题,而中文标题会乱码且不利于SEO,所以使用slug的方式。 -
先在配置文件里将
Permalinks改成posts = “:slug.html”,然后在每篇文章的yaml头信息里添加slug即可。