centos自建git服务器部署hexo网站

github pages由于众所周知的原因访问速度不尽如人意,每个网站仅300M空间的限制在不用图床的情况下也不太够用,种种原因导致国内使用github pages搭建博客有诸多不便。如果使用vps建站并手动上传网站文件,后期使用会异常复杂,每次更新都得完全上传一遍。这时很容易想到将github部署的方便、vps的高速和大容量结合起来,自建git服务器更新网站。

本文将以centos 7为例讲解如何搭建git服务器并实现一键部署网站,操作环境为windows 10,使用github desktop自带的git shell。

设置ssh免密登陆

相信经常玩vps的人对ssh都不陌生,而git支持ssh的方式上传更改。ssh密钥登陆相对密码登录更方便而且安全系数更高,各大ssh客户端也基本都支持密钥登陆。windows下常用的putty可以从ppk文件读取密钥进行登陆,但是ppk文件不是我们需要的,因为它跟openssh客户端不兼容。

从ppk文件导出private key

如果你之前已经设置好了putty免密登陆,接下来就简单了。
打开puttygen,点击主界面上的Load按钮,打开ppk密钥文件。点击Conversions->Export OpenSSH Key,将文件保存在C:\Users\用户名\.ssh下,文件名id_rsa。

从头开始设置免密登陆

如果你之前并没有使用免密登陆,就参考网上linux下免密登陆ssh的教程,同样记得将private key保存在C:\Users\用户名\.ssh下。

测试ssh免密登陆

打开git shell,输入

1
ssh 用户名@服务器

如果成功登陆,说明设置生效。

创建git仓库

登陆服务器,创建git仓库并设置网站部署。

安装git

1
sudo yum install -y git

建立git仓库

1
git init --bare hexo.git(名字任取)

设置自动部署网站

git仓库里面的文件经过打包,所以不能直接将其设置为网站目录。我们需要添加一个脚本在客户端更新后自动提取文件到网站目录。

1
2
cd hexo.git/hooks/
nano post-update

在post-update文件中添加以下内容:
1
2
#!/bin/sh
git --work-tree=你的网站根目录路径 --git-dir=git仓库路径 checkout -f

以上路径全部为绝对路径
编辑完成后按Ctrl+O保存,接着按Ctrl+X退出编辑器。

本地设置

hexo设置

打开本地hexo安装目录下的_config.yml,找到deploy:,如下设置:

1
2
3
4
deploy:
type: git
repo: 用户名@服务器:~/hexo.git
branch: master

安装hexo-git部署模块

打开git shell,进入hexo安装目录,运行

1
npm install hexo-deployer-git --save

测试部署

继续运行

1
2
3
hexo clean
hexo g
hexo d

显示成功后,使用浏览器访问网站,如果可以正常打开,说明设置成功。

添加powershell脚本一键部署网站

如果嫌每次部署都要打开shell输指令很麻烦,可以在hexo安装目录下新建一个文本文件,改名为deploy.ps1。编辑该文件,添加以下内容:

1
2
3
4
C:\Users\用户名\AppData\Local\GitHub\shell.ps1
#hexo clean
hexo g
hexo d

第二行可以根据情况自行去除注释。
以后只需右键点击deploy.ps1,点“使用powershell运行”即可自动更新网站内容。

下面附上创建文章的powershell脚本

1
2
3
C:\Users\用户名\AppData\Local\GitHub\shell.ps1
$name=Read-Host "输入文章标题:"
hexo new post "$name"

文章目录
  1. 1. 设置ssh免密登陆
    1. 1.1. 从ppk文件导出private key
    2. 1.2. 从头开始设置免密登陆
    3. 1.3. 测试ssh免密登陆
  2. 2. 创建git仓库
    1. 2.1. 安装git
    2. 2.2. 建立git仓库
    3. 2.3. 设置自动部署网站
  3. 3. 本地设置
    1. 3.1. hexo设置
    2. 3.2. 安装hexo-git部署模块
    3. 3.3. 测试部署
  4. 4. 添加powershell脚本一键部署网站
|