阿里云Ubuntu16.4LTS部署Hexo

安装Nginx和Git

apt-get update
apt-get install nginx
apt-get install git

配置好全局 git 的用户名和邮箱,如下:

git config --global user.name "HowarZheng"
git config --global user.email "howar.zheng@gmail.com"

测试环境

现在我们进入 /var/www/html 中,clone 下之前托管在 GitHub 或 Coding 上的博客源代码。

前面说了,nginx 默认的目录为 /var/www/html,我们将我们的博客的源代码 clone 至此,并修改 /etc/nginx/sites-available/default,将 server 下的 root 字段值修改为 clone 后的博客目录路径

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/howarzheng.github.io;

我的博客在 GitHub 上的仓库名为 https://howarzheng.github.io,所以修改为

 root /var/www/html/howarzheng.github.io

这个时候,我们即使没有备案,通过 IP 也可以访问自己的博客,可以直接在浏览器的地址栏输入阿里云公网的 IP 访问自己的博客。如果通过公网 IP 访问没有问题,说明环境搭建成功。


虽然看起来我们似乎将原来托管在 GitHub 或 Coding 上的博客迁移到阿里云服务器上了,但是博客源代码是通过手动 git clone 下来到 /var/www/html/howarzheng.github.io 上的,如果我们需要对博客进行修改或者发布新的文章,运行 hexo d还是将会更新的博客源代码上传至 GitHub 或 Coding 上,并没有自动上传到阿里云的服务器上。如果想同步修改,还是需要在服务器的 /var/www/html/howarzheng.github.io 目录下删除原来所有的博客源代码重新 git clone,或者通过 git pull 同步。

这是非常不方便的,因为博客的每一次修改都需要登上阿里云服务器手动同步,而我们期望的是能持续集成和部署。解决方法很简单,在阿里云的机器上搭建一个 Git 远程仓库(相对本地仓库来说),像 GitHub 一样,每次通过 hexo d 时候,也将网站内容更新到阿里云的 Git 仓库中,并自动同步到 /var/www/html/rundouble.github.io 中。

具体做法如下:

创建git用户

adduser git

在 /home/git 目录下创建裸仓 hexo.git:

cd /home/git

git init --bare hexo.git

修改 hexo.git 的所有者和组权限:

chown -R git:git hexo.git

获取本地机器 SSH 的公钥:

cat ~/.ssh/id_rsa.pub

复制公钥,将公钥写入阿里云机器的 /home/git/.ssh/authorized_keys 文件中

在 /home/git/hexo/hooks/post-receive 文件中写入:

#!/bin/sh
git --work-tree=/var/www/html/howarzheng.github.io --git-dir=/home/git/hexo.git checkout -f

修改本地机器上的 _config.yml 文件,在 deploy 块中添加阿里云机器上刚创建的 hexo.git 仓库:

deploy: 
  type: git
  repo: 
        github: git@github.com:RunDouble/howarzheng.github.io.git,master
        hexo: git@120.55.161.99:/home/git/hexo.git,master

常见问题

1.无法写入公钥
用root账号写入即可。
2.本地ssh连接错误,ssh登录提示RSA Host key认证失败的解决方法

【问题分析】

从提示看,很明显,是RSA key不匹配。

根据提示查看本机/home/user/.ssh/目录下,查看有如下3只文件:

id_rsa

id_rsa.pub

known_hosts

从文件名及查看文件内容可以看出:

1,前两个是用ssh-keygen命令生成的私钥和公钥;

2,known_hosts是ssh访问过的PC的公钥记录,当下次访问相同PC时ssh会核对公钥,如果不同则发出警告,避免受到DNS Hijack攻击;

从我们遇到的错误看,明显是known_hosts出了问题。

【解决方法】

1,删除/home/user/.ssh/目录下的known_hosts文件:

简单粗暴,如果想快速解决这个问题,可以采用

2,修改known_hosts内容:


   转载规则


《阿里云Ubuntu16.4LTS部署Hexo》 howarzheng 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Hexo博客添加天气预报 Hexo博客添加天气预报
这是一种不利用插件的方法。中国天气网:https://cj.weather.com.cn/plugin/pc 选择自定义插件—>自定义样式——>生成代码,然后会生成这样一段代码 1 <!-- weather -->
2019-08-14
下一篇 
Hexo博客中插入图片 Hexo博客中插入图片
本地引用绝对路径当Hexo项目中只用到少量图片时,可以将图片统一放在source/images文件夹中,通过markdown语法访问它们。 source/images/image.jpg![](/images/image.jpg)图片既可以
2019-08-13
  目录