在服务器/GitHub上搭建Hexo博客

 

本文章首发于:http://www.xtstarry.top/index.php/2018/07/24/在服务器-github上搭建hexo博客/

前言

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页,更多介绍请访问 Hexo官方网站

本篇文章的目的是帮助新手快速建立自己的博客,并发布到github.io或自己的服务器上。

配置本地服务器

让我们一步一步来。

配置本地环境

安装node.js

鉴于绝大多数人本地环境使用的都是Windows,本文章所有本地环境安装方式均为Windows下的。

访问node.js官方网站,下载推荐版以后安装即可。

安装git

访问git官方网站,下载适合自己Windows的版本,安装即可。当然如果你觉得官网下载速度过慢的话,也可以访问这里,这里收录了git国内下载的源。

安装Hexo

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

得益于良心的 Github Pages,我们能够使用Github Pages免费获得一个自己的站点。当然如果你想要拥有自己的域名的话需要自己购买。

如果你没有Github账号的话,首先你需要一个Github账号。注册完成账号后,我们按照官方文档 Setting up Git ,添加一个名为your_name.github.io 的Repository,注意名字必须是这个。

设置本地Git用户名和邮箱

首先我们要设置自己的全局用户名和邮箱。在Git终端中输入下列命令,记得将用户名和邮箱改成自己的。

git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"

注意这个用户名和邮箱并不是只在博客使用。想了解更多,可以查看Git教程 - 廖雪峰的官方网站,Git非常有用,希望大家都能学习一个。

配置SSH密钥

生成SSH密钥

如果你使用过Git,已经有了密钥,那我们可以直接使用。没有的话我们需要生成一个新的。

在Git终端输入以下命令,生成秘钥。

ssh-keygen -t rsa -b 4096 -C "[email protected]"

秘钥的设置我们默认就行,一路Enter直到完成。

添加SSH密钥到ssh-agent

输入以下命令,开启ssh-agent并添加我们刚刚生成的密钥。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

添加SSH密钥到GitHub

这里可以参考GitHub的官方文档Adding a new SSH key to your GitHub account

可以使用以下命令快捷复制RSA公钥到剪贴板:

clip < ~/.ssh/id_rsa.pub

测试SSH连接

在正式操作之前,我们可以先测试下本机与GitHub之间的连接。输入以下命令:

ssh -T [email protected]

若配置成功,则显示

Hi username!You've successfully authenticated,but Gitub does not provide shell access 

途中可能会受到密钥指纹认证,同意就行。

部署Hexo博客

本地设置

配置完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

nginx是是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,我们搭建博客,需要拿它做Web服务器。

如果之前没有安装过nginx,推荐使用LNMP一键安装包,大家照着文档安装即可。

安装node.js

这里的安装针对的是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

创建Git账户

sudo adduser git

为了安全起见,服务器上的Git操作我们一般都使用Git账户进行。

添加证书登录

和GitHub一样,我们需要向服务器添加RSA公钥用于认证登录。只不过这边没有图形界面,需要我们手动添加。

将之前的公钥保存在/home/git/.ssh/authorized_keys 文件中 ,没有这个文件的话我们可以在那里新建一个,输入保存即可。

初始化Git库

我们需要初始化一个Git库用于在服务器保存我们的博客。新建一个.git文件夹,然后用命令初始化它,我使用的是/var/repo/blog,git

sudo mkdir /var/repo
cd /var/repo
sudo git init --bare blog.git

配置 Git Hooks

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 登录权限

出于安全考虑,我们要让 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。

为nginx设置网页目录

我们需要将之前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端口

有一些服务器供应商是默认不开启80端口的,需要我们手动开启。

不同供应商的设置方法不同, 这里以阿里云举例,进入控制台,选择云服务器ECS,进入自己服务器的页面,点击 本实例安全组,选择 安全组列表,点击加入安全组,加入80端口即可。详细设定可以访问阿里云官方帮助论坛 配置公网IP和外部出口

部署博客

配置本地_config.yml

和GitHub一样,我们也需要配置deploy。

deploy:
  type: git
  repo: git@your_IP:/var/repo/blog.git
  branch: master

your_IP替换成你服务器的地址就行。

将本地部署到服务器

  • 清除缓存

    hexo clean
  • 生成静态页面:

    hexo generate
  • 将本地静态页面目录部署到云服务器

    hexo deploy

至此,我们要做的工作已经全部做完,可以访问自己的博客了。

猜你喜欢

转载自blog.csdn.net/XTStarry/article/details/85013204