1.什么是waline评论系统

首先简单解释一下什么是waline评论系统,它是一款简洁、安全轻量级的独立评论系统。可以适配各类博客系统,进行单独评论添加,它的官网如下[waline]( Waline),里面有快速上手教程,教大家如何利用免费的Vercel部署的详细教程,如果你的博客系统也是利用vercel免费服务器部署的,那推荐直接采用官网快速上手的教程。如果你的博客系统和我一样部署在阿里云ECS服务器上,那么我强烈建议独立部署一个waline在已有的ECS服务器上面,不仅可以更好利用现有资源,同时更加安全可靠稳定,大大提高评论响应速度,毕竟免费Vercal不仅性能较差,同时因为国内GFW的关系,部署的评论系统访问并不稳定 ,并且阿里云部署的博客和vercal独立评论系统还有跨域访问的安全隐患。如果你是HEXO搭建的静态博客,那么可以完全按照我的步骤利用阿里云ECS服务器搭建独立waline博客评论系统,让我们直接开始吧。

2.部署Waline评论系统步骤

那么如何在阿里云ECS部署Waline,总体步骤如下:1.配置数据库,2.部署waline,3.修改访问地址。只要三步即可部署完成,每一步都会详细配置图文解说,如果你的静态博客就是用HEXO搭建的,哪怕新手小白也可部署成功,如果你的博客系统不是HEXO,那么第三步修改访问地址的方法,需要单独网上查找攻略配置,其他步骤配置是完全通用的,这个教程绝对是全网最详细的针对阿里云ECS服务器部署Waline教程。

2.1.配置数据库

这里建议采用docker配置一个新的数据库,即使你环境已经配置了mysql也不会冲突影响,但是如果你不想配置新的docker容器的mysql,可以直接跳到目录中的2.1.3初始化数据库。

2.1.1配置docker

配置数据库前,我们可以提前在阿里云ECS上面开启一下,我们可能用的到的端口4306和8360,阿里云ECS安全组默认是关闭的,需要手动添加一下,开启端口教程 官网教程,然后我们再在阿里云ECS服务器(Linux系统)上简单配置一下docker环境,如果你服务器上已经配置docker或者不确定是否配置docker,可以通过命令行查看,当前docker是否配置信息。

1
sudo docker -v

如果你已经安装过则会显示类似如下信息,则可以跳过此步骤

执行命令后的显示信息:

1
2
[root@root ~]# sudo docker -v 
Docker version 25.0.3, build 4debf41

如果没有安装docker,按照如下操作即可

运行如下,下载docker-ce的yum源。

1
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker。

1
sudo yum -y install docker-ce

然后也执行一下sudo docker -v查看是否安装成功。

执行如下命令,启动使能docker,这样你的docker容器就能跟随系统开机自启动。

1
2
sudo systemctl start docker
sudo systemctl enable docker

查看docker是否启动成功,显示active (running) 说明正常激活运行中

1
sudo systemctl status docker

执行命令后的显示信息:
[root@root ~]# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-02-12 14:09:24 CST; 24h ago
Docs: https://docs.docker.com
Main PID: 21153 (dockerd)
Memory: 1.5G

如果你的ECS系统不是CentOS 7系统,而是其他版本可以参考阿里云官方文档安装指南Linux安装Docker并使用

2.1.2配置docker-Mysql

在服务器上执行如下命令行

1
docker pull mysql:5.7

这时候就体现docker的好处了,即使你原来环境配置了mysql数据库,通过docker启动新的mysql可以不影响原来数据库,同时可以指定Mysql版本保证配置环境的相同,避免各种不兼容问题。
我们通过如下命令行开始创建运行mysql数据库容器,一次性复制该命令行,不要分段执行,全复制上以后回车即可。

1
2
3
4
5
6
7
8
docker run -p 4036:4306 --name mysql \
--restart=always \
-e TZ=Asia/Shanghai \
-v /mydocker/mysql/conf:/etc/mysql/conf.d \
-v /mydocker/mysql/logs:/var/log/mysql \
-v /mydocker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

具体参数说明如下:
-p 4306:4306:将主机的4306端口映射到docker容器的4306端口,为了避免和mysql常用端口3306冲突,我建议使用4406,也可以按照你需求,采用其他未占用端口启动即可。
–name mysql:设置docker容器的名称,这里设置的容器名称是mysql,你也可以修改为其它,这个容器名称需要记得,进入容器用的到容器名称
–restart=always:设置自启;
-e TZ=Asia/Shanghai:更改时区
-e MYSQL_ROOT_PASSWORD=123456:这里123456为你要设置的root用户密码,请记住这个密码,到时候登录mysql会有用,如果没有修改,那密码就是现在配置的123456,mysql密码可以修改更新,所以当下使用配置123456也不会影响。
-d mysql:5.7 : 运行的mysql版本信息
–character-set-server=utf8mb4 :设置Mysql字符集
–collation-server=utf8mb4_unicode_ci:设置Mysql校对集
-v /mydocker/mysql/conf:/etc/mysql/conf.d \ -v /mydocker/mysql/logs:/var/log/mysql \ -v /mydocker/mysql/data:/var/lib/mysql \:
挂载相应的目录,格式为-v 主机目录:容器内目录

如果没有提示错误,那就配置成功,我们可以通过命令查看当前mysql容器信息

1
docker ps -a

正常配置成功,显示应该类似这样,name就是我们配置的容器名称
执行命令后的显示信息:

1
2
3
[root@root vhosts]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
608effc0382b mysql:5.7 "docker-entrypoint.s…" 26 hours ago Up 19 hours 3306/tcp, 33060/tcp, 0.0.0.0:4306->4306/tcp mysql

我们可以通过容器名称(mysql)或者容器ID(608effc0382b)配置如下命令进入Mysql容器,效果是一样的。

1
sudo docker exec -it mysql /bin/bash
1
sudo docker exec -it 608effc0382b /bin/bash

我们暂时不需要进入mysql容器,我们现在先需要查看一下docker-mysql的实际环回地址,执行如下命令,我们可以看到172.17.0.2,这个地址到时候登录配置我们会用的到,记住这个地址。
执行命令后的显示信息:
[root@root config]# docker exec -it mysql cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 608effc0382b

2.1.3初始化数据库表项

我们通过Navicat数据库管理工具连接服务器的mysql,执行waline官网下载好的sql数据库的任务就完成了

这里单独说明一下数据库版本要在5.5.3 以上才支持utf8mb4字符编码,如果你不是采用教程docker启动的mysql版本,执行sql语句会有问题。

2.1.3.1下载运行的sql语句

直接连接点进去下载或者下面的sql复制保存为.sql类型的文件都行

waline项目github的sql地址 walien官方sql

1
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*!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 */;

2.1.3.2连接数据库

如果你没有按照和连接过mysql数据库,没关系这里带你安装下载连接数据库。

首先下载Navicat可视化数据库管理工具,破解版安装配置教程参考如下链接,[Navicat16破解](Navicat Premium 16 永久破解激活 - 酷酷的洛克 - 博客园 (cnblogs.com))

下载安装完毕以后,左上角选择[文件]->[新建连接]->[mysql]

连接数据库

连接界面选择SSH,先连接阿里云ECS,然后选择常规在连接数据库,具体操作详情,查看如下

配置SSH

配置完SSH不要关闭界面,选择常规 ,继续配置mysql连接信息

配置常规

然后点击确定,双击就可以看到数据库下面的表项

连接成功

新建一个数据库,数据库名就叫waline,选择utf8m64,排序规则选择utf8m64_general_ci,

新建数据库完成然后点击运行sql,把原来下载保存好的.sql文件导入运行一下

运行sql

表项生成会稍微有点慢,大概俩三分钟才能刷新看到,可以稍微等等,然后右键点击waline数据库,选择刷新就能看到表项了

表项

最难的部分数据库我们就已经搞定了,剩下俩步,一个比一个简单。

2.2 部署waline

在阿里云ECS上面配置如下命令

1
2
3
git clone https://github.com/walinejs/waline.git
cd waline
docker build -t lizheming/waline -f packages/server/Dockerfile .

docker build -t lizheming/waline -f packages/server/Dockerfile .这个docker配置需要下载不少文件和资源,大概几十兆吧,等个几分钟构建完成以后,然后继续配置docker-waline,如果配置是按照教程来的,直接完整复制该命令,然后回车运行即可,如果配置有调整,请按照配置解释说明进行修改调整。

1
2
3
4
5
6
7
8
9
docker run -d --name waline -p 8360:8360 \
-v /mydocker/waline/data:/app/data \
-e TZ="Asia/Shanghai" \
-e MYSQL_HOST="172.17.0.2" \
-e MYSQL_DB="waline" \
-e MYSQL_USER="root" \
-e MYSQL_PASSWORD="123456" \
--restart always \
lizheming/waline

配置解释

docker run -d –name waline -p 8360:8360 \ ———本次docker配置的端口信息,容器名称waline
-v /mydocker/waline/data:/app/data
-e TZ=”Asia/Shanghai”
-e MYSQL_HOST=”172.17.0.2” \ ———这个是docker-mysql的环回地址,如果没有配docker-mysql就是127.0.0.1
-e MYSQL_DB=”waline” \ ———这个就是我们新建的mysql数据库waline名称
-e MYSQL_USER=”root” \ ———-这个是我们定义的mysql数据用户
-e MYSQL_PASSWORD=”123456” \ ———-这个是我们定义的mysql数据用户密码
–restart always
lizheming/waline

这个配置完成,查看一下,能看到俩个docker信息,一个mysql一个waline,这就说明配置的没有问题,都已经生效了。

执行命令后的显示信息:
[root@root ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0269bddd5191 lizheming/waline “docker-entrypoint.s…” 21 hours ago Up 21 hours 0.0.0.0:8360->8360/tcp waline
608effc0382b mysql:5.7 “docker-entrypoint.s…” 29 hours ago Up 22 hours 3306/tcp, 33060/tcp, 0.0.0.0:4306->4306/tcp mysql

部署waline的最后一步了,通过浏览器访问http://ECS公网IP地址:8360/ui/register,便能看到注册界面,注册的第一个用户会成为后台管理员,注册的时候,记住自己的账号和密码,下次登录别忘了。

2.3 修改访问地址

现在是修改博客配置文件就可以,我用的博客是hexo采用的butterfly主题,我的配置文件就是_config.butterfly.yml文件下面配置如下配置即可

1
2
3
4
5
6
7
8
9
10
11
waline:
serverURL: http://ECS公网IP地址:8360/ # 填写自己刚刚在访问的IP和端口即可
bg: # waline background
pageview: false
option:
requiredMeta: [ nick ] # 选定昵称和评论为必填项,可以选择加上mail,这样就必填邮箱信息了
locale:
placeholder: 有想要更新的文章或者建议欢迎评论留言! # 内容区提示
sofa: '评论区空空如也~呜呜呜'
anonymous: '匿名的野猫'
login: '登录(可选)'

然后重新hexo clean&&hexo g&&hexo s你就可以看到新配置的评论系统了,直接评论一下就能显示出来,并且数据库里面能看到新增的评论信息。

效果大概这样

评论

如果想给我的博客留言,可以到关于页面 关于,下面给我评论留言,如果配置有啥问题也可以在下面留言给我