推荐理由

----搭建个人的空间博客目前深受个人开发者的追捧,然而博客的种类和平台有很多,Hexo是一个开源的静态博客生成器。相比于其他博客而言它只要是web容器就能用。除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一。商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台。开源的博客平台多如牛毛,而且不乏优秀之作,如 Hexo、Octopress、Jekyll、Wordpress。本系列文章将分享如何利用各种博客引擎在云端搭建属于自己的个人博客。今天是第一篇,介绍如何在 Ubuntu 14.04 上部署 Hexo 博客。Hexo 是用 Node.js 开发的一个静态站点生成器(Static Site Generator),支持 Markdown 语法写作,有着强大的插件系统,而且性能优异。阅读不少技术社区分享的文章时,看到国内不少同学都有在用这个引擎,看来「市场占有率」不低。本文将介绍如何在一台 Ubuntu 14.04 的 CVM 云服务器上快速部署 Hexo 博客站点,如何快速发布一篇博文并通过云服务器上的私有 Git 仓库部署到 Web 服务器目录下。

前提条件

----如果想跟着本教程顺利完成 Hexo 博客的搭建,需要具备以下条件:1、一台安装了 Ubuntu 14.04 的 CVM 云服务器。一般个人博客的流量都比较低,初期选择 1核 1GB内存类型的服务器即可,而且有不少免费试用的时间。2、在本地电脑上安装 Node.js 和 npm,建议谷歌相应关键词了解具体步骤。此外,还要在云服务器上安装 Git 和 Nginx 两个必备的软件包。Git 用于版本管理和部署,Nginx 用于静态博客托管。

sudo apt-get updatesudo apt-get install git nginx -y

另外,本文均以 Windows 为例,演示在本地端的操作,Mac 上的操作会更为简单。Windows 上没有 Mac 的 iTerm2 ,我们以 ConEmu + Git Bash 组成的终端作为替代。如果有读者感兴趣,后续再撰文介绍具体配置方法。1. 本地 Hexo 安装及初始化

NPM 上还有许多 Hexo 相关的包,但是只要安装好了 hexo-cli 和 hexo-server 这两个核心组件之后,就可以让博客跑起来了。我们使用 Node.js 的包管理器 npm 安装 hexo-cli 和 hexo-server。npm install hexo-cli hexo-server -g

hexo-cli 是 Hexo 的命令行工具,可用于快速新建、发布、部署博客;hexo-server 是 Hexo 的内建服务器,可用于部署前的预览和测试。-g 选项,表示全局安装。接下来,为 Hexo 博客做一些基础配置,包括创建基础文件。这步操作很简单,Hexo 提供了一个快捷命令,只需要提供一个存放文件的目录地址即可。

hexo init ~/hexo_blog

在国内环境下执行该命令,速度会有些慢。因为需要从 Hexo 在 Github 上的仓库克隆;仓库克隆成功后,会自动执行一系列 npm 命令,自安装依赖模块。这时,我们就已经有了一个写作、管理博客的环境。

2. 云端服务器配置

完成本地端的操作之后,暂时回到服务器的配置。在下面的操作之前,请确保已经购买了一台云服务器,并且能够以 ubuntu 用户身份正常登陆。在这部分,要完成以下件事情:1.为本地的 hexo_blog 配置一个部署静态文件的远程仓库。 许多教程均以 Github 作为中转的平台,但是会让整个流程 变得更为复杂,而且会受服务器与 Github 之间网络情况的 影响。假如 Github 宕机或者被封,你将无法更新博客。2.配置 Nginx 托管博客文件目录。3.配置远程仓库自动更新到博客文件目录的钩子。2.1 创建私有 Git 仓库

在 /var/repo/ 下,创建一个名为 hexo_static 的裸仓库(bare repo)。如果没有 /var/repo 目录,需要先创建;然后修改目录的所有权和用户权限,之后 ubuntu 用户都具备 /var/repo 目录下所有新生成的目录和文件的权限。sudo mkdir /var/repo/sudo chown -R $USER:$USER /var/repo/sudo chmod -R 755 /var/repo/

