1 整个ECS
Ubuntu
就可以。
2 安装Hugo
本来用apt
安装,结果版本更新有点麻烦,后来用官网的snap
方式安装,直接最新版。
sudo snap install hugo
之前的apt
的可能需要先删掉,否则混乱。
3 使用
3.1 初始化
hugo new site myweb
cd myweb
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
echo "theme = 'ananke'" >> hugo.toml
hugo server
启动可以使用参数:
# 可以开个tmux,或者-D后台
hugo server --bind 0.0.0.0 --port 8080
还有启动直接显示文章草稿的,我觉得没必要。
3.2 发布文章
cd myweb
hugo new content posts/my-first-post.md
会在content目录下建立md
文件,编辑一下:
+++
title = '我的文章'
date = 2024-09-12T22:33:19+08:00
draft = false
categories = ['生活']
tags = ['心情']
+++
### 这里是正文了
MD格式,好好吃饭
也可以用yaml
格式:
---
title: 我的文章
date: 2024-09-12T22:33:19+08:00
draft: true
categories:
- 生活
tags
- 心情
image: posts/abc.png
---
### 这里是正文了
MD格式,好好吃饭
题图放在posts/abc.png
,自行组织一下目录。
注意,新文章Hugo检测不到,无法热更新,需要重启服务。draft
设置为false
才会默认显示。
如果发图片,可以这样组织文件:
content/
├── gallery
│ └── my-first-gallery
│ ├── IMG_0934.JPG
│ ├── IMG_5925.JPG
│ └── index.md
命令为:
hugo new content gallery/my-first-gallery/index.md
如果插入bilibili视频,或者插入自己的html,可以这样:
# 在hugo-theme-stack/layouts/shortcodes目录放入自己编辑的my.html
# 在正文引入:
{{< my >}}
{{< bilibili VIDEO_ID PART_NUMBER >}}
{{< quote author="A famous person" source="The book they wrote" url="https://en.wikipedia.org/wiki/Book">}} blabla
{{< /quote >}}
3.3 主题
本来准备使用官网的blowfish
,不知道是不是因为版本问题,总是没成功。最终选择安装hugo-theme-stack
主题。参考官网https://stack.jimmycai.com/guide/getting-started
,安装:
cd myweb
git submodule add https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack
编辑下配置vim config.toml
。
把mainSections
改成posts
,并自己上传头像至hugo-theme-stack/assets/img
,改一下sidebar-avatar-src
。
去https://realfavicongenerator.net/
生成了一组favicon
,放在hugo-theme-stack/static
目录下(自己建个目录),代码放在hugo-theme-stack/layouts/partials/head/custom.html
,如下:
<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
3.4 评论
使用waline
,参考官网,暂时借用vercel
的服务器。
# https://waline.js.org/guide/get-started/#vercel-%E9%83%A8%E7%BD%B2-%E6%9C%8D%E5%8A%A1%E7%AB%AF
# 注意,缺点是国内无法访问,如下有解决方案,应该是需要域名
# https://izumi.vip/2022/11/12/Waline%E5%9B%BD%E5%86%85IP%E6%97%A0%E6%B3%95%E8%AF%84%E8%AE%BA%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/index.html
# 或者考虑官网的独立部署waline
大概是:
- 注册LEAN,获取3个key
- 注册并配置vercel
- 把评论app的web地址写到
config.yaml
里(可以考虑绑定域名)
# Waline client configuration see: https://waline.js.org/en/reference/client/props.html
waline:
serverURL: https://yourwaline.vercel.app/
lang: zh-CN
visitor: true
avatar:
emoji:
- https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo
requiredMeta:
- nick
- mail
locale:
admin: 管理员
placeholder: 🎉欢迎评论~
sofa: 赶紧抢个沙发~
但是vercel
不方便访问,折腾到最后决定独立部署在本地。
3.4.1 配置nvm等
mac
下这个应该挺好https://nodejs.org/zh-cn/download/package-manager
。
终端如果想飞机可以:
alias proxy='export all_proxy=socks5://127.0.0.1:1086'
alias unproxy='unset all_proxy'
# 详看https://www.clloz.com/programming/assorted/2020/09/15/terminal-proxy-configure/
Linux继续看下面的,先安装nvm,参考:
# https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
接下来设置taobao镜像,哪个好使用哪个:
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/ # 好使
nvm node_mirror https://npmmirror.com/mirrors/node/ # 不好使
nvm npm_mirror https://npmmirror.com/mirrors/npm/ # 不好使
然后安装node
和npm
:
# 参考 https://nodejs.org/en/download/package-manager
nvm install 20
node -v # should print `v20.17.0`
npm -v # should print `10.8.2`
npm get registry # 查看源,参考https://www.cnblogs.com/Phil-Long/p/17750816.html
3.4.2 安装运行waline
终于到了正题:
# 参考 https://waline.js.org/guide/deploy/vps.html#%E7%9B%B4%E6%8E%A5%E8%BF%90%E8%A1%8C-%E6%8E%A8%E8%8D%90
cd projects/waline
npm install @waline/vercel
node node_modules/@waline/vercel/vanilla.js
# 修改下host为0.0.0.0和端口,去云服务器开一下防火墙
vim node_modules/thinkjs/lib/config/config.js
vim ~/.bashrc # 添加环境变量,因为是独立部署,所以不需要LEAN_ID/LEAN_KEY/LEAN_MASTER_KEY这些
# 参考 https://waline.js.org/guide/database.html#tidb,下载sqlite文件,后面也考虑MySQL
export SQLITE_PATH=/root/projects/waline
export JWT_TOKEN=a123456
如图:
接下来运行很关键,必须:
cd ~/projects/waline
SQLITE_PATH=/root/projects/waline JWT_TOKEN=a123456 node node_modules/@waline/vercel/vanilla.js
这是因为waline会另起一个线程,导致外面设置的环境变量不起作用,需要运行的时候写变量。否则会报如下错误:
Not initialized
at request (/root/projects/waline/node_modules/leancloud-storage/dist/node/request.js
3.4.3 使用
在之前的themes/hugo-theme-stack/config.yaml
配置好waline
即可,一般是8360端口,懒得动了。可以匿名评论,可以注册评论,第一个注册的将会成为管理员,如果不爽可以把整个库删掉重来,自己的方便。这里有查看sqlite的小脚本:
import sqlite3
connection = sqlite3.connect('waline.sqlite')
cursor = connection.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()
print("Tables in the database:")
for table in tables:
print(table[0])
cursor.close()
connection.close()
3.5 其他widgets
如图,从exampleSite整个复制过来的page
文件夹。
content/
├── gallery
│ └── my-first-gallery
│ ├── IMG_0934.JPG
│ ├── IMG_5925.JPG
│ └── index.md
├── page
│ ├── about
│ │ ├── index.md
│ │ └── index.zh-cn.md
│ ├── archives
│ │ └── index.md
│ ├── links
│ │ ├── index.md
│ │ └── ts-logo-128.jpg
│ └── search
│ └── index.md
然后编辑config.toml
:
widgets:
homepage:
- type: archives
params:
limit: 5
- type: search
- type: categories
params:
limit: 10
- type: tag-cloud
params:
limit: 10
page:
- type: toc
应该就增加了一些页面,可继续自行编辑内容。
3.6 ICP备案
到主题的目录cd themes/hugo-theme-stack/layouts/partials/footer
,vim footer.html
,如下:
{{/* T "footer.builtWith" (dict "Generator" $Generator) | safeHTML */}} <br />
{{/* T "footer.designedBy" (dict "Theme" $Theme "DesignedBy" $DesignedBy) | safeHTML */}}
<b><a href="https://beian.miit.gov.cn/" target="_blank">京ICP备1234567890号</a></b>
即可。