将 HEXO 部署到VPS

参考网络资料进行静态网站搭建,目标是利用HEXO创建网页,然后发布到VPS上。
网上找到的资料大多是关于hexo 部署在github,conding。
之前用wordpress建站,已经有了一个 vps 之后,可以把 hexo 部署到 vps 。通过创建Git裸仓库,利用git传输文件,然后hook到网站目录,实现静态网站的部署。

步骤如下:

1.安装 Git

apt install git

这里安装命令是Ubuntu安装git的命令,centos用npm安装

2.创建 git 用户

adduser git  #根据提示设置密码。

添加一个用户,这里用户名不一定是git,最好是自定义一个username,强化安全。

3.赋予git用户sudo权限

编辑 sudoers 文件加入以下内容

vim /etc/sudoers

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

为新创建的用户添加不同的权限,上面给的权限是root权限,非常高,如果明确不做特殊操作,可以降低传输文件的用户的权限,改善安全性。

4.关闭git用户shell权限

将最后一行的/bin/bash修改为usr/bin/git-shell

# vim /etc/passwd
#git:x:1001:1001:,,,:/home/git:/bin/bash
#git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

禁用shell,防止其他人通过新创建的用户hack进入vps。

5.配置 ssh

su 到 git 用户,将本地的公钥复制到authorized_keys文件里

~ cd /home/git                //切换到git用户目录
~ mkdir .ssh              //创建.ssh目录
~ cd .ssh
~ vim authorized_keys    //复制本地的公钥到这里

修改公钥文件相应权限

~ chmod 600 ~/.ssh/authorized_keys #只有拥有者有读写权限
~ chmod 700 ~/.ssh #只有拥有者有读、写、执行权限

以上是VPS服务器端操作命令和动作。
接下来,返回本地终端,输入# ssh -v git@VPS_IP测试是否可以连上 vps

应该可以免密用 git 用户登录 vps

6.确定网站路径

在VPS服务器创建网站路径,同步传文件的时候有些不能自动创建目录的,需要提前创建目录。

#git仓库
/var/www/blog #网站根目录

目录地址的文件夹名称可以自行修改,

7.初始化 git 仓库

~ cd /home/git
~ git init --bare blog.git #参数 –bare ,创建一个裸仓库,不包含工作区

8.配置 git hook

在 blog.git/hooks 目录下新建一个 post-receive 文件,加入以下内容

 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}

然后,添加post-receive文件的可执行权限
~ chmod +x post-receive

9.创建网站目录

通过以下命令# mkdir -p /var/www/blog创建blog文件夹。

10.配置 hexo 推送

编辑本地 hexo 文件夹中配置文件_config.yml加入以下内容:

deploy:
  type: git
  branch: master
  repo:
    blog-vps: git@*VPS_IP*:blog.git
  message: blog update

11.本地推送网站文件到 vps

# hexo d

查看网站目录是否生成网站文件

之后还需要配置 nginx 等,本文不讨论。