然后,执行如下命令:cd /var/repo/git init --bare hexo_static.git

2.2 配置 Nginx 托管文件目录

接下来,创建 /var/www/hexo 目录,用于 Nginx 托管。sudo mkdir -p /var/www/hexo

和上一步类似,这里也需要修改目录的所有权和权限。sudo chown -R $USER:$USER /var/www/hexosudo chmod -R 755 /var/www/hexo

然后,修改 Nginx 的 default 设置:sudo vim /etc/nginx/sites-available/default

将其中的 root 指令指向 /var/www/hexo 目录。...server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/hexo; # 需要修改的部分 index index.html index.htm;...

保存并退出文件。如果以后购买并备案域名之后,可以再将配置中的 default_server 修改为你的域名。最后,重启 Nginx 服务,使得改动生效。sudo service nginx restart

做完这一步之后,你去访问服务器的 IP 时,应该还是会报错的,因为 /var/www/hexo 目录是空的。

2.3 创建 Git 钩子

接下来,在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo。在自动生成的 hooks 目录下创建一个新的钩子文件:vim /var/repo/hexo_static.git/hooks/post-receive

在该文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)。#!/bin/bashgit --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

保存并退出文件,并让该文件变为可执行文件。chmod +x /var/repo/hexo_static.git/hooks/post-receive

至此,服务端的配置基本结束。

3. 完成本地 Hexo 配置

在第三部分的操作中,我们将完成以下任务: 1. 修改 Hexo 配置中的 URL 和默认文章版式; 2. 新建博客草稿并发布 3. 配置自动部署到服务器端的 hexo_static 裸仓库;3.1 修改 Hexo 部分默认配置

进入 hexo_blog 目录后,主要有以下文件。-rw-r--r-- 1 benjisong 1049089 1619 Feb 24 14:45 _config.yml-rw-r--r-- 1 benjisong 1049089 174 Feb 24 13:51 db.jsondrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:16 node_modules-rw-r--r-- 1 benjisong 1049089 484 Feb 24 12:16 package.jsondrwxr-xr-x 1 benjisong 1049089 0 Feb 24 13:50 publicdrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 scaffoldsdrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:13 sourcedrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 themes

其中,_config.yml 为 Hexo 的主配置文件。我们首先修改博客的 URL 地址。# URL## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'url: http://server-ip # 没有绑定域名时填写服务器的实际 IP 地址。root: /permalink: :year/:month/:day/:title/permalink_defaults:

接下来,修改 default_layout,该字段位于在 Writing 部分。将其从 post 修改为 draft ,表示每篇博文默认都是草稿,必须经过发布之后才能在博客站点上访问。# Writingnew_post_name: :title.md # File name of new postsdefault_layout: draft # 原来的值是 posttitlecase: false # Transform title into titlecase

暂时保存并退出文件。在 3.3 部分继续进行配置。

3.2. 新建博客草稿并发布

这里简单演示通过 Hexo 新建博文草稿,并发布的过程。执行如下命令,创建第一篇博文。hexo new first-post

你会看到类似如下输出:INFO Created: ~\Workspace\Git\hexo_blog\source\_drafts\first-post.md

在本地通过自己熟悉的编辑器,编辑博文。这里,我们把本文的内容写入第一篇博客中。title: 在 Ubuntu 14.04 服务器上部署 Hexo 博客tags: - Ubuntu - Hexocategories: - Hexocomments: truedate: 2017-02-24 15:31:00---## 以下为 Markdown 文章正文。

然后,通过如下命令发布博客:hexo publish first-post输出类似下面这样:INFO Published: ~\Workspace\Git\hexo_blog\source\_posts\first-post.md

博客推送到服务器之后,就可以在网站上访问了。

3.3 通过 Git 部署

