linux自建 Twikoo 评论系统私有部署保姆级(非Docker)
前言
利用私有部署把Twikoo评论部署在博客上,网上基本都是Docker方式的安装,因为对Docker不熟悉而且常规的私有部署教程全网基本没有,所以记录一下,给需要的人使用linux(非Docke版)安装。
下载node
下载
进入nodejs nodejs官方网站
找到需要下载的版本号,右键复制出下载地址 https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz
链接服务器
利用Xshell
/Finalshell
/宝塔
连接你的服务器
进入目录解压
可以自定义,知道自己的在哪就行
- 创建
/usr/local/nodejs
目录 - 使用
tar -xvf [指定的压缩档案包] -C [指定的解压目录]
解压包到指定目录。
首先应该先进入目录
1 | cd /usr/local/ |
新建一个nodejs的目录
1 | mkdir nodejs |
cd到nodejs目录,用wget下载 这样就直接下载到你的目录里面
1 | cd nodejs |
tar xf 解压文件
1 | tar xf node-v18.12.1-linux-x64.tar.xz |
mv 重命名为node18 这个命名自己清楚就行
1 | mv node-v18.12.1-linux-x64 nodejs18 |
创建node全局模块目录和缓存目录
1 | mkdir -p /usr/local/nodejs/nodejs18/node_global |
配置环境变量
跳回最初目录然后进入root
1 | cd / |
在root里面找两个文件.bash_profile
和.bashrc
有`bash_profile就配置bash_profile
两个都有就配置.bashrc
都没有就直接创建
编辑文件
使用vim编辑器修改
.bashrc
文件点击按键“i”,进入插入模式
下到文件末尾,添加两行,分别声明nodejs的NODEJS_HOME(nodejs安装目录)和PATH(nodejs的bin目录)
1 | # nodejs环境变量 |
点击按键“Esc”退出插入模式回到命令行模式
输入“:wq”回车保存修改并退出vim编辑器
重启服务器或执行
source .bashrc
刷新环境变量(改哪个刷新哪个)使用命令
export
检查环境变量是否成功(下面这个图是以前的,我懒得截图了-.-)
输入“node -v”验证,如果输出版本信息则配置成功
设置全局模块目录和缓存目录
1
2npm config set prefix "/usr/local/nodejs/nodejs18/node_global"
npm config set cache "/usr/local/nodejs/nodejs18/node_cache"
如何需要 cnpm自己百度安装
下载Twikoo
- 安装 Twikoo server:
npm i -g tkserver
- 根据需要配置环境变量,所有的环境变量都是可选的
名称 | 描述 | 默认值 |
---|---|---|
MONGODB_URI |
MongoDB 数据库连接字符串,不传则使用 lokijs | null |
MONGO_URL |
MongoDB 数据库连接字符串,不传则使用 lokijs | null |
TWIKOO_DATA |
lokijs 数据库存储路径 | ./data |
TWIKOO_PORT |
端口号 | 8080 |
TWIKOO_THROTTLE |
IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误 | 250 |
TWIKOO_LOCALHOST_ONLY |
为true 时只监听本地请求,使得 nginx 等服务器反代之后不暴露原始端口 |
null |
TWIKOO_LOG_LEVEL |
日志级别,支持 verbose / info / warn / error |
info |
TWIKOO_IP_HEADERS |
在一些特殊情况下使用,如使用了CloudFlare CDN 它会将请求 IP 写到请求头的 cf-connecting-ip 字段上,为了能够正确的获取请求 IP 你可以写成 ['headers.cf-connecting-ip'] |
[] |
启动 Twikoo server:
tkserver
访问
http://服务端IP:8080
测试服务是否启动成功配置前置代理实现 HTTPS 访问(可以用 Nginx、负载均衡或 Cloudflare 等)
设置环境变量
老规矩 参考设置node的环境变量 在
.bashrc
文件后面加入1
export TWIKOO_PORT=8087
重启服务器或执行
source .bashrc
刷新环境变量(改哪个刷新哪个)使用命令
export
检查环境变量是否成功
后台启动
- Linux 服务器后台启动应该使用这个:
nohup tkserver >> tkserver.log 2>&1 & disown
- 执行成功后出现的是类似于字符引用
1[d3ak231]
或者看看文件data没有生成 - 在哪个目录启动的,data和log就会出现
- 数据默认在 data 目录,请注意定期备份数据
配置 Nginx 反代(进阶)
现在基本都是 HTTPS 的时代,Twikoo 的默认服务不支持 HTTPS,所以还得用个反代来解决下这个问题。 下面这个是例子 看懂再修改,别硬搬
1 | vim /etc/nginx/conf.d/twikoo.conf |
需要注意的是如果碰到跨域问题,需要额外的配置来解决
CND和跨域(可选)
cdn
打开腾讯云 CDN 控制台,添加域名,加速域名为后续要使用的域名,加速类型为 CDN 网页小文件,开启 IPv6 访问(可选),源站类型为自有源、回源协议为 http,源站地址为 Twikoo 后端所在的服务器地址(即服务器的域名。需要在 DNS 控制台添加一条 A 记录,指向服务器 IP 地址),端口为 Twikoo 后端服务使用的端口(默认是 8080,可自行修改):
检查无误后点击确认添加,然后提交配置(推荐配置保持默认即可,后续有需要再慢慢细调):
博客(针对butterfly主题前端配置)
修改
_config.butterfly.yml
中的相关配置项即可:1
2
3
4
5
6YAML
twikoo:
envId: http://加速域名/
region: #留空
visitor: false
option: #留空
跨域
跨域是什么百度,可以使用nginx 代理,也可以使用重定向,下面几种情况
因为个人的博客是放在腾讯云静态存储且套了 CDN,我直接在 CDN 上设置了
HTTP 响应头配置
,没有CDN配置Nginx代理,和cdn那里的一样,改成你自己的
我的Twikoo评论系统是http:// ip:端口这种 博客上(https://blog.aiheadn.cn/)https协议 思路如下
- 新建一个https://twikoo.aiheadn.cn/网站
- 博客
指向
https://twikoo.aiheadn.cn/ - https://twikoo.aiheadn.cn/`反代`http:// ip:端口
nginx配置如下:
1
2
3
4
5
6
7
8location / {
proxy_pass http:// ip:端口;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Max-Age' 1728000;
}
参考文章
https://www.neko7ina.com/3pYN3eKz7vaZ1z.html
https://twikoo.js.org/backend.html#%E7%A7%81%E6%9C%89%E9%83%A8%E7%BD%B2