部署hexo博客到腾讯云

在腾讯云买了个服务器,自己也有写博客的需求,打算把 hexo 的部署过程记录下来


2021/01/04

一个更好的方案
hexo搭建部署更新地址 https://www.gaoyuanqi.cn/hexo-tenxunyun-xin/


  • 想要域名访问博客至少满足之一:

    • 使用国内服务器需备案
    • 使用国外、中国港澳台服务器无需也不支持备案,一般选中国香港,毕竟物理距离近
    • 上面两个无论哪一种都不影响使用 公网ip + 端口 访问,即使没有域名
  • 本文以腾讯云为例,本地操作系统Windows 10 64位,服务器操作系统CentOS 7.2 64bit

  • 假设公网IP是 111.11.1.11

腾讯云配置

我使用的云服务器是标准型S2,配置信息如下:

13

配置安全组:

使用nginx服务需开启80端口,选择标准登录需开启22端口

14

添加80端口

15

22端口同上

安装nginx

云服务器 有个 云硬盘 可以创建快照 ,快照的作用是将数据回滚到创建快照的时刻,如果程序执行没有问题建议创建快照保存数据

我选用标准登录方式

安装nginx依赖环境,有提示一律选yes:

1
2
3
4
# yum install gcc-c++
# yum install -y pcre pcre-devel
# yum install -y zlib zlib-devel
# yum install -y openssl openssl-devel

下载nginx安装包:

1
# wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

将安装包解压到/usr/local目录下:

1
# tar -xvf nginx-1.10.1.tar.gz -C /usr/local

进入/usr/local/nginx-1.10.1目录,执行configure配置文件:

1
2
# cd /usr/local/nginx-1.10.1
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module #带上ssl模块

配置https需要ssl模块,如不幸没有带上,建议重装nginx,网上教程无法达到期望

编译并安装nginx:

1
2
# make
# make install

查找nginx安装目录并进入:

1
2
# whereis nginx
# cd /usr/local/nginx

开放linux的80端口供外部访问:

1
# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

进入/usr/local/nginx/sbin目录,启动nginx:

1
2
# cd sbin/
# ./nginx

此时通过 http://公网ip:80 访问看到如下图

16

配置nginx服务器路由

为hexo创建一个部署目录/home/www/hexo:

1
# mkdir -p /home/www/hexo

打开usr/local/nginx/conf/nginx目录下的nginx.conf配置文件:

注:若有内容莫名其妙乱入,使用向上向下键移动即可

1
vim /usr/local/nginx/conf/nginx.conf

i 键由命令模式切换到编辑模式,修改在http{}块内的server块内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
···

server {
listen 80; #只需查看是否80
server_name www.gaoyuanqi.cn; #添加自己域名或公网ip

#charset koi8-r;
#access_log logs/host.access.log main;

location / {
root /home/www/hexo; #添加部署目录
index index.html index.htm;
}

···

}

ESC 输入 :wq 保存退出

命令 说明
:wq! 强制保存退出
:q 放弃修改退出
:set nu 显示行数
:ctrl+u/d 半屏滚动
:ctrl+f/b 全屏滚动

安装

安装node.js:

1
2
3
# cd ~
# curl -sL https://rpm.nodesource.com/setup_10.x | bash -
# yum install -y nodejs

安装git:

1
# yum install git

打印出版本号即安装成功:

1
2
3
4
5
6
7
8
# node -v
v10.21.0

# npm -v
6.14.4

# git --version
git version 1.8.3.1

git配置

创建git用户,会自动创建 /home/git 目录

1
# useradd git

修改git用户的权限:

1
# chmod 740 /etc/sudoers

打开文件:

1
# vim /etc/sudoers

i 键由命令模式切换到编辑模式,在 root ALL=(ALL) ALL 下行添加 git ALL=(ALL) ALL

ESC 输入 :wq 保存退出

保存退出后改回权限:

1
# chmod 400 /etc/sudoers

设置git用户的密码:

1
# sudo passwd git

创建git仓库并新建post-receive钩子文件:

1
2
3
# cd ~
# git init --bare hexo.git
# vi ~/hexo.git/hooks/post-receive

i 键由命令模式切换到编辑模式,添加 git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f

ESC 输入 :wq 保存退出

目的让钩子文件删除 /home/www/hexo目录下原有的文件,然后从 hexo.git 仓库 clone 新的博客静态文件到 /home/www/hexo 目录下

授予钩子文件可执行权限:

1
2
3
# chmod +x ~/hexo.git/hooks/post-receive
# cd ~
# sudo chmod -R 777 /home/www/hexo

最后输入git密码

切换到git用户创建.ssh目录存放公钥:

1
2
3
# su git
$ cd ~
$ mkdir .ssh

本地安装

安装Node.js:

Node官网

下载速度太慢的话可以去这里node中文网

安装过程:略,默认安装

win + r 在弹出窗口输入 cmd 打开命令提示符,然后依次输入 node -vnpm -v

1
2
3
4
C:\Users\Administrator>node -v
v12.16.3
C:\Users\Administrator>npm -v
6.14.4

出现版本号说明安装成功

安装git:

Git官网下载太慢查看版本就好

然后从阿里镜像选择相应版本下载

安装过程:略,默认安装

桌面右键出现下图红框内容说明安装成功

1

Git教程

安装hexo:

新建一个名为hexo的文件夹并进入,右键选择 Git Bash Here :

(Git复制键是 Ctrl+insert 粘贴键是 Shift+insert)

1
2
3
4
5
$ npm install -g hexo-cli   #安装hexo
$ hexo init hexo #格式化hexo文件夹
$ cd hexo #进入hexo目录
$ npm install #安装所需组件
$ hexo server #启动本地服务器

注:我遇到 bash: npm: command not found 报错,不过我关机后再开机就恢复正常了

打开浏览器输入 http://localhost:4000/ 出现下图

2

设置Git用户、邮箱:

1
2
$ git config --global user.name "用户名"
$ git config --global user.email "邮箱"

生成ssh密钥:

1
$ ssh-keygen

我的在 C:/Users/雨园/.ssh 目录下

设置私钥权限:

1
2
3
$ cd ~/.ssh
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

使用filezilla上传 id_rsa.pub 公钥:

官网地址

17

id_rsa.pub 内容复制到新建的 authorized_keys 文件中

切回服务器

设置文件权限:

1
2
3
$ cd ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

确保设置了正确的SELinux上下文:

1
$ restorecon -Rv ~/.ssh

重启服务器,启动nginx服务:

1
2
# cd /usr/local/nginx/sbin
# ./nginx

切回本地

打开hexo站点配置文件 _config.yml ,最下面添加:

1
2
3
4
deploy:
type: git
repository: git@公网ip:/home/git/hexo.git
branch: master

注意 : 后接一个 空格 ,保存退出

验证ssh连接服务器:

1
$ ssh git@111.11.1.11

出现git用户即成功

部署到腾讯云:

1
2
3
$ hexo clean  #清除缓存文件
$ hexo g #生成静态文件
$ hexo d #部署

通过 http://公网IP:80/ 可以访问个人hexo博客

解析域名访问博客:

微信 腾讯云助手 小程序 > 我的域名 > 解析 > 添加解析 :

1
2
3
记录类型    A
主机记录 www
记录值 111.11.1.11

来源

https://mp.weixin.qq.com/s/Ff_7X6u82chWspTsigFv9w