Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页,更多介绍请访问 Hexo官方网站。
本篇文章的目的是帮助新手快速建立自己的博客,并发布到github.io或自己的服务器上。
让我们一步一步来。
鉴于绝大多数人本地环境使用的都是Windows,本文章所有本地环境安装方式均为Windows下的。
访问node.js官方网站,下载推荐版以后安装即可。
访问git官方网站,下载适合自己Windows的版本,安装即可。当然如果你觉得官网下载速度过慢的话,也可以访问这里,这里收录了git国内下载的源。
git的终端(开始菜单中打开git/git bash),键入以下命令,等待片刻即可安装完成。
$ npm install -g hexo-cli
若命令无法执行,则按照指示安装需要的程序即可。
建立一个本地文件夹用于存放博客,我使用的是F:\blog
由于默认NPM镜像速度太慢,我们可以先切换到淘宝的源:
npm config set registry "https://registry.npm.taobao.org"
切换是暂时的,下次如果还要安装npm镜像时,仍需执行这条命令。
接下来在终端内切换到你所指定的文件夹,输入以下命令,完成初始化。
hexo init
npm install
完成后文件夹目录如下:
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
依次键入以下命令,我们就可以在http://localhost:4000/ 上查看我们博客的样式。
hexo clean
hexo generate
hexo server
可以在 _config.yml
中修改大部份的配置。
参数 | 描述 |
---|---|
title |
网站标题 |
subtitle |
网站副标题 |
description |
网站描述 |
author |
您的名字 |
language |
网站使用的语言 |
更多详细设置可以访问 配置,Hexo有中文文档,可以非常方便的阅读。
注意:修改参数时所有的冒号都必须有空格!
访问https://hexo.io/themes/挑选一个你喜欢的主题。点击图片预览,点击主题名称一般能跳转到主题的github界面。
拿我现在使用的主题举例,链接是https://github.com/EYHN/hexo-theme-one,一般主题页面都会提供文档,按照文档克隆主题到对应目录即可。
git clone https://github.com/作者/主题名称 themes/存放主题的文件夹
注意:不少博客都需要安装额外的插件,记得详细阅读文档防止漏装插件。
主题的设置在/themes/你下载的主题/_config.yml。不同的主题有着不同的配置文件。
得益于良心的 Github Pages,我们能够使用Github Pages免费获得一个自己的站点。当然如果你想要拥有自己的域名的话需要自己购买。
如果你没有Github账号的话,首先你需要一个Github账号。注册完成账号后,我们按照官方文档 Setting up Git ,添加一个名为your_name.github.io 的Repository,注意名字必须是这个。
首先我们要设置自己的全局用户名和邮箱。在Git终端中输入下列命令,记得将用户名和邮箱改成自己的。
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"
注意这个用户名和邮箱并不是只在博客使用。想了解更多,可以查看Git教程 - 廖雪峰的官方网站,Git非常有用,希望大家都能学习一个。
如果你使用过Git,已经有了密钥,那我们可以直接使用。没有的话我们需要生成一个新的。
在Git终端输入以下命令,生成秘钥。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
秘钥的设置我们默认就行,一路Enter直到完成。
输入以下命令,开启ssh-agent并添加我们刚刚生成的密钥。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
这里可以参考GitHub的官方文档Adding a new SSH key to your GitHub account 。
可以使用以下命令快捷复制RSA公钥到剪贴板:
clip < ~/.ssh/id_rsa.pub
在正式操作之前,我们可以先测试下本机与GitHub之间的连接。输入以下命令:
ssh -T [email protected]
若配置成功,则显示
Hi username!You've successfully authenticated,but Gitub does not provide shell access
途中可能会受到密钥指纹认证,同意就行。
配置完SSH密钥,我们就可以将博客部署到 GitHub 上了。
在终端中运行如下命令,安装 hexo-deployer-git 插件:
npm install hexo-deployer-git --save
修改_config.yml 中的deploy参数,一般都在文件的最后:
deploy:
type: git
repo: https://github.com/your_name/your_name.github.io.git
branch: master
将your_name换成自己GitHub的用户名即可。
在终端输入以下命令:
hexo deploy
我们的博客就被部署到GitHub上了。
第一次部署还会要求你输入GitHub的密码,输入即可。
上传速度因为地区不同网速可能也不同,有时候可能需要花费数分钟才能传完。
接着访问https://github.com/your_name/your_name.github.io ,如果推送成功那么我们在这个页面就能看到文件目录。
点击标题下方菜单栏右侧的Settings进入设置界面,向下拉到GitHub Pages,在Launch automatic page generator 点击Continue to layouts ,再点击Publish page 即可。
访问your_name.github.io,就可以看到你的博客内容了。
博客刚被创建好,可能需要等一会才能访问。当然时间不会太长,要是过了一个小时还是无法访问,可能就是哪里出问题了。
部署到服务器比GitHub要稍复杂些,但GitHub Pages因为服务器在国外,无论是更新博客还是其他人访问速度都有些差强人意,这时候一个国内的、高速稳定的服务器就成了一个不错的选择。但是需要注意的是,使用国内的服务器建博客也是要备案的。
国内的服务器供应商有许多都是有学生特惠的,完成学生认证后可以买到10块一个月、甚至更便宜的特价服务器。大家可以按照自己的需求选购。
购买好服务器后,我们就可以开始配置了。
nginx是是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,我们搭建博客,需要拿它做Web服务器。
如果之前没有安装过nginx,推荐使用LNMP一键安装包,大家照着文档安装即可。
这里的安装针对的是Ubuntu,如果大家服务器安装的是CentOS或者其他系统,可以使用对应的命令。
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
apt-get install -y nodejs
如果出现安装不上、找不到包等问题,可以升级下apt-get和curl。
sudo apt-get update
sudo apt install curl
sudo adduser git
为了安全起见,服务器上的Git操作我们一般都使用Git账户进行。
和GitHub一样,我们需要向服务器添加RSA公钥用于认证登录。只不过这边没有图形界面,需要我们手动添加。
将之前的公钥保存在/home/git/.ssh/authorized_keys 文件中 ,没有这个文件的话我们可以在那里新建一个,输入保存即可。
我们需要初始化一个Git库用于在服务器保存我们的博客。新建一个.git文件夹,然后用命令初始化它,我使用的是/var/repo/blog,git
sudo mkdir /var/repo
cd /var/repo
sudo git init --bare blog.git
Git Hooks是配置在Git中的脚本,能被特定事件调用。
在 blog.git/hooks 目录下新建一个 post-receive 文件
cd /var/repo/blog.git/hooks
在 post-receive 文件中写入如下内容 ,文件不存在的话可以新建一个。
#!/bin/sh
git --work-tree=/home/www/hexo --git-dir=/var/repo/blog.git checkout -f
注意,/home/www/hexo是博客静态页面存放的地方。这个脚本的作用就是生成能够被nginx使用的静态页面。当然你也能将静态页面放在其他地方,修改路径就行。
设置post-receive文件的可执行权限:
chmod +x post-receive
返回到blog.git的上级目录,将blog.git的拥有用户改为git
sudo chown -R git:git blog.git
出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现 ,将passwd文件中的
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
,就是把bash改为git-shell。
我们需要将之前Git Hooks生成的目录设置给nginx。默认配置文件在/etc/nginx/sites-enabled下。
我们打开该目录下的default文件,在server{}中添加
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/www/hexo;
server_name www.xxx.com;
}
注意,server位置填你的个人域名。要是还没申请域名或者不打算申请域名,可以以后再填或者不填。
有一些服务器供应商是默认不开启80端口的,需要我们手动开启。
不同供应商的设置方法不同, 这里以阿里云举例,进入控制台,选择云服务器ECS,进入自己服务器的页面,点击 本实例安全组,选择 安全组列表,点击加入安全组,加入80端口即可。详细设定可以访问阿里云官方帮助论坛 配置公网IP和外部出口
和GitHub一样,我们也需要配置deploy。
deploy:
type: git
repo: git@your_IP:/var/repo/blog.git
branch: master
your_IP替换成你服务器的地址就行。
清除缓存
hexo clean
生成静态页面:
hexo generate
将本地静态页面目录部署到云服务器
hexo deploy
至此,我们要做的工作已经全部做完,可以访问自己的博客了。