• 作者:老汪软件技巧
  • 发表时间:2024-09-15 07:01
  • 浏览量:

我是使用的Vercel部署Waline,虽然方便省事,但是访问速度确实太慢了。之前也试过在云服务器上部署,但是不熟悉nginx的配置,故放弃了私有化部署,最近更换服务器时改用了宝塔面板,nginx配置起来省事多了,故改为在服务器上部署Waline

本文基于雨云服务器进行操作,雨云-新一代服务提供商,使用前可先试用,觉得没问题了再租长期的。

安装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 postgres

psql

使用navicat连接数据库

创建数据库,用于保存waline数据

下载waline.pgsql用于构建表结构,若链接无法打开可以点击此链接下载:waline.pgsql

在navicat右键数据库hexowaline,点击运行SQL文件,选择刚才下载的waline.pgsql,这里默认只显示.sql文件,记得改成全部文件,不然找不到waline.pgsql

选择文件后点击开始就可以构建表结构了,出现以下三张表说明构建成功

安装Waline

给出的docker-compose.yml文件是以SQLite为例的,想使用其他数据库的话根据修改环境变量即可

选择一个位置新建并修改docker-compose.yml

cd /home

mkdir waline

cd waline

vim 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,像这条子域名就是

申请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一定要大写

搜索 waline

serverURL处填写子域名

配置好之后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即可

显示效果如下