Hugo快速搭博客

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

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等

先安装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/  # 不好使

然后安装nodenpm

# 参考 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

如图:


image.png

接下来运行很关键,必须:

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/footervim 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>

即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 1,Hugo 简介 搭建个人博客有很多开源的博客框架,我们要介绍的框架叫作Hugo。Hugo 是一个基于Go 语言...
    码农充电站pro阅读 1,007评论 0 2
  • 生命在于折腾,生命不息,折腾不止。 最近又开始了折腾博客,以前的文章都写在简书上,现在准备使用Hugo来搭建一个静...
    路过麦田阅读 16,283评论 0 5
  • 为了个人博客 五一期间,用 WordPress 为好朋友的公司配置了一个网站,替换原来的简易公司官网,在搭建的过程...
    chaomifan阅读 4,943评论 0 7
  • 最近准备建立一个个人博客网站,对比hexo与hugo后,决定使用Hugo静态页面生成引擎,使用的主题是tranqu...
    KXMING阅读 4,303评论 0 2
  • 本文首发于我的个人博客:Suixin's Blog Hugo是一个用Go编写的静态站点生成器,由于具有丰富的主题资...
    Sui_Xin阅读 9,535评论 1 13