这篇文章记录了我是如何实现通过一个指令将VPS或树莓派生成的文章发布到互联网,以及即便换了电脑也可以一键拉取Github上全部Hexo的备份,快速完成本地Hexo部署。
1. 安装Git
1.1 将Git部署到VPS
VPS服务器请注意设置防火墙相关端口开放,VPS则建议安装ufw解决一切防火墙端口问题造成的坑。
首先通过指令apt install git
安装Git和Node.js,如果是CentOS服务器需要把apt换成yum,我这里主要以VPS或树莓派的Debian环境来记录整个部署过程。
1.2 全局修改Github用户名
在VPS终端输入下列命令修改全局用户名(注意将引号内替换为个人帐号):
1 | git config --global user.name "你的GitHub用户名" |
然后查看是否已经全局修改用户名:git config --list
返回显示下面信息就是正确了
1 | user.name=你的用户名 |
安装NodeJS
1 | curl --silent --location https://rpm.nodesource.com/setup_13.x | bash - |
或者
1 | apt install npm |
添加git用户
1 | adduser git |
找到以下内容
1 | ## Allow root to run any commands anywhere |
在下面添加一行git ALL=(ALL) ALL
保存退出并改回权限chmod 400 /etc/sudoers
设置 git 用户密码sudo passwd git
切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
1 | su git |
设置SSH Key要回到Mac/PC本机终端内执行:ssh-keygen -t rsa -C “邮箱地址”,根据提示输入密码等完成设置。查看公开密钥:cat ~/.ssh/id_rsa.pub复制显示的内容。将公钥复制粘贴到
1 | chmod 600 ~/.ssh/authorized_keys |
在Mac Git Bash 中测试ssh -v git@ip地址 # 服务器外网地址
测试后如果不需要密码则成功!
如果是VPS本机从root部署到git,需要注意切换用户来生成和保存密钥。指令和上面一样,在root用户和默认目录下生成ssh并保存至git默认目录即可。
2. 部署Nginx环境
如果还想部署多个网站或者安装lnmp环境,建议使用OneInStack来一键部署。若是单纯为了Hexo,只安装Nginx就足够了,轻量化的部署可以有效减少树莓派的负载。
2.1 安装
apt install nginx
2.2 启动
1 | systemctl start nginx # 启动 |
输入服务器外网地址出现nginx信息表示启动成功。
2.3 配置
1 | nano /etc/nginx/nginx.conf |
修改内容 server 下
server_name 如有域名可以改为自己的;
location / {
root /usr/share/nginx/html/blog; # 此处增加为”/blog”,root指向博客所在目录
…
}
修改内容头部user nginx;
更改为user root;
保存退出后执行:
1 | sudo mkdir -p /usr/share/nginx/html/blog |
3. 部署Git库
3.1 在派初始化一个git裸库
切换到git用户,然后切换到git用户目录,接着初始化裸库:
1 | su git |
3.2 新建post-receive文件
nano ~/blog.git/hooks/post-receive
然后在该文件中输入以下内容,注意把/www/wwwroot/purel.in
改为你自己的网站目录
1 | #!/bin/sh |
3.3 备选方案
1 | #!/bin/bash |
3.4 赋予权限
以上两种二选一,保存退出之后再输入以下代码,赋予该文件可执行权限:
1 | chmod +x ~/blog.git/hooks/post-receive |
4. 同时部署多平台设置
编辑blog/_config.yml设置repo源,pi是VPS的git库,它被指向部署到我们刚刚设置的nginx网站目录,使之可以被访问。
1 | repo: |
5. 发布或调试Hexo博客
hexo clean && hexo g
清除并生成新的Hexo网站hexo clean && hexo g -d
清除、生成新的网站并发布到Git或服务器
通过以上指令发布后打开vps的网址就能看到新的hexo博客啦,也可以通过hexo s
在浏览器打开localhost:4000
进行本地调试Hexo。
6. 安装和卸载Hexo插件
6.1 通过npm安装插件
npm 切换 cnpm
1 | npm install -g cnpm --registry=https://registry.npm.taobao.org |
cnpm是淘宝在中国搭建的npm副本,保证中国用户使用依赖不受网路的影响。
cnpm 切换 npm
1 | npm config set registry https://registry.npmjs.org |
安装插件
1 | cnpm install hexo-deployer-git --save #安装git部署 |
6.2 卸载插件
npm list
查看已安装的插件列表npm uninstall <插件名>
#卸载哞个插件
进入node_modules/目录删除对应的插件文件rm -rf <插件名>
#删除插件目录
清除cache缓存npm cache clean -f
至此插件干干净净的卸载完毕
7. 备份整个Hexo
7.1 在Github新建分支
在master下新建分支名为hexo,setting-branch下修改default源为hexo,然后
git clone到本地,在MacOS下 Command+Shift+. 查看隐藏文件,删除该目录下.git外所有文件,VPS则在文件夹点击右键显示隐藏文件。
新建或修改.gitignore用来忽略一些不需要的文件
1 | .DS_Store |
7.2 PUSH到Github
1 | git add . |
7.3 Git的常用指令
add、commit、push命令,简单的代码提交流程git status
查看工作区代码相对于暂存区的差别git add .
将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录git commit -m ‘注释’
将缓存区内容添加到本地仓库git push origin master
将本地版本库推送到远程服务器,
origin是远程主机,master表示是远程服务器上的master分支,分支名是可以修改的
7.4 一键发布博客并完整备份
现在Github有两个分支,一个是master用于存放Hexo生成的public文件,上文我们新建的hexo分支用于存放Hexo的完整备份。
7.4.1 发布博客指令
hexo clean && hexo g -d
7.4.2 备份完整的Hexo
同步Hexo完整备份到Github分支hexogit add . && git commit –m "注释" && git push
8. 升级nodejs的方法
更新升级node版本的方法如下:
8.1 查看当前node版本
node –v
8.2 安装n模块
npm install -g n
8.3 升级到指定版本/最新版本
该步骤可能需要花费一些时间。升级之前,可以执行n ls
查看可升级的版本,如:n 6.9.1
或者你也可以告诉管理器,安装最新的稳定版本n stable
8.4 检查升级是否成功
node -v
如果得到的版本信息不正确,可能需要重启机器。
8.5 常见问题
如果遇到npm指令出现错误比如Error: Cannot find module 'semver'
重新安装最新版本即可:
1 | curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash - |
之后检查它们是否被正确部署
1 | node -v |
全部正确输出则代表安装正确。
然后重新安装Hexonpm install -g hexo-cli