到了这一步,可以说万事俱备,只欠东风了。这个东风,就是通过 Git 将 Hexo 生成的静态内容推送到服务器。继续编辑 _config.yml 文件,找到 Deployment 部分,按照如下情况修改:deploy: type: git repo: ubuntu@CVM 云服务器的IP地址:/var/repo/hexo_static branch: master

保存并退出文件。之后,需要安装一个 Hexo 包,负责将博客所需的静态内容发送到设置好的 Git 仓库。npm install hexo-deployer-git --save

安装好后可以测试部署:hexo generate && hexo deploy

期间可能会提示输入 ubuntu 用户的登录密码(如果没有设置 SSH 登录)。成功之后的输出大致如下:... create mode 100644 tags/Node-js/index.html create mode 100644 tags/Ubuntu/index.htmlBranch master set up to track remote branch master from ubuntu@139.199.170.173:/var/repo/hexo_static.To 139.199.170.173:/var/repo/hexo_static * [new branch] HEAD -> masterINFO Deploy done: git

现在,我们就可以在浏览器中打开 139.199.170.173,即可看到自己的博客网站了。我们发现,Hexo 对 blockquote 标签的样式并不太美观,需要后续再调优。



4. 通过镜像快速部署

本文虽然将 Hexo 博客的大致部署过程明确地列出,但是对于部分初学用户来说可能还会显得较为复杂。如何利用 CVM 云服务器提供商(即腾讯云)的其他服务,快速让其他用户不必经过上面的步骤,快速进行部署呢?在云计算中,与虚拟机相关的一个概念是镜像(Image)。用户通过镜像,可以一键启动多个配置一模一样的云服务器。我们这一步通过 CVM 的「制作系统镜像」功能,将 Hexo 博客的服务器端打包。

打包后的镜像,还可以上传到官方的服务市场,供所有用户使用;还可以直接共享给其他用户。如果有用户希望使用该镜像,可在本文下方评论区留下自己的腾讯云账号(登录时使用的QQ号或邮箱)。4.1 镜像的使用

镜像中已经设置好了服务端,通过镜像启动 CVM 云服务器之后,读者只需要根据本文第三部分「完成 Hexo 本地配置」中的步骤,设置好本地 Hexo 写作环境的部署地址和服务器 URL等参数即可。这里有一点一定要注意,通过镜像启动云服务器时,务必重新设置密码或密钥,否则镜像的制作者有可能轻松地登录你的服务器。不要选择上图中的方式安装。总结

--本文较为完整地介绍了 Hexo 博客的安装及初始化,服务端如何配置通过 Git 部署等。与其他教程不同,我们没有使用公开的 Github 等第三方服务,而是直接在服务器上创建了私有仓库。然后,通过 Git 钩子,将 Hexo 生成的博客静态文件,快速地推送到 Web 服务的托管目录。由于 Hexo 是采用 Node.js 开发的,可能对于其他语言的学习者来说吸引力不大,因为后续自主二次开发难度较高。因此,后续笔者还将介绍其他语言的博客引擎,如用 Python 编写的 Lektor 和用 PHP 编写的 Wordpress 等。敬请期待。文章出自腾讯云技术社区https://www.qcloud.com/community/article/241080001487926962推荐大家关注腾讯云技术社区微信公众号:QcloudCommunity

在腾讯云上部署Hexo博客的更多相关文章

  1. 码云上部署hexo博客框架

    title: 码云上部署hexo博客框架 Hexo框架在码云上实现个人博客 本文受 https://www.jianshu.com/p/84ae2ba1c133 启发编写 本地调试 安装完Node.j ...

  2. 在 Ubuntu 14.04 服务器上部署 Hexo 博客

    版权声明:本文由宋秉金 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/241080001487926962 来源:腾云阁  ...

  3. 在腾讯云上搭建WordPress博客

    笔者一直很羡慕那些搭建了个人博客的大牛,在最近工作之余也尝试着搭建了自己的博客,历时1周,这篇文章就将踩过的坑记录下来,先看下成果,链接在此 1- 购买腾讯云主机 腾讯云官网,我选了79元/月的最便宜 ...

  4. 基于 Github Actions 自动部署 Hexo 博客

    前言 前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包.上传.解压和刷新 CDN,非常麻烦.我的服务器配置也不高 2C2G 无 ...

  5. 在腾讯云上面搭建WordPress博客网站

    一.准备工作 我们使用腾讯云服务器来运行WordPress,腾讯云会给新用户七天的产品体验时间还有一些代金券,做为新手尝试成本是比较小的. 腾讯云长期举办 "云+校园" 活动,学生 ...

  6. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  7. 阿里云VPS搭建Hexo博客

    最近买了一个阿里云服务器,准备写自己的网站,和将自己的作品放在上面:开始的时候,感觉就一个服务器应该很简单,但是从申请域名到备案,再到服务器搭建,没想到一波三折:闲话不多说,只是记录我在搭建时,最简单 ...

  8. 在vps上搭建hexo博客

    最近更换了服务器,需要把自己的Hexo Next重新部署到新服务器上,本文记录一下在vps上搭建hexo博客的过程. 在vps上搭建hexo博客需要下面这些工具: Nginx: 用于博客展示 SSH: ...

  9. 在CentOS 7上部署Ghost博客

    作者:waringid 一.简介 跟静态博客不同的是,Ghost 这种轻量级的动态博客,有一个管理后台,可以直接写作和管理博客.本质上,跟 WordPress 是相通的,只是 Ghost 搭建在 No ...

随机推荐

  1. java多线程四种实现模板

    假设一个项目拥有三块独立代码块,需要执行,什么时候用多线程? 这些代码块某些时候需要同时运行,彼此独立,那么需要用到多线程操作更快... 这里把模板放在这里,需要用的时候寻找合适的来选用. 总体分为两 ...

  2. Linux的CentOS7系统下配置LNMP

    友情提示:在执行以下操作之前,请确保您已经安装了centos7,因为以下所有操作均是在centos7下操作完成的. 1.首先要停掉本机自带的防火墙,再配置iptables,开放21/22/80/808 ...

  3. mktime性能问题调查

    一.问题提出 会议中有同学提到使用mktime遇到一些问题: 1) 设置tm_isdst后速度很慢 2) 设置TZ环境变量提速极大 所以想调查下具体情况.   mktime真的这么慢?如果是,为什么? ...

  4. 【前端】:JavaScript

    前言: 开始学JavaScript,Dom,jQuery了,知识好杂,本身记忆力就不行的~~这篇博客简单介绍下JavaScript. 下篇博客写关于Dom的. JavaScript是一门编程语言(之前 ...

  5. 【PHP系列】PHP推荐标准之PSR-4,自动加载器策略

    接上回的继续说,上回说到PSR-3日志记录器接口,这回我们来说说PSR的最后一个标准,PSR-4,自动加载器策略. 缘由 自动加载器策略是指,在运行时按需查找PHP类.接口或性状,并将其载入PHP解释 ...

  6. Ionicons的使用

    安装 参考Ionicons npm install react-native-vector-icons --save 这时候可能会报错:npm WARN deprcated lodash@4.2.0: ...

  7. 2017-3-2 C#基础 集合

    要使用集合必须先引用命名空间,using System.Collections; 集合与数组的不同: 数组:同一类型,固定长度集合:不同类型,不固定长度 集合主要分为六大类:普通集合,泛型集合,哈希表 ...

  8. Nginx支持Socket转发过程详解

    序言 一网友在群中问,nginx支持socket转发吗? 实话说,我没做过socket转发,但是我知道socket跟http一样都是通过tcp或者udp通信的,我猜测啦一下nginx应该支持吧,然后又 ...

  9. Spring框架中 配置c3p0连接池 完成对数据库的访问

    开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...

  10. 第35篇 IIS执行原理

    服务器的监听(IIS6.0+版本) 当请求到达服务器时,请求最终会到达TCPIP.SYS驱动程序,TCPIP.SYS将请求转发给HTTP.SYS网络驱动程序的请求队列中(可以理解为专门处理http请求 ...