惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
V
Vulnerabilities – Threatpost
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
SecWiki News
SecWiki News
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
B
Blog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
H
Hacker News: Front Page
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园_首页
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
W
WeLiveSecurity
N
News and Events Feed by Topic
F
Fortinet All Blogs
PCI Perspectives
PCI Perspectives
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
Hacker News: Ask HN
Hacker News: Ask HN
爱范儿
爱范儿
腾讯CDC
Last Week in AI
Last Week in AI
月光博客
月光博客
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Help Net Security
Help Net Security
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Heimdal Security Blog
L
LINUX DO - 最新话题
GbyAI
GbyAI
The Hacker News
The Hacker News
罗磊的独立博客
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
O
OpenAI News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享 Hexo-theme-butterfly修改调整记录教程 | Java技术经验分享 排序8:基数排序 | Java技术经验分享 排序7:归并排序 | Java技术经验分享 排序6:快速排序 | Java技术经验分享 排序5:冒泡排序 | Java技术经验分享 排序4:堆排序 | Java技术经验分享 排序3:选择排序 | Java技术经验分享 排序2:希尔排序 | Java技术经验分享 排序1:直接插入排序 | Java技术经验分享 推荐一款博客一文多发的良心工具OpenWrite | Java技术经验分享 近期学习计划 | Java技术经验分享 Nacos(九):Nacos集群部署和遇到的问题 | Java技术经验分享 Nacos(八):Nacos持久化 | Java技术经验分享 Nacos(七):Nacos共享配置 | Java技术经验分享 Nacos(六):多环境下如何“管理”及“隔离”配置和服务 | Java技术经验分享 Nacos(五):多环境下如何“读取”Nacos中相应的配置 | Java技术经验分享 Nacos(四):SpringCloud项目中接入Nacos作为配置中心 | Java技术经验分享 Nacos(三):Nacos与OpenFeign的对接使用 | Java技术经验分享 Nacos(二):SpringCloud项目中接入Nacos作为注册中心 | Java技术经验分享 Nacos(一):Nacos介绍 | Java技术经验分享 20190719小组分享 | Java技术经验分享 Java中equals和HashCode方法的分析 | Java技术经验分享 Java中==和equals方法的分析 | Java技术经验分享 Java中的自动拆装箱、装箱缓存 | Java技术经验分享 About-blog | Java技术经验分享 Java中的编译、反编译和反编译工具全家桶分享 | Java技术经验分享 finalize()的生命周期(执行过程) | Java技术经验分享 Java关键字之final、finally与finalize方法 | Java技术经验分享 Java中重写、重载 | Java技术经验分享 Java中面向对象的三大特征:继承、封装、多态 | Java技术经验分享 DockerFile介绍 | Java技术经验分享 Docker环境下安装Gitlab | Java技术经验分享 Docker中私有仓库的搭建流程 | Java技术经验分享 Centos7下两种方式安装Docker-CE | Java技术经验分享 Vert.x创建一个Http服务 | Java技术经验分享 Vert.x创建TCP服务端及客户端 | Java技术经验分享 Vert.x Core(二)- Event Bus(事件总线) | Java技术经验分享 Vert.x-Core(一)- 基础篇 | Java技术经验分享 SpringBoot项目中实现国际化 | Java技术经验分享 Vert.x介绍 | Java技术经验分享 毕设选题项目本地运行环境搭建教程 | Java技术经验分享 Jupyter Notebooks的安装和使用介绍 | Java技术经验分享 算法笔试题:1元,5元,10元,20元,50元、100元面值人民币组合给定x元的问题 | Java技术经验分享 Quartz学习总结 | Java技术经验分享 SpringBoot2.x集成Redis | Java技术经验分享 SpringBoot2.x集成MongoDB | Java技术经验分享 [SpringCloud学习] - 浅谈微服务架构 | Java技术经验分享 Hello World | Java技术经验分享
基于hexo和coding免费搭建个人博客网站 | Java技术经验分享
文章作者: LarsCheng · 2018-07-24 · via Java技术经验分享

前言

现如今有很多人每天在看博客,也有很多人在各大平台发表博客,今天我们通过hexo博客框架来自己动手搭建一个免费并且完全DIY的个人博客。Hexo的优势在于方便快捷并且提供的主题丰富,本文是笔者在搭建博客期间的一些经验分享。还是先来看一下搭建完成后的效果吧—我的博客

Hexo是由台湾在校大学生tommy351(twitter名)设计的一款基于node的静态网站生成器,它使用MarkDown语法解析文章,能够几秒内生成静态网页。使用hexo搭建博客你会发现页面浏览十分流畅,这就是静态网页部署的优势所在。

正文

搭建前提

在开始搭建博客网站之前需要以下准备:

下载并安装Node

进入Node下载页面,此处笔者下载当前稳定版本8.11.3,安装过程比较简单此处不再赘述。安装完成后在命令提示符下使用以下命令检测是否安装成功,如果显示安装的版本号即表示安装成功。

1
2
$ npm -v
v8.11.3

下载并安装Git

进入Git下载页面,选择对应的系统版本和git版本号进行下载,安装过程此处不再赘述。安装完成后在桌面右键可以看到git bash或者开始菜单中也可以找到。本文后续大部分操作也都在git bash中完成。
安装完成Git后,需要对Git进行用户名和密码的配置。

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。----廖雪峰Git教程

Hexo安装

首先我们先新建一个文件夹作为个人博客的文件目录,此处笔者创建blog文件夹。进入该文件夹后打开Git bash,开始安装hexo

1
2
3
$ npm install -g hexo-cli   
$ hexo init
$ npm install

此时在blog文件夹中我们可以看到已经生成了搭建网站所需要的所有文件了,其目录如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
│  .gitignore
│ package.json
│ _config.yml

├─node_modules

├─scaffolds
│ draft.md
│ page.md
│ post.md

├─source
│ └─_posts
│ hello-world.md

└─themes
└─landscape

现在一个简单的个人博客已经创建完成,我们可以使用hexo generate命令来生成静态网页。然后通过hexo server命令启动本地服务器来预览一下hexo为我们提供的最原始博客页面。当然这两个命令也可以简写如下。

1
2
hexo g    
hexo s

浏览器访问http://localhost:4000/ ,此时就可以看见一个简单的博客页面。该页面正是source目录下hello-world.md文件生成的静态网页。
hello-world

部署博客到coding

Coding与Github相似,都是基于Git的代码托管平台,GitHub大家应该都很熟悉,相对与Coding来说,GitHub面向英语系国家程序员,Coding面向中国程序猿,而且Coding的私有库可免费使用这是最大的区别。两者的用法和操作其实大同小异。笔者也是第一次使用Coding,所以大家共同学习。本文就使用了Coding来作为博客项目的托管平台。

新建仓库

1.打开coding主页,创建新项目

这里写图片描述
新建一个名为yourname.coding.me的项目,其中这里的yourname最好是coding注册时的username,等项目部署成功后它就是你博客的访问地址。如下所示coding可以创建私有仓库,GitHub中是要收费的。
这里写图片描述
2.开启Pages服务,开启后我们就可以通过 用户名+网站后缀来访问博客,而且还可以绑定域名通过固定域名来访问。进入项目->代码->Pages服务,具体操作如下:
这里写图片描述

连接到Coding

在管理Git项目时,无论是GitHub还是Coding我们可以通过SSH、HTTPS两种方式来clone或者push代码,当使用HTTPS的方式来管理代码,每次操作时都需要验证用户名和密码;而使用SSH方式Push代码之前需要配置个人的SSH key,这样就可以省掉繁琐的验证步骤。
当然,我们也可以选择通过HTTPS方式来进行项目的管理,那么请跳过SSH key的配置步骤,直接阅读项目部署步骤的内容。

配置SSH key

以下命令皆在Git bash下执行
1.检查你的电脑上是否已经生成了SSH Key

1
2
$ cd ~/.ssh
$ ls

如果该目录下存在id_rsa.pubid_dsa.pub文件,那么直接进行第三步

2.创建一个SSH Key
执行创建命令

1
ssh-keygen -t rsa -C "username"         

代码参数含义:

参数 描述 默认值
-t 指定密钥类型,默认是rsa,可以省略。 rsa
-C 设置注释文字,比如用户名。
-f -f指定密钥文件存储文件名。 id_rsa

以上命令省略了-f参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的SSH key代码,如:

1
2
Generating public/private rsa key pair. 
Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

此处我们直接按下回车使用默认文件名创建,那么就会生成id_rsa和id_rsa.pub两个秘钥文件。
接着又会提示你输入两次密码(该密码是你push文件的时候要输入的密码,而不是Coding管理者的密码),当然,你也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到Git服务器上了,如:

1
2
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

接下来,就会显示如下一些提示,如:

1
2
Your identification has been saved in /c/Users/you/.ssh/id_rsa. 
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.

3.在Coding中配置SSH Key
在刚才生成的文件夹中找到id_rsa.pub,用记事本打开后全选复制。
打开浏览器,进入我们Coding的工作台,账户->SSH公钥,按如下操作,将生成的SSH key添加。
图

部署发布项目

在我们创建的博客项目工作空间中找到_config.yml文件,打开后在文件的最后方,可以看到如下配置:

1
2
deploy:   
type:

对该配置进行修改如下(注意缩进):

1
2
3
4
deploy:   
type: git
repository: git@git.coding.net:yourname/yourname.coding.me.git #发布到Coding(SSH方式)
branch: master

该配置指定了Coding仓库的地址,并通过SSH方式进行连接。同样我们也可以通过HTTPS方式。repository写法如下:

repository: https://git.coding.net/yourname/yourname.coding.me.git

保存后关闭,在项目当前目录打开Git Bash ,因为项目的部署会用到hexo-deployer-git,所以先安装该插件:

1
$ npm install hexo-deployer-git --save

安装完成后,开始项目的部署操作,每次的部署操作可以分三步来,分别如下:

1
2
3
$ hexo clean                #清除缓存文件和已生成的静态文件。更换主题后一定要用
$ hexo g #完整命令为hexo generate ,生成静态文件。
$ hexo d #完整命令为hexo deploy ,部署网站。

如果你使用的是SSH方式的话,应该可以看到commit和push成功的记录,说明已经部署成功。如果使用的是HTTPS方式,会弹出输入用户名密码的输入框,键入你的coding用户名密码即可。

此时打开浏览器访问 https://yourname.coding.me

主题更换

我们刚才搭建的博客使用的是默认的landscape主题。我们也可以在hexo提供的主题页面中选择自己喜欢的进行配置。在博客文件夹下的themes文件夹,该目录下存放的就是所有的主题资源。此处笔者以Next主题的配置为例。

  1. 首先第一步下载主题,下载命令格式为git clone {主题链接} themes/{主题名称}
1
git clone https://github.com/iissnan/hexo-theme-next themes/next

下载完成后,在themes文件夹下就可以看到Next主题的相关文件。
2. 下载完成,接着就是启用主题。
在博客文件根目录中找到_config.yml文件,并用记事本打开,对theme属性进行修改

1
theme: next      #原本为lanscape主题,此处直接修改为我们下载的主题名
  1. 完成以上配置后,我们既定要记得清楚缓存并重新部署项目,操作如下:
1
2
3
$   hexo clean          #清除缓存
$ hexo g #生成静态文件
$ hexo d #部署博客网站

此时,我们的博客主题已经修改成功。

总结

搭建个人博客网站,并且坚持在网站上更发表自己的一些知识积累是很有意义的,这个过程不但让你融会贯通而且完全转化为自己的理解。笔者在搭建过程中也遇到许多坑,多亏有网上的众多大牛前辈。先回过头来看其实还是很有成就感的,当然当前进度的博客网站只能算是刚刚搭建好,hexo本来就是完全DIY的,主题和页面都需要更多的优化,最重要的是内容不能停,既然搭建好了,就坚持写下去吧。

大家如果有问题或者笔者博客内容有误可以留言交流,共同学习。

参考的文章

hexo开发手册可以初步了解hexo: https://hexo.io/zh-cn/docs/
博客搭建的基础教程写得非常详细: https://www.jianshu.com/p/eb002d35436c