hexo部署在github&vps

简介

hexo是用Node.js开发的博客框架,利用本地端进行静态编译上传到服务端.

安装

本地端(PC端)

  • Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)
  • Git(中国大陆可能无法访问,可以从百度搜索镜像网站进行下载)

该步骤和重新部署步骤一样

寻找一个适合自己的位置建立储存博客数据的文件夹。

注:如果出现npm WARN deprecated等提示,是因为国外镜像访问不到,切换到国内镜像就可以了

1
2
3
4
淘宝镜像
npm config set registry https://registry.npm.taobao.org
不想用时,再设置回原来的就可以了
npm config set registry https://registry.npmjs.org

进入新建的文件夹后,右键使用 git bash here 打开

输入

1
npm install -g hexo-cli

输入hexo -v,检查hexo是否安装成功

1
hexo -v

输入hexo init,初始化该文件夹

1
hexo init

初始完成后,删除该文件夹下所有文件,然后从还原备份。

生成本机ssh公钥

打开git bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd ~/.ssh

#若命令行提示bash: cd: ~./ssh: No such file or directory
#则说明还没有配置好 ssh 文件

#首先配置用户信息
git config --global user.name = "xxx"
git config --global user.email = "xxx@xxxx.xxx"

#生成公钥
cd ~
ssh-keygen -t rsa -C "xxxx@xxx.xxx" #填自己邮箱

#查看公钥
cd ~/.ssh
vim id_rsa.pub #公钥保存在这个文件里

服务端-VPS

github的点击跳转

以debian为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
apt install git #安装git

adduser git #根据提示设置密码

vim /etc/sudoers #编辑sudoers赋予git用户sudo权限

# User privilege specification
root ALL=(ALL:ALL) ALL
git ALL=(ALL:ALL) ALL #添加此行内容

#关闭git用户shell权限(可选)
vim /etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

#配置ssh(用来免密快速部署博客)
su git
cd /home/git
mkdir .ssh
cd .ssh
vim authorized_keys #复制本地生成的公钥到这里
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

#测试本地是否可以连上vps
#在本地端git bash 然后输入下面代码
ssh -v git@服务器ip地址

#安装gcc
#debian 下面两个代码选其一

apt-get install build-essential
#推荐build-essential依赖库已经包含了gcc

apt-get install gcc

#安装Nginx
cd /usr/local

wget -c https://nginx.org/download/nginx-1.18.0.tar.gz #这里选择1.18版本作为演示

tar -zxvf nginx-1.18.0.tar.gz #解压下载的压缩包
cd nginx-1.18.0

./configure #安装,默认安装在/usr/local/nginx

make

make install

Nginx指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /usr/local/nginx/sbin/ #nginx的启动文件夹
./nginx #启动
./nginx -s stop #查出nginx进程id再使用kill命令强制杀掉进程。
./nginx -s quit #待nginx进程处理任务完毕进行停止。
./nginx -s reload #改了配置文件后需要重启nginx

#查询nginx状态
ps aux | grep nginx

#如果nginx没有运行,考虑端口问题
#本人架设了trojan管理面板,占用了80端口
#需要修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
cd /usr/local/nginx/conf/
#将端口80改成其他
#然后访问 服务器IP地址:设定的端口 来测试网页是否正常

(补充)实现同一服务器端口解析不同域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 server {
listen 80;
server_name dl.drehtsich.cc; #这里解析一个域名
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
#charset koi8-r;
charset utf-8,gbk;
#access_log logs/host.access.log main;

location / {
root /var/www/html;
index index.html index.htm;
}
}

server {
listen 80;
server_name xray.drehtsich.cc; #这里解析另外一个域名
root /usr/share/nginx/html;
location / {
add_header Strict-Transport-Security "max-age=63072000" always;
}
# location ~ /.well-known {allow all;}
# location /test {return 200 'fjkvymb6len';}
}

#以上两个域名在同一端口下,分别指向同一服务器的不同文件夹下的文件

开机自启动nginx

1
2
3
4
vim /etc/rc.local

#填入一行
/usr/local/nginx/sbin/nginx

建立git裸库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 回到git目录
cd /home/git
# 使用git用户创建git裸仓库,以blog.git为例
git init --bare blog.git

cd
mkdir -p /var/www/blog

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

#写入
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
#保存退出

chmod +x post-receive

#将/var/www/blog设置为主目录
cd /etc/nginx/sites-available
vim default

#删除所有内容然后填入

server {
listen 80;
listen [::]:80;

root /var/www/blog;
index index.html index.htm index.nginx-debian.html;

server_name 你的域名;#如果没有的话就别填了

location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
root /var/www/blog;
access_log off;
expires 1d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
root /var/www/blog;
access_log off;
expires 10m;
}
location / {
root /var/www/blog;
if (-f $request_filename) {
rewrite ^/(.*)$ /$1 break;
}
}
}
#保存退出

#进行nginx重启
cd /usr/local/nginx/sbin/
./nginx -s reload
#或者
./nginx -s stop
./nginx

本地端博客的配置文件

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@服务器ip地址:/home/git/blog.git
branch: master

服务器端-Github

登录了github后

create a new repository

创建了仓库后,点击右上角github头像

Settings → SSH and GPG keys → new SSH key

title随便起个名字

key填写本机ssh公钥

1
2
3
4
5
6
#在本地端git bash
ssh -T git@github.com

#提示
Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.
#则表示成功

本地端博客配置文件

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@github.com:用户名/用户名.github.io.git
branch: master