将Hexo部署到云服务器
2022-08-31发布
|

Hexo是一款基于Node.js的静态博客框架,它可以将markdown文件解析成静态网页托管在github上。由于特殊原因国内访问github特别慢,于是我打算把hexo部署到个人服务器上。

一、环境安装

如果你服务器中有这些环境,请跳过此步骤。我的服务器是Debian系统,使用apt作为包管理器。

首先更新软件列表

sudo apt-get update

1.1 安装Node环境

 sudo apt install nodejs
 sudo apt install nodejs npm

node -vnpm -v 验证是否安装成功

1.2 安装Nginx、Git

sudo apt install nginx
sudo apt install git

二、配置Git环境

参考:Git - 配置服务器 (git-scm.com)

2.1 在云服务器上创建一个git用户

使用adduser git 创建一个名为git的系统用户

2.2 配置证书

切换到git用户:su git

创建.ssh目录:mkdir .ssh && chmod 700 .ssh

然后在云服务创建authorized_keys公钥保存文件:touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

使用ssh生成访问服务器的公钥和私钥:ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa

生成 authorized_keys文件 :cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2.3 创建git仓库目录

创建一个名为blog的git仓库

mkdir /hexo
cd /hexo
git init --bare blog.git

2.4 配置

参考:GIT HOOKS

vim /hexo/blog.git/hooks/post-receive

添加

#!/bin/sh
git --work-tree=/www/hexo --git-dir=/hexo/blog.git checkout -f

然后保存退出,并设置执行权限

chmod +x /hexo/blog.git/hooks/post-receive

改变blog.git用户的拥有者为git用户

chown -R git:git /hexo/blog.git

2.5 创建静态文件目录

创建静态文件目录,并赋予权限

mkdir /www/hexo
chown -R git:git /www/hexo
chmod -R 755 /www/hexo

2.6 限制git用户的shell

上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell

  • 使用命令which git-shell 查看git-shell的安装位置。(通常git-shell/usr/bin/git-shell中)
  • 查看cat /etc/shells中是否添加了git-shell的路径,如果没有使用sudo vim /etc/shells编辑文件,将git-shell添加进去
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen
/usr/bin/git-shell # 添加你的git-shell
  • 使用 chsh 命令修改git用户的shell权限

    终端中输入sudo chsh git, 然后在Login Shell [/bin/bash]: 后输入git-shell路径/usr/bin/git-shell

  • 这样,git用户就只能使用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell命令

修改完成后验证: vim /etc/passwd找到类似git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell,看看git用户是否是以git-shell结尾

2.7 测试

配置完git后,可以通过git clone git@<ip地址或域名>:/hexo/blog.git来测试git

三、hexo配置

打开hexo博客目录,编辑_config.yml文件。修改repository为:

deploy:
  type: git
  repository: git@131.xxx.xxx.63:/hexo/blog.git
  branch: master

然后执行hexo g -d将文件上传到你部署的服务器上

四、配置Nginx

现在云服务器上有静态网页了,只需要配置nginx就能从网络访问了。

vim /etc/nginx/sites-available/default

注意:不同版本的nginx或系统,nginx的配置文件不一定相同,根据具体情况来修改配置

修改nginx指向的目录,如果有域名解析,也可以加上。这样就可以通过ip或者域名访问hexo博客了。

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  root /www/hexo;
  server_name www.xxx.com;
  location / {
      try_files $uri $uri/ =404;
  }
}
------------ END ------------