古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

博客换新装

时间: 2021-11-07   |   分类: 博客搭建   | 字数: 2194 字 | 阅读约: 5分钟 | 阅读次数:

之前的个人博客看时间长了,就觉得不好看了,再加上之前的页面排版不是很好看,也没有评论功能,于是就想换一个主题。
经过一番查找,在hugo官方主题库,有一个作者移植了hexo的next主题过来,觉得这个挺不错的,就切换了过来,以下就是切换主题的过程。

一、下载主题

切换到站点的themes目录下,执行
git clone --recurse-submodules https://github.com/elkan1788/hugo-theme-next.git命令克隆本主题

在国内可使用Gitee仓库地址
git clone --recurse-submodules https://gitee.com/lisenhui/hugo-theme-next.git

先预赛一下效果 new-blog

二、配置文件

拷贝hugo-theme-next目录下的两个目录config和content到站点根目录下面,在*.toml文件中修改参数为我们自己的即可

Tips: 如果将主题拷贝到themes目录下,可以随时拉取最新代码以更新作者的修改,但此款主题我看作者已经优化的很好了,所以我手动把主题目复制到 我的主目录下,这样我就可以自定义某些修改了,有些地方改成我自己想的样子

三、个性化页面

1.主题模板修改

主题目录如下: new-blog2 我们在content下新增的文档,编译的时候都会按layouts设定好的样式解析成html静态文件,大家可以对照看哪些地方需要改动,如果有基本的前端技术知识, 直接修改模板样式即可。

2.小图标使用

值得一提的是类似以下小图标的来源? new-blog3 因为这类图标只配置了一个样式,如下,刚开始一直很好奇,是怎么做到的:

.fa-home:before {
    content: "\f015";
}

后来通过F12浏览器查看元素信息,发现这个样式来源于一个link引入的css文件:font-awesome.min.css
好的,百度一下awsome, 是一个字体、小图标、矢量图标等的开源库,免费使用:fontawesome官方
只需去这个网站文档寻找图标对应的码值,配置上即可,不得不说,方便了好多

3.分享addthis配置

addthis官网:addthis
我们只需要去该网站定义要分享的站点,得到add this id,配置到toml文件中就可以,效果如下图:
new-blog5

四、评论系统的接入

1.Waline介绍

Waline - 一款从 Valine 衍生的带后端评论系统。可以将 Waline 等价成 With backend Valine.

  • 快速
  • 真·安全
  • Markdown 语法支持
  • 轻量易用
  • 免费部署
  • 多种部署部署方式和存储服务支持,每列选择一项多达 84 种部署方式任君选择

2.使用Waline

如果服务端、数据库完全部署在waline官方,参考以下文档:https://waline.js.org/guide/get-started.html
个人开发版完全免费,只需按照文档指引配置即可

五、独立部署Waline

这里我选择使用 Docker 部署 Waline Server

1.安装docker并镜像加速

参考我的book: docker安装及加速

2.docker-compose安装

由于后续容器构建使用docker-compose,这里也需要安装docker-compose,我用的版本是1.26.2
参考我的book: docker-compose安装

3.nodejs安装

由于waline server是nodejs开发的,后续构建waline server镜像的时候,需要用到npm,我们先安装nodejs,目前稳定版本为v16.13.0

wget https://nodejs.org/dist/vv16.13.0/node-vv16.13.0-linux-x64.tar.xz    // 下载
tar xf  node-v16.13.0-linux-x64.tar.xz       // 解压
cd node-v16.13.0-linux-x64/                  // 进入解压目录
./bin/node -v                               // 执行node命令 查看版本

v16.13.0  

ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/  //创建软链
ln -s /usr/software/nodejs/bin/node   /usr/local/bin/ //创建软链

4.doker-compose安装mysql

  • compose-mysql.yml
version: "3.5"

services:
  mysql:
    image: mysql:5.7.26
    container_name: waline-mysql
    restart: always
    privileged: true
    environment:
      TZ: 'Asia/Shanghai'
      MYSQL_ROOT_PASSWORD: your pwd
    ports:
        - 3306:3306
    volumes:
      - '/opt/docker-compose-mysql/mysql/conf:/etc/mysql/conf.d'
      - '/opt/docker-compose-mysql/mysql/data:/var/lib/mysql'
      - '/opt/docker-compose-mysql/mysql/log:/var/log/mysql'
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
  • 启动容器
docker-compose -f compose-mysql.yml up -d 
  • 初始化数据库
CREATE DATABASE waline DEFAULT CHARACTER SET utf8mb4;

CREATE TABLE `wl_Comment` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `comment` text,
  `insertedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` varchar(100) DEFAULT '',
  `link` varchar(255) DEFAULT NULL,
  `mail` varchar(255) DEFAULT NULL,
  `nick` varchar(255) DEFAULT NULL,
  `pid` int(11) DEFAULT NULL,
  `rid` int(11) DEFAULT NULL,
  `sticky` int(11) DEFAULT NULL,
  `status` varchar(50) NOT NULL DEFAULT '',
  `ua` text,
  `url` varchar(255) DEFAULT NULL,
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `wl_Counter` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `time` int(11) DEFAULT NULL,
  `url` varchar(255) NOT NULL DEFAULT '',
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `wl_Users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `display_name` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `type` varchar(50) NOT NULL DEFAULT '',
  `url` varchar(255) DEFAULT NULL,
  `avatar` varchar(255) DEFAULT NULL,
  `github` varchar(255) DEFAULT NULL,
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

5.构建waline镜像

  • 拉取代码,构建镜像
git clone https://github.com/lizheming/waline.git

# 构建镜像, 最后面的点 . 别落下
$ cd waline
$ docker build -t your-name/waline -f packages/server/Dockerfile .

# 如果卡着不动,将packages/server/Dockerfile 文件中的这行注释放开,使用阿里镜像
npm config set registry https://registry.npm.taobao.org; \

6.启动waline server容器

# compose-waline.yml文件
version: '3.5'

services:
  waline:
    container_name: waline
    image: your-name/waline:latest
    restart: always
    ports:
      - 8360:8360
    volumes:
      - ${PWD}/data:/app/data
    environment:
      TZ: 'Asia/Shanghai'
      SITE_NAME: 'your site name'
      SITE_URL: 'your site url'
      SECURE_DOMAINS: 'your domains'
      AUTHOR_EMAIL: 'your email'
      #COMMENT_AUDIT: "true"
      MYSQL_HOST: mysql-ip
      MYSQL_PORT: 3306
      MYSQL_DB: waline
      MYSQL_PREFIX: wl_
      MYSQL_USER: root
      MYSQL_PASSWORD: your password
      MYSQL_CHARSET: utf8mb4

启动容器

docker-compose -f compose-waline.yml up -d

此配置文件包含常用配置,如需要其他配置项,可查看官方文档: waline服务端配置

7.nginx配置反向代理

server {
        listen 80;
        listen 443 ssl;
        server_name waline.zhaojq.top;
        if ($server_port !~ 443){
            rewrite ^(/.*)$ https://$host$1 permanent;
        }

        # SSL setting
        ssl_certificate your ssl pem;
        ssl_certificate_key your ssl key;

        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        add_header Strict-Transport-Security "max-age=31536000";

        # proxy to 8360
        location / {
            if ( $request_uri = / ) {
                rewrite ^(/.*)$ https://$host$1ui/;
            }
            proxy_pass http://127.0.0.1:8360/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header REMOTE-HOST $remote_addr;
            add_header X-Cache $upstream_cache_status;
            # cache
            add_header Cache-Control no-cache;
            expires 12h;
       }
   }

Tips: 由于waline客户端和服务端是独立使用的,客户端如果配置强制用户登录才能评论,对服务端路径为/的请求是不生效的,因为/请求下用户仍然可以 匿名评论,可能waline为了方便用户使用,但我认为,这是waline的一个bug,所以我对该路径进行了强制重定向到登录注册页面,添加了以下配置

            if ( $request_uri = / ) {
                rewrite ^(/.*)$ https://$host$1ui/;
            }

8.客户端配置

页面只需把我们代理好的服务端路径配置到 页面中就可以
页面也可以设置参数,参考文档:waline客户端配置

new Waline({
          el: '#wcomments', 
          visitor: true, 
          avatar:'wavatar', 
          avatarCDN:'https://sdn.geekzu.org/avatar/', 
          avatarForce:!1, 
          wordLimit: '[1,200]',
          placeholder: ' {{ i18n "CommentPh" }} ',
          requiredMeta: ['nick', 'mail'],
          serverURL: "{{ .Site.Params.Comment.WalineSerURL }}", 
          lang: "{{ .Page.Lang }}",
          dark: 'auto',
          login: "{{ .Site.Params.Comment.Login }}",
          wordLimit: 100,
          uploadImage: false
        });

效果如下图 new-blog4

#hugo#
QQ扫一扫交流

标题:博客换新装

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Python安装
北方小年
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 一、下载主题
  • 二、配置文件
  • 三、个性化页面
    • 1.主题模板修改
    • 2.小图标使用
    • 3.分享addthis配置
  • 四、评论系统的接入
    • 1.Waline介绍
    • 2.使用Waline
  • 五、独立部署Waline
    • 1.安装docker并镜像加速
    • 2.docker-compose安装
    • 3.nodejs安装
    • 4.doker-compose安装mysql
    • 5.构建waline镜像
    • 6.启动waline server容器
    • 7.nginx配置反向代理
    • 8.客户端配置
© 2019 - 2024 京ICP备19012088号-1
0%