Waline评论系统个人服务器部署

1、MySQL数据库部署

首先服务器配置好mysql数据库才行然后建立一个名为waline的数据库(注意使用utf8mb4编码),服务器对应端口要开放

mysql -u root -p

输入密码,登录成功后,创建waline数据库并指定编码:

CREATE DATABASE IF NOT EXISTS waline 
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;

执行waline数据库的初始化脚本(官方也有的,这里直接贴出所有代码),将其保存file.sql并传到服务器,记住这个文件的位置。

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
SET NAMES utf8mb4;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


# Dump of table wl_Comment
# ------------------------------------------------------------

CREATE TABLE `wl_Comment` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`comment` text,
`insertedAt` timestamp 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` boolean DEFAULT NULL,
`status` varchar(50) NOT NULL DEFAULT '',
`like` int(11) DEFAULT NULL,
`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;



# Dump of table wl_Counter
# ------------------------------------------------------------

CREATE TABLE `wl_Counter` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`time` int(11) DEFAULT NULL,
`reaction0` int(11) DEFAULT NULL,
`reaction1` int(11) DEFAULT NULL,
`reaction2` int(11) DEFAULT NULL,
`reaction3` int(11) DEFAULT NULL,
`reaction4` int(11) DEFAULT NULL,
`reaction5` int(11) DEFAULT NULL,
`reaction6` int(11) DEFAULT NULL,
`reaction7` int(11) DEFAULT NULL,
`reaction8` 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;



# Dump of table wl_Users
# ------------------------------------------------------------

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 '',
`label` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`avatar` varchar(255) DEFAULT NULL,
`github` varchar(255) DEFAULT NULL,
`twitter` varchar(255) DEFAULT NULL,
`facebook` varchar(255) DEFAULT NULL,
`google` varchar(255) DEFAULT NULL,
`weibo` varchar(255) DEFAULT NULL,
`qq` varchar(255) DEFAULT NULL,
`2fa` varchar(32) DEFAULT NULL,
`createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  • 终端中输入命令登录 MySQL,输入密码后进入 MySQL 交互界面(提示符为 mysql>)。

mysql -u 用户名 -p
  • 选择要操作的数据库,这里是waline
use 数据库名;		
  • 执行 .sql 文件(注意路径需用绝对路径):
source /path/to/your/file.sql;
  • 退出mysql
exit;

2、Docker部署

为了方便部署,这里使用了docker-compose部署,docker-compose.yml文件如下

version: '3'

services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8360:8360
volumes:
- ${PWD}/data:/app/data
environment:
#数据库配置
MYSQL_HOST: 'MySQL连接地址'
MYSQL_PORT: '端口号'
MYSQL_DB: '数据库'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '密码'
MYSQL_PREFIX: 'wl_'
MYSQL_CHARSET: 'utf8mb4'
MYSQL_SSL: 'false'
TZ: Asia/Shanghai
#改一下MySQL连接地址、端口号、数据库、密码就行了,当开启SSL是MYSQL_SSL: 'false'这个要变,其他默认即可

#邮箱配置,163为例
SMTP_SERVICE: '163'
AUTHOR_EMAIL: '邮箱地址'
SMTP_HOST: 'smtp.163.com'
SMTP_PORT: '465'
SMTP_USER: '邮箱地址'
SMTP_PASS: '第三方授权登陆token'
SMTP_SECURE: 'true'
#将邮箱地址替换为自己的,这里不是邮箱登录密码,而是需要在 163 邮箱中单独获取的 SMTP 授权码:登录 163 邮箱 → 进入「设置」→ 开启「POP3/SMTP/IMAP」服务按照提示完成验证(如短信验证),生成授权码后复制到这里,其他不变。

# 站点与权限配置
SITE_URL: 'https://zxzlimit.github.io'
SITE_NAME: 'zxzlimit'
SENDER_NAME: 'zxzlimit'
SECURE_DOMAINS: 'zxzlimit.github.io'
LEVELS: '0,10,20,50,100,200' # 50+ 为管理员权限
#SECURE_DOMAINS最好也把服务器的ip添加进去用英文逗号隔开放后面,域名也要写好


# 新增评论权限配置
ALLOW_ANONYMOUS: 'true' # 允许匿名发布
REVIEW: 'false' # 关闭审核,直接发布
AKISMET_KEY: '' # 关闭反垃圾拦截(避免正常评论被误判)

之后使用docker-compose up 命令启动看看有没有报错,如果没有报错,使用docker-compose up -d命令后台启动即可。服务端启动成功之后访问 http://ip:8360/ ,会看到默认的效果展示

image-20251015105303514

然后先按 Ctrl+C 停止当前前台运行的服务,加 -d 参数,后台守护进程模式启动

docker-compose up -d 

3、配置到hexo-next的博客当中

因为waline不属于hexo-next的默认配置当中,所以还要在博客项目中下载一些插件

npm install @waline/hexo-next

然后在next主题下的配置文件中,将waline的配置改一下 serverURL即可,因为http和htttps不互通,还需要将配置一下https

waline:
enable: true
serverURL: https://ip:8360/
pageview: true
pageSize: 10
meta: ['nick', 'mail', 'link']
requiredMeta: []
locale:
placeholder: 欢迎留言~
emoji:
- https://unpkg.com/@waline/emojis@1.1.0/weibo
- https://unpkg.com/@waline/emojis@1.1.0/bilibili