Hexo系列2:node.js+hexo博客同步与备份

错误汇总

最近考虑把Node.js+hexo搭建的博客备份到云端,然后在另一台电脑同步更新。要实现多机同步与备份,首先需要从云端使用git clone得到网站原始文件,然后在新机器上安装node.js+hexo之后才可以正常使用。我在之前的电脑中把网站的原始文件备份到了oschina云端,然后想在另一台电脑的Ubuntu15.10系统上完成博客的同步更新,由于新电脑没有安装node.js+hexo环境,所以需要首先安装这两个软件。

下面是遇到的问题:

  • Error: socket hang up

    npm config set registry http://registry.npmjs.org/

  • Error: CERT_UNTRUSTED

    npm config set ca “”

  • No compatible version found

    npm install -g npm


Ubuntu安装Node.js的正确姿势

  • 下载和安装nvm

    $ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

  • nvm安装好了之后,通过nvm安装node.js

    $ nvm install 4

  • 让nvm生效

    $ source ~/.bashrc

  • 安装hexo

    $ npm install -g hexo-cli

  • 查看node.js、npm和hexo的版本

    $ node -v
    $ npm -v
    $ hexo version


发布博客的正确姿势

首先,你得从原来的电脑将网站的原始文件(不包括public文件夹、node_modules)上传到oschina的私有仓库(为什么使用oschina,因为github创建私有项目是需要$的,而oschina创建私有项目则完全免费)。然后需要将一些主题文件隐藏的.git文件删除,因为不删除的话无法提交更新。最后在其他电脑使用clone一下就可以开始写博客并发布了。下面是具体的操作步骤。

  • 在本地的其他路径下创建一个备份文件夹,并初始化git仓库

    git init
    git remote add origin https://git.oschina.net/ACCOUNT/REPONAME.git
    使用的时候需要将ACCOUNT修改成你的oschina的账号,REPONAME修改成你的仓库名称。origin是本地分支,remote add会将本地仓库与云端仓库关联起来

  • 将网站原始文件上传到oschina的私有仓库

    ##### 添加blog目录下所有文件,注意有个..gitignore声明过的文件不包含在内)
    git add .
    ##### 添加更新说明
    git commit -m “first commit”
    ##### 推送更新到云端服务器,-u表示本机第一次提交,之后就不用输-u了
    git push -u origin master


经过上面的步骤云端备份就已经完成了,之后就是在其他电脑进行clone,然后把网站原始文件同步到本地咯。下面是具体的步骤:

  • 同步网站原始文件到本地

    ##### 初始化仓库
    git init
    ###### 将本地文件和云端仓库映射起来
    git remote add origin
    ##### 获取云端(oschina)所有的网站文件
    git fetch –all
    ##### 将本地仓库强制指向从云端拉取的内容,不做合并处理往往在其他
    ##### 电脑操作的时候会首先创建一个空文件夹,所以这步不是必须的
    git reset –hard origin/master

  • 上面的步骤完全针对新手,对git比较熟悉的话可以直接使用下面的命令:

    git clone https://git.oschina.net/ACCOUNT/REPONAME.git

  • 在修改本地文件后,需要更新本地文件

    git add .
    git commit -m “commit message”
    git push origin master

  • 博客发布与部署

    hexo g
    hexo d
    或者
    hexo d -g


这样就完成了从另一台电脑发布博客并同步的目的,至此,多机同步与备份就完成了!

你可能感兴趣的:(ubuntu,node.js,hexo)