本人对服务器部署相关内容确实不太熟悉,主要是代码太多了,好了语句似懂非懂的,有必要记录一下,主要针对hexo部署到腾讯云轻量应用服务器和用docker安装twikoo评论系统。事先声明,此文章大部分取自yyyzyyyz的关于twikoo私有部署的文章,本人承诺,本文不做商业用途,只作为记录之用。

准备工作

在开始部署之前,你需要做如下准备:

  • 本地搭建完成的博客
  • 一台windows/mac电脑(如果你的电脑是linux应该不用看本篇教程吧)
  • 一台云服务器(理论上来说任何服务商都可以,本教程以腾讯云为例)
  • 本地电脑安装一个ssh连接工具(或者bash终端)HOSTBUF
  • 可能会多次失败也不怕重来的决心:

安装配置git

安装依赖工具包

1
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel 

安装编译工具

1
yum install -y gcc perl-ExtUtils-MakeMaker package

删除旧版本git

1
yum remove git -y

进入根目录

1
cd

下载git到根目录

鉴于下载地址的时效性,附上官网地址,后续git更新请去官网下载安装包。

1
wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz --no-check-certificate

如果提示没有wget命令,先安装:

1
yum install wget -y

解压文件

1
tar -zxf git-2.34.0.tar.gz

安装git

进入到git目录下

1
cd git-2.34.0

编译

1
make all prefix=/usr/local/git

安装git到/usr/local/git

1
make install prefix=/usr/local/git

配置git环境变量

将git加入PATH目录中

1
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

使配置生效

1
source /etc/bashrc

查看git版本

1
git --version

如果能查看到git的版本号,说明安装成功。

创建用户并配置SSH免密登录

创建用户并设置密码

这里的username改成你自己的用户名,并且为用户设置一个密码。

1
2
adduser [username]
passwd [username]

为用户分配权限

把用户添加到wheel组

1
usermod [username] -G wheel

本地创建密钥

在本机电脑终端输入:

1
ssh-keygen -t rsa

然后一直回车,新建一个密钥。

一般来说在你创建的时候命令行会提示你密钥文件的路径,windows电脑一般是C:\Users\Administrator\.ssh

复制id_rsa.pub文件中的内容备用。

配置公钥(免密部署用)

回到服务器终端,切换用户

1
su - [username]

创建.ssh文件夹

1
mkdir .ssh

新建authorized_keys

1
vim .ssh/authorized_keys

如果提示没有vim,则先安装:

1
sudo yum install -y vim

将刚刚id_rsa.pub公钥中的内容,复制粘贴到文件里,保存退出。

免密失效打开此处

排查方法

检查 操作示例 说明
.ssh目录的属主、属组是否为要登陆的用户与用户组 ll -a /home/[username]/ username为用户名,下同
.ssh目录的权限是否为 700 ll -a /home/[username]/
.ssh目录下authorized_keys的权限是否为644 ll -a /home/[username]/.ssh/
[username]目录的权限是否为755 ll -a /home/ 700也可以,确保其他人没有w权限
  1. 检查.ssh目录权限:drwx------
  2. 检查authorized_keys权限:-rw-r--r--
  3. 检查[username]目录权限:drwx------

git仓库配置

退出用户登录

1
exit

此时应该是root用户,创建git目录,并修改目录的所有权和用户权限

1
2
3
mkdir /home/git/
chown -R [username]:[username] /home/git/
chmod -R 755 /home/git/

进入目录,建立git仓库,修改权限

1
2
3
cd /home/git/
git init --bare blog.git
chown [username]:[username] -R blog.git

新建钩子文件 post-receive

1
vim /home/git/blog.git/hooks/post-receive

进入文本编辑器,粘贴下面两行。

1
2
#!/bin/bash
git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f

保存退出。然后修改文件权限

1
chmod +x /home/git/blog.git/hooks/post-receive

nginx配置

创建网站目录

首先创建blog目录用户nginx转发

1
2
3
mkdir /home/blog/
chown -R [username]:[username] /home/blog/
chmod -R 755 /home/blog/

网站配置

此处我们用到宝塔面板。

安装宝塔

  • 执行以下命令,下载并安装宝塔面板。
1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

返回如下结果,表示安装成功。

1
2
3
4
5
6
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
success
==================================================================
Congratulations! Installed successfully!
==================================================================
  • 记录返回结果中的 “面板地址”、“username” 和 “password” 的参数值。
1
2
3
4
5
6
7
8
9
==================================================================
外网面板地址: http://114.xxx.xxx.188:8888/57ffcc15
内网面板地址: http://172.xx.x.42:8888/57ffcc15
username: r4tpci0c
password: eb691ecc
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口
==================================================================
  • 在本地计算机中,打开浏览器,输入记录的“面板地址”参数值,访问进入宝塔面板页面。例如http://114.xxx.xxx.188:8888/57ffcc15
  • 输入记录的 “username” 和 “password”,单击登录

  • 勾选我已同意“《用户协议》”,单击进入面板
  • 根据实际的业务需求,在面板中选择相关的套件安装和部署网站。

设置网站

根目录:就是我们存放网站的目录

在hexo站点配置文件中配置

回到本地,打开你本地的hexo博客所在文件,打开站点配置文件_config.yml

1
2
3
4
deploy:
type: git
repository: [username]@100.0.0.100:/home/git/blog.git #用户名@服务器Ip:git仓库位置
branch: master

在本地hexo博客根目录下,打开终端,部署

1
2
3
hexo clean
hexo g
hexo d

错误

  • 如果提示ERROR Deployer not found:git错误,先安装:
1
npm install hexo-deployer-git --save

打开浏览器输入你的服务器公网ip,应该已经部署成功了。

  • 若是出现一下错误

示例

需要给我们常见的组赋权,则需执行一下命令:

1
2
3
chown [user]:[user] blog.git
cd blog.git
chown [user]:[user] * -R

附:nginx常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 停止开机自启动
systemctl disable nginx.service
#设置nginx服务开机自启动
systemctl enable nginx.service
#启动nginx服务
systemctl start nginx.service
#停止nginx服务
systemctl stop nginx.service
#重启nginx服务
systemctl restart nginx.service
#重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service
# 查看服务当前状态
systemctl status nginx.service
# 查看所有已启动的服务
systemctl list-units --type=service

twikoo评论系统部署

我采用的方式是:私有部署 (Docker)

我用的是宝塔面板安装的,简单又方便,点击左侧栏docker,会自动让你安装docker环境。

安装docker

docker

开始部署

1
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo

部署完毕后访问器公网IP:8080,例如:http://100.100.100.100:8080,查看是否部署成功。

成功提示信息:

1
{"code":100,"message":"Twikoo 云函数运行正常,请参考 https://twikoo.js.org/quick-start.html#%E5%89%8D%E7%AB%AF%E9%83%A8%E7%BD%B2 完成前端的配置","version":"1.6.4"}

主题配置envid

Butterfly中我们更改配置文件,将themes/butterfly/_config.yml中:

1
2
3
4
5
6
7
8
# Twikoo
# https://github.com/imaegoo/twikoo
twikoo:
envId:
region:
visitor: false
option:

envId中填写服务器公网IP:8080,例如:http://100.100.100.100:8080

也可以在宝塔面板中添加域名,再设置反向代理

添加名称、设置链接,填写http://127.0.0.1:8080

然后将http://100.100.100.100:8080替换掉即可

具体教程可以在以下教程中找到