hexo博客--推送至远程服务器
前言
上次完善hexo博客搭建后还有一个问题没有解决,就是如何快速将本地生成的静态页面推送至远程服务器,一开始采取ftp之类的方式直接将本地生成的页面直接复制粘贴到远程服务器的文件夹,但是这种方式很麻烦,需要在本地文件管理器中找到生成的静态页面,使用xftp,winscp等软件登录远程服务器,将本地文件夹直接复制到远程服务器,等待其传输。于是我选择使用git直接将本地静态页面文件推送至远程服务器。
远程服务器中安装Git
使用apt install git
直接安装
建立一个用于管理博客文件夹的用户
新建用户
useradd hexo
passwd hexo
授权
(首先需要安装sudo)vim /etc/sudoers
在root ALL=(ALL:ALL) ALL
下添加hexo ALL=(ALL:ALL) ALL
创建仓库以及设置自动部署
新建仓库并建立钩子
我们在这里需要用到的是裸库,即仅包含版本控制信息的仓库。不保存文件,常用作服务器仓库,实现数据共享和同步。
自动部署的核心在于git-hooks,类似于脚本,当某种条件触发时执行钩子文件中的内容。
cd /home
mkdir repo & cd repo
git init --bare blog.git
编辑钩子文件vim /home/repo/blog.git/hooks/post-receive
输入git --work-tree=你的项目存放目录 --git-dir=/home/repo/blog.git checkout -f
退出vim并保存。
post-receive钩子时当Git收到push请求的时候就会调用此钩子。
为钩子文件以及仓库目录授权(将仓库目录及项目目录转交给新建的用户(hexo))
1 |
|
修改hexo部署配置
找到本地hexo文件夹中的_config.yml文件打开编辑
找到deploy这一配置
将repo改为hexo@服务器ip:git仓库目录(/home/repo/blog.git)
这样我们就完成了初步配置。我们可以使用hexo d
命令将本地生成的文件部署至远程服务器了,但是每次部署的时候会弹出输入hexo用户的密码,我们可以使用密钥对来实现免登录。
免登录配置
假设我们在本地是用Git bash来输入命令的,通过Git bash输入
1 |
|
来生成密钥对,此时私钥和公钥都存在你指定的位置中,将公钥(.pub文件)中的内容复制下来。
进入服务器端,在hexo用户目录(/home/hexo)中新建目录.sshmkdir .ssh
在此目录中新建文件 authorized_keys,将之前复制的公钥中的内容全部复制进去。
修改权限
1 |
|
修改目录拥有者chown -R hexo:hexo /home/hexo/.ssh
这样就可以实现免登录连接至远程服务器,即可以实现免登录部署。