我是使用的Vercel部署Waline,虽然方便省事,但是访问速度确实太慢了。之前也试过在云服务器上部署,但是不熟悉nginx的配置,故放弃了私有化部署,最近更换服务器时改用了宝塔面板,nginx配置起来省事多了,故改为在服务器上部署Waline
本文基于雨云服务器进行操作,雨云-新一代服务提供商,使用前可先试用,觉得没问题了再租长期的。
安装Docker
-
使用官方脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun -
若安装不成功则需要手动安装
-
安装完成后输入以下命令测试是否成功安装
docker versiondocker compose version -
配置镜像源
-
添加或修改文件/etc/docker/daemon.json
vim /etc/docker/daemon.json内容如下
{ "registry-mirrors": ["https://hub-mirror.c.163.com"] }这里有几个镜像源,若后面的步骤中有下载失败的情况可更改镜像源后重新尝试
6kx4zyno.mirror.aliyuncs.com ccr.ccs.tencentyun.com docker.mirrors.ustc.edu.cn hub-mirror.c.163.com mirror.baidubce.com
-
重启docker
systemctl daemon-reloadsystemctl restart docker
-
安装PostgreSQL
Waline支持很多种数据库,具体可参见官方文档,我这里选用的是PostgreSQL
-
拉取镜像
docker pull postgres -
创建容器(POSTGRES_PASSWORD即数据库postgres的密码,设置为自己需要的值)
docker run -it \ --name postgres \ --privileged \ -e POSTGRES_PASSWORD=123456 \ -p 5432:5432 \ -v /usr/local/software/postgres/data:/var/lib/postgresql/data \ -d postgres -
进入容器
docker exec -it postgres /bin/bash -
登录postgres数据库,测试是否安装成功
su postgrespsql -
使用navicat连接数据库
-
创建数据库,用于保存waline数据
-
下载waline.pgsql用于构建表结构,若链接无法打开可以点击此链接下载:waline.pgsql
-
在navicat右键数据库hexowaline,点击运行SQL文件,选择刚才下载的waline.pgsql,这里默认只显示.sql文件,记得改成全部文件,不然找不到waline.pgsql
-
选择文件后点击开始就可以构建表结构了,出现以下三张表说明构建成功
安装Waline
官方文档给出的docker-compose.yml文件是以SQLite为例的,想使用其他数据库的话根据多数据库服务支持修改环境变量即可
-
选择一个位置新建并修改docker-compose.yml
cd /homemkdir walinecd walinevim 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: TZ: 'Asia/Shanghai' PG_DB: 'hexowaline(你创建的数据库数名称)' PG_USER: 'postgres(创建数据库时选择的用户,默认是postgres)' PG_PASSWORD: 'youpassword(你的密码)' PG_HOST: 'xxx.xxx.xxx.xxx' PG_PORT: '5432' -
保存后,在waline目录内运行以下命令启动Waline
docker compose up -d我已经Building过 了,所以直接就完成了,初次启动的话需要一段时间才能完成
-
查看是否运行
docker ps
配置SSL证书
端口号访问的话会报Faile to fatch!好像是因为没有用https访问,具体情况我也不太清楚,反正我是解析出一个子域名,再申请SSL证书,配置好就不报错了
-
去DNS解析一个子域名,就是解析个A记录,指向自己的ip,像这条子域名就是xxxx.huochairener-blog.cn
-
申请SSL证书
选择自己熟悉的方式申请就行,我是去的freessl网站申请的
-
点击申请证书
-
选择单域名➡️立即申请
-
输入域名,点击提交
-
复制这两个值,去DNS添加一条CNAME记录进行验证
-
填入刚才复制的两个值,保存
-
等几分钟之后点击验证就会自动下载证书,若没有下载点击旁边的证书也可以下载
多等几分钟,DNS验证和签发证书都需要时间
-
证书下载好后有两个文件,一个.key一个.pem,保存好,之后要用
-
-
进入宝塔面板➡️网站➡️添加站点,输入刚才解析的子域名,根目录随便选一个目录就行
-
点击网站名或设置按钮进行设置
-
点击SSL➡️其他证书,将刚才下载的证书文件中的内容复制到对应的输入框内
-
点击保存就完成证书的配置了
配置反向代理
之前就是卡在这一步才没能私有化部署,这次用了宝塔面板就轻松多了,若没安装宝塔面板的话,我把我的nginx配置文件放在后面,复制进你的nginx配置文件例应该也行
-
点击反向代理➡️添加反向代理,内容如下
目标URL即你服务器的IP:8360,8360是安装Waline时映射的端口
-
点击提交就可以了,nginx配置文件内容如下
#PROXY-START/ location ~* \.(php|jsp|cgi|asp|aspx)$ { proxy_pass http://123.123.123.123: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 REMOTE-HOST $remote_addr; } location / { proxy_pass http://123.123.123.123: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 REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; expires 12h; } #PROXY-END/站点配置文件内容如下
server { listen 80; listen 443 ssl http2; server_name xxxx.huochairener-blog.cn; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/xxxx.huochairener-blog.cn; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_certificate /www/server/panel/vhost/cert/xxxx.huochairener-blog.cn/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/xxxx.huochairener-blog.cn/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注释或修改 #清理缓存规则 location ~ /purge(/.*) { proxy_cache_purge cache_one $host$1$is_args$args; #access_log /www/wwwlogs/xxxx.huochairener-blog.cn_purge_cache.log; } #引用反向代理规则,注释后配置的反向代理将无效 include /www/server/panel/vhost/nginx/proxy/xxxx.huochairener-blog.cn/*.conf; include enable-php-00.conf; #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/xxxx.huochairener-blog.cn.conf; #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一键申请SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } access_log /www/wwwlogs/xxxx.huochairener-blog.cn.log; error_log /www/wwwlogs/xxxx.huochairener-blog.cn.error.log; }
Hexo引入Waline
我是用的是Butterfly主题,其他主题请参考各自主题的官方文档进行配置
-
修改主题配置文件_config.yml
-
搜索
comments:找到以下内容use处填入Waline,W一定要大写 -
搜索
walineserverURL处填写子域名 -
配置好之后hexo三连部署
hexo cl && hexo g && hexo d
-
Waline设置
部署好Waline之后需要立即登录,默认第一个登录的用户为管理员
-
进入自己的网站,随便进入一篇文章,划到最下面,找到登录按钮
-
选择github登录
-
登录成功之后关掉这个弹窗,你的评论框应该已经变成了这样
如果左侧没有显示头像,那就点一下表情按钮就出来了,这个不知道时什么bug,我还没弄,暂时先这样了
-
点击头像,再次点github登录就可以进入Waline后台管理页面了
-
在左上角管理按钮处就可以跳转到对应的管理页面了
Waline其他设置
Waline还有其他很多功能,可以慢慢摸索,我目前只用到了这些
开启文章反应
Waline自带文章反应功能,在主题文件夹下/themes/butterfly/layout/includes/third-party/comments/waline.pug找到这个文件,将reaction值设为true即可
显示效果如下
关闭评论
如果某些文章不想开启评论可以在文章顶部的配置中输入comments: 'false'即可
比如我的artitalk不想开启评论
消息通知
Waline提供了多种方式进行评论通知,最好是选择邮箱,用邮箱的话当访客的评论收到回复时可以对访客进行通知。因为我目前没有收到过评论,所以暂且用个最省事的通知我自己就行了,我目前使用的是PushPlus 通知,Server 酱也可以,就是每日免费额度太少,只有5条,pushplus每日是200条
-
注册登录pushplus,实名认证,关注微信公众号绑定,在个人中心处复制token
-
进入Waline目录,停止并删除waline容器
cd /home/walinedocker compose stop -
修改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: TZ: 'Asia/Shanghai' PG_DB: 'hexowaline' PG_USER: 'postgres' PG_PASSWORD: 'yourpassword' PG_HOST: 'yourip' PG_PORT: '5432' PUSH_PLUS_KEY: 'token' AUTHOR_EMAIL: '1002703044@qq.com' SITE_NAME: '火柴人儿的小站' SITE_URL: 'www.huochairener-blog.cn'添加了几个环境变量
PUSH_PLUS_KEY:pushplus获取的tokenAUTHOR_EMAIL: 博主邮箱,用来区分发布的评论是否是博主本身发布的。如果是博主发布的则不进行提醒通知SITE_NAME:网站名称,用于在消息中显示SITE_URL:网站地址,用于在消息中显示 -
启动Waline
docker compose up -d -
测试,随便找一篇文章进行评论,大概过几秒就可以在公众号内收到消息推送
点进去可以查看详情
-
想使用邮箱通知的话可以看官方文档或找教程进行配置
图床
waline配置图床可查看我另一篇文章:为Hexo添加评论系统-Waline并为其配置图床 | 火柴人儿的小站 (huochairener-blog.cn)