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

本文参考了四弦同学的文章:在Linux服务器上搭建Hexo:OS X、Windows与Linux本地环境,讲解得非常详细,在遇到这篇文章之前,踩了太多坑还没有头绪,现在终于解决了部署问题,非常非常感谢~

那我们开始吧~

在本地安装hexo

安装nvm

参考官方文档

  1. 安装:
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
  2. 使环境变量生效:
    export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
  3. 测试nvm是否安装生效:command -v nvm

通过nvm安装node.js

  1. 安装指定版本的node.js:nvm install 6.10.0
    可以通过nvm ls-remote查看远程所有版本以选择需要的版本

安装hexo

  1. 安装:npm install -g hexo-cli
    注意:如果安装过程中有报错:
npm ERR! hexo-util@0.6.0 postinstall: npm run build:highlight
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the hexo-util@0.6.0 postinstall script 'npm run build:highlight'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the hexo-util package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm run build:highlight
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs hexo-util
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls hexo-util
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /npm-debug.log

请重新输入一下命令再重新安装即可得到解决:
npm config set user 0
npm config set unsafe-perm true

参考:http://www.cnblogs.com/lidonghao/p/3543747.html
https://segmentfault.com/q/1010000006038485
http://www.07net01.com/2015/04/825142.html https://www.liquidweb.com/kb/how-to-install-nvm-node-version-manager-for-node-js-on-ubuntu-12-04-lts/

hexo建站

参考官网:Hexo官方文档

初始化

  1. 初始化主目录:hexo init <folder>
  2. 进入hexo主目录:cd <folder>
  3. 安装node_modules:npm install

站点配置文件_config.yml的配置

对一个新站点来说,需要编辑的项目有:

title: Hexo #站点的标题
subtitle: #站点的副标题
description: #站点的描述,写一段话来介绍你的博客吧:),主要为SEO使用
author: John Doe #显示的文章作者名字,例如我配置的是fourstring
language: #语言。简体中文是zh-Hans
timezone: #时区,可以不配置,默认以本地时区为准
url: http://yoursite.com #你的站点地址,如果是全站HTTPS记得写成https://domain.com
root: / #如果您的网站存放在子目录中,例如 http://yoursite.com/blog,则请将您的 url 设为 http://yoursite.com/blog 并把 root 设为 /blog/。(引用自官方文档)
permalink: :year/:month/:day/:title/ #固定链接格式。这项配置的格式为:变量1/变量2/变量3...,其中合法的变量格式为“:变量名”(注意,:是变量的组成部分!)这样生成的效果为/2016/08/10/文章标题。默认的固定链接格式存在一些问题,下文讲解
per_page: 10 #设置每页文章篇数,设为0可以关闭分页功能
theme: #使用的主题。下文讲解
deploy: #部署配置,其值是一个杂凑表,注意缩进,下文详细讲解

限于篇幅,省略部分无关注释

# Site
title: Patrick's Blog
subtitle: Love Coding, Enjoy Life
description: PatrickPhang
author: Patrick Phang
language: zh-Hans
timezone: Asia/Shanghai
avatar: /avatar.png

# URL
url: http://your_server_ip  # 此处修改为你的服务器IP
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

# Writing
new_post_name: :title.md
default_layout: post
titlecase: false
external_link: true
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
  enable: true
  line_number: true
  auto_detect: false
  tab_replace:

# Category & Tag
default_category: uncategorized
category_map:
tag_map:

# Date / Time format
date_format: YYYY-MM-DD
time_format: HH:mm:ss

# Pagination
per_page: 10
pagination_dir: page

# Extensions
theme: next

# Deployment
deploy:
  type: git
  repo: git@your_server_ip:/home/blog/hexo.git  # 此处为你服务器的git目录,先忽略,下面再解释
  branch: master

新建文章

hexo new post "标题"

预览

生成静态文件,位于public目录:hexo generate
本地开启服务器,localhost:4000 访问:hexo server

个性化你的主题

本文主要介绍怎么在服务器上部署你的博客,这部分省略,若想了解请参考如下链接:
IIssNan's Notes
hexo+NEXT主题之博客优化
hexo的私人订制
使用 Hexo 搭建博客的深度优化与定制
Hexo的NexT主题个性化:添加文章阅读量
如何使用 Hexo 部署个人博客
为NexT主题添加文章阅读量统计功能
Hexo 主题配置
Hexo-NexT搭建个人博客(二)
hexo-wordcount实现文章标题栏显示更多的文章信息(精)
动动手指,给你的Hexo站点添加最近访客(多说篇)
Hexo中播放网易云音乐的实践
一步步在GitHub上创建博客主页(1)
Hexo-用自己的页面做首页
hexo搭建个人博客如何设置自定义的页面为主页
自动随机切换Hexo博客的banner图片
Hexo 博客插入 B 站 html5 播放器
Hexo搭建博客的个性化设置
Hexo-设置阅读全文
hexo-NexT主题添加炫酷的动画插件
Hexo主题Yilia
部署 hexo 静态博客到自有服务器

遇到的问题

-bash: hexo: command not found解决办法
hexo 部署至Git遇到的坑
fatal: Unable to create temporary file '/home/username/git/myrepo.git/./objects/pack/tmp_pack_XXXXXX': Permission denied
Why am I getting git error “remote: error: unable to create temporary file: No such file or directory” on push?

部署到服务器

Git版本控制系统

准备(建立SSH信任关系)

参考:《ssh-copy-id帮你建立信任》–linux命令五分钟系列之四十一
SSH如何通过公钥连接云服务器

  1. 在本地生成公钥和密钥:ssh-keygen -t rsa
  2. 将本机生成的公钥发送到服务器上(建立信任关系):
    ssh-copy-id -i C:/Users/UserName/.ssh/id_rsa.pub root@server_ip
  3. 测试ssh远程登录是否成功:ssh root@server_ip

服务端配置

  1. 安装nginx(也可以通过编译安装):apt-get install nginx

  2. 新建git用户并添加权限:adduser git
    编辑配置文件,加入git到sudo用户组:nano /etc/sudoers

    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    git     ALL=(ALL:ALL) ALL   # 新增这一行
    
  3. 生成一对ssh认证密钥:

    su git
    cd /home/git
    mkdir /blog/.ssh
    cd blog/.ssh
    ssh-keygen -t rsa
    
  4. 配置Git仓库:
    将网站目录放到/home/git/

    mkdir -p /home/git/blog/hexo.git #Git仓库,不存储网站文件
    mkdir /home/git/blog/hexo #实际存储网站文件目录
    

    初始化空的Git仓库:git init --bare /home/git/blog/hexo.git

    进入该仓库,配置post-update hooks(有的可能是post-receive):
    cd /home/git/blog/hexo.git/hooks
    sudo nano /home/git/blog/hexo.git/hooks/post-update.sample

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

    赋予可执行权限:chmod +x post-update

  5. nginx web server配置
    修改配置文件:nano /etc/nginx/sites-enabled/default
    将root改为你的hexo主目录

    server {
        ......
        # root /var/www/html;
        root /home/git/blog/hexo;
    

本地配置

  1. 本地SSH配置
    打开Git Bash,建立配置文件

    mkdir ~/.ssh
    touch ~/.ssh/config
    

    编辑config文件,写入如下配置:

    Host hexo #SSH主机配置的识别名,配置好后直接"ssh 识别名"即可快速连接
    HostName your_server_ip #SSH主机的地址
    Port 22 #SSH主机端口
    User git #用户,本例是Git
    IdentityFile ~/.ssh/id_rsa #私钥文件的存放地址,建议复制到~/.ssh下统一管理
    

    然后执行:

    chmod 0600 ~/.ssh/testkey #换成你自己的私钥路径
    ssh hexo
    

    如果可以正常连接,说明我们的Git服务端已经配置成功。

  2. 配置部署选项
    编辑home/_config.yml文件,找到deploy项目,修改如下:

    deploy:
    type: git #用户名
    repo: git@hexo:/home/git/blog/hexo.git #Git仓库地址,:符号后为Git仓库服务器路径
    branch: master #分支,由于我们只用Git进行发布,master即可。
    

    保存,进入home目录,执行:

    hexo clean
    hexo deploy -g
    

    即可将静态文件发布到服务端了。

至此,一切(woc终于结束了)搭建步骤完成,快访问你的域名看看效果吧~

rsync远程同步工具

暂未使用过,过两天填坑

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容