Hexo部署到云服务器

博客的架构

Hexo部署流程
  • 首先本地hexo generate构建生成一个Public文件夹,Public里就是打包生成的静态HTML文件。
  • 通过hexo -d部署到我们自己服务器上的Git远程仓库
  • 最后服务器通过git-hooks同步到网站根目录

搭建流程

  1. 本地Hexo环境搭建,需要有node.js环境(这里不介绍本地环境搭建)
  2. 服务器环境搭建
  • Nginx配置(这里也不做介绍)
  • Git配置(主要介绍)

服务器Git配置

本地生成公钥私钥

终端执行ssh-keygen -t rsa命令;如果本地之前已经生成了那么可以拿来直接用;秘钥所在位置是~/.ssh,里面包含了id_rsaid_rsa.pub分别是私钥和公钥,id_rsa.pub是我们后面需要服务器需要用到的。

服务器Git安装

启动我们的服务器执行yum install git安装git,结束了我们可以通过git --version看下是否安装成功

yum install git

创建git用户

创建一个名为git的用户

adduser git
// 修改权限
chmod 740 /etc/sudoers
// 编辑
vim /etc/sudoers

找到如下内容

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

在下面添加如下代码

git     ALL=(ALL)       ALL

保存退出后改回权限:

chmod 400 /etc/sudoers
编辑sudoers

git服务器打开RSA认证

vim /etc/ssh/sshd_config

sshd_config中设置以下几项:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

设置Git用户密码

sudo passwd git

配置ssh

切换git用户并且设置密钥

su git

cd ~

mkdir .ssh

cd .ssh

// ~/.ssh/id_rsa.pub  ,将公钥复制粘贴到authorized_keys

vi authorized_keys

chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

执行ssh 命令测试

执行ssh命令测试是否可以免密登录ssh -v git@SERVER

ssh -v git@服务器的公网ip

成功返回如下:

验证ssh

创建git仓库

cd ~
// 默认是创建在home/git/目录下
git init --bare blog.git

使用–bare参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在

设置钩子

git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f

  • /home/www/website是我们在服务器上创建的目录,用来存放Hexo构建之后生成的静态文件
  • /home/git/blog.git是服务器上的远程git仓库位置。

保存并退出:

chmod +x ~/blog.git/hooks/post-receive

以上指令都需要在su git 之后执行 如果中途断开重新连接过,需要重新执行 su git指令 进入git账户。

  • 新建/home/www/website文件夹,需要切换到root账户
su root

输入密码

cd /home

mkdir www

cd www

mkdir website

// 修改文件夹权限 
chmod 777 /home/www/website

chmod 777 /home/www

设置Nginx web配置文件

server {
    ......
    # 站点根目录
    root /data/www/website;
}

重启Nginx服务

nginx -s reload

到此服务器配置完成

修改本地hexo配置文件

修改hexo配置文件

到此:大功告成!可以在本地部署一下hexo看看能够更新成功

hexo clean
hexo g -d

参考链接

如何将博客部署到云服务器

通过Git将Hexo博客部署到服务器

Hexo部署在阿里云服务器上

你可能感兴趣的:(Hexo部署到云服务器)