将 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服务器创建网站路径,同步传文件的时候有些不能自动创建目录的,需要提前创建目录。
/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 等,本文不讨论。