Hexo博客网站搭建

搭建过程


第一部分: Hexo博客架构及发布原理
第二部分: 本地软件安装,包括NodeJS、Git、hexo-cli软件、Hexo初始化,生成静态网站
第三部分: 服务器环境搭建,包括安装 Git 、Nginx基本配置 、创建 git 用户 。
第四部分: 使用Git自动化部署发布博客
第五部分: 其它设置
第六部分: 文章引用


博客架构


通过下图先理解博客发布原理,知道为什么要这样做,而不是Step by step。知其然,更要知其所以然。

 架构图

整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。


本地(Windows端)软件安装

包括NodeJS、 Git、 Hexo-cli软件

安装Git for Windows

软件下载

客户端系统采用Windos系统,需要安装Git for Windows。下载Git for Windows。
Git for Windows64位下载
Git for Windows32位下载

软件安装

下载完成后,直接点击Git-2.14.3-64-bit.exe 进行安装,安装方式采用默认安装就行了,全部下一步,如果你想安装在其它目录,可以自行修改安装目录(建议默认路径)。

Git本地配置

打开Git Bash 终端**(以后如无特殊说明,均在GitBash内执行)**,执行以下命令:

# 修改为你在代码中的用户名
git config --global user.name "YourName"
# 修改为你登录用的邮箱
git config --global user.email "Yourmail@domain.com"
#生成密钥,采用的邮箱一定要和上面的邮箱相同,否则后面登录无效
ssh-keygen -t rsa -C "Yourmail@domain.com"

其它系统安装

Linux系统如下安装执行:

# 基于 Redhat 系统
$sudo yum install git -y 
# 基于 Debian 系统
$sudo apt-get install git -y 

Mac系统:

下载地址:Git for Mac


安装Nodejs

下载Nodejs

Nodejs_64位下载地址: Nodejs中文64位 || Nodejs英文64位

安装Nodejs.msi

下载完成后,直接点击node-v8.7.0-x64.msi 进行安装,安装方式采用默认安装就行了,全部下一步,如果你想安装在其它目录,可以自行修改安装目录(建议默认路径)。


安装、初始化 Hexo-cli 生成本地博客

安装 Hexo-cli

Git Bash上执行安装

npm install -g hexo-cli

初始化Hexo程序

先建立主目录,然后初始化。

# 在D盘下新建blog目录,做为博客主目录。
mkdir -p /d/hexo
# 进入博客主目录
cd /d/hexo
#初始化hexo并指定名称为blog
hexo init blog

初始化博客目录

安装插件

执行初始化后,安装hexo-deployer-git(git部署插件)、hexo-server(本地服务器插件)、hexo-asset-image(图片插件)

hexo-deployer-git帮助文档
hexo-server帮助文档
hexo-asset-image 参考
hexo-abbrLink 参考
在添加图片插件前,需要修改博客目录下的_config.yml文件。

# 修改值为 true
post_asset_folder:true

然后执行以下安装命令。

cd blog
# 用于文章自动发布
npm install hexo-deployer-git --save
#用于本地测试
npm install hexo-server
# 图片插件
npm install hexo-asset-image --save
# 用于生成永久链接
npm install hexo-abbrlink --save

 安装插件

在建立文件时,Hexo会自动建立一个与文章同名的文件夹,您可以把与该文章相关的所有资源都放到那个文件夹,如此一来,您便可以更方便的使用资源。 你可以使用两种两种方法添加文件:

# 1、markdown 语法
![This is image](文章名/图片.jpg) # 这个在使用永久链接后失效,推荐使用下面的方法。

# 2、使用标签插件
{% asset_img 图片.jpg This is image %} 

​#### 生成博客文章

使用 hexo new <文章名称> 来新建文章,该命令会成成一个 .md 文件放置在 sources/_posts 文件夹。
你可以使用其它软件编辑,或直接使用vim编辑

hexo new "我的第一篇博客"
vim sources/_posts/我的第一篇博客.md

编辑完毕后,使用hexo g.md文件渲染成静态文件,然后启动服务器 hexo-server

hexo g
hexo server

现在就可以使用浏览器访问 http://localhost:4000查看博客了。


服务器端搭建


Git和NodeJS安装(CentOS环境)

#以下操作无特殊说明,均在服务器上执行。
# 安装Git
yum install git
# 添加NodeJS 8.x安装源
curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
# 安装NodeJS 8.x
yum install nodejs

NodeJS 安装可以参考: Linux安装NodeJS


创建git用户并设置免密登录

# 添加用户
adduser git
#设置用户密码
passwd git
# 把用户添加到Sudo用户组
vim /etc/sudoers
找到以下内容:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

在下面添加一行:

git    ALL=(ALL)    ALL

# 然后使用 ``wq!`` 强制保存退出``vim``编辑器。

切换到git用户,添加~/.ssh文件夹和~/.ssh/authorized_key文件,并赋予相应权限。

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

切换到本地GitBash,执行:

# 复制刚才生成的公钥
cat ~/.ssh/id_rsa.pub 

回到服务器端把公钥粘贴到authorized_keys文件中,保存退出。
修改文件权限。

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
# 回到客户端``Git Bash``执行``ssh``命令,测试是否可以免密登录。
ssh -v git@Server #Server=你的服务器地址

到此,git用户添加,免密登录完成。


安装配置Nginx

安装nginx

这里使用yum方式安装nginx,更多安装方法请百度、google查找

yum install nginx

配置Nginx

/etc/nginx下找到nginx.conf文件并修改,如果仅有管理一个网站,则直接在此配置文件下修改;如果有多个网站,建议将每个网站做单独的配置文件,以便修改。

# vim +37 /etc/nginx/nginx.conf # 直接定位到要操作的行
# include /etc/nginx/default.d/*.conf; # 添加此语句到37行,保存退出。

这样就可以在``/etc/nginx/default.d/``文件夹下添加独立网站的配置文件了。    
新建配置文件``blog.conf``

vim /etc/nginx/default.d/blog.conf

添加如下内容,保存退出 :

server #服务
{
    listen 80; #监听IPV4的本地80端口
    #listen [::]:80; #监听IPV6的本地80端口
    server_name www.seekbetter.me seekbetter.me; #目录绑定的域名
    index index.html index.htm index.php #默认主页 default.php;
    #这里要改成网站的根目录
    root  /path/to/www; #网站根目录
    #error_page   404   /404.html; 错误页跳转
    location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)$ #可显示的图片
    {
        access_log   off; #日志开关
        expires      1d; #记录时长
    }
    location ~ .*\.(js|css|txt|xml)?$ #可解析的文件
    {
        access_log   off; #日志开关
        expires      12h;#记录时长
    }
    location / { # 网站根目录
        try_files $uri $uri/ =404; #404跳转页
    }
    access_log  /var/log/nginx/blog.log; #日志路径
}

我的采用SSL证书,使用HTTPS访问所以配置文件如下:

server { # 服务
    listen 80; # 监听本地80端口
    server_name blog.longger.net; # 绑定的域名
    location / { # 本地配置
    root /var/www/html/blog; # 本地根目录
    }
    error_page 404 https://blog.longger.net/; # 错误跳转,直接跳转到https
}
server { # 服务
    listen 443; # 监听本地443端口
    server_name blog.longger.net; #绑定的域名
    ssl on; # SSL是否打开
    ssl_certificate   /etc/nginx/cert/blog.pem; # 网站证书
    ssl_certificate_key /etc/nginx/cert/blog.key; # 网站密钥
    ssl_session_timeout 5m; # session 时间
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 密钥
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # SSL版本
    ssl_prefer_server_ciphers on; 
    location / { 
        root /var/www/html/blog; # 本地目录
        index index.htm index.html; # 首页
        access_log   off; # 日志开关
        expires      1d; # 记录时长
    }
    access_log  /var/log/nginx/blog.log; # 日志路径
}

/var/www/html/blog/目录授权给git用户。否则在同步部署时git用户没有权限,不容易部署成功。

chown -R git:git /var/www/html/blog

使用Git自动化部署发布博客

在服务器上建立git裸库

创建一个裸仓库,裸仓库就是只保存git信息的Repository, 首先切换到git用户确保git用户拥有仓库所有权
一定要加 --bare,这样才是一个裸库。

su git
cd ~
git init -bare blog.git

使用git-hooks同步网站

在这里我们使用的是post-receive这个钩子,当git有收发的时候就会调用这个钩子。 在 ~/blog.git裸库的hooks文件夹中,
新建post-receive文件。

vim ~/blog.git/hooks/post-receive

添加如下内容,保存退出

#!/bin/sh
git --work-tree=/var/www/html/blog --git-dir=/home/git/blog.git checkout -f

赋予可执行权限

chmod +x post-receive

配置_config.yml文件,完成自动化部署

回到客户端在Git Bash编辑在博客根目录下的_config.yml文件。

$vim +79 /d/Hexo/blog/_config.yml

修改添加以下内容:

deploy:
type: git
repo: git@SERVER:/home/git/blog.git # 远端库地址<repository url>
# 同时发布到多个网站,如github,gitlab,gitee等,则可以添加多个repo,如:
# github: git@github.com:***/***.git
# gitlab: ****
branch: master # 这里填写分支,默认填写 master   [branch]
message: # 提交的信息,这里保持为空就行了   

保存后,把我们新建立的文章部署到服务器上。

```shell
hexo clean # 清除缓存 或 hexo cl
hexo generate --deploy # 生成文件并部署 或 hexo g -d

其它设置

更换主题

https://hexo.io/themes 查找主题然后下载,启用。

# 进入博客目录
cd /d/hexo/blog

# 执行git clone ,前面是git路径,后面是本地存放路径。
git clone https://github.com/wuchong/jacman.git themes/jacman

# 修改``/d/hexo/blog/_config.yml``文件中 ``themes``为新主题。

vim +75 /d/hexo/blog/_config.yml 

文章链接唯一化

也许你会数次更改文章题目或者变更文章发布时间,在默认设置下,文章链接都会改变,不利于搜索引擎收录,也不利于分享。唯一永久链接才是更好的选择。

安装

npm install hexo-abbrlink --save

在站点配置文件中查找代码permalink,将其更改为:

permalink: posts/:abbrlink/  # “posts/” 可自行更换

然后在站点配置文件中添加如下代码:

# abbrlink config
abbrlink:
  alg: crc32  # 算法:crc16(default) and crc32
  rep: hex    # 进制:dec(default) and hex

引用

主题参考:
使用Hexo搭建博客(三),博客配置、主题和写作
如何使用 Jacman 主题


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin

文章标题:Hexo博客网站搭建

字数:2.5k

本文作者:Longger

发布时间:2017-11-03, 11:35:55

最后更新:2024-11-01, 15:02:59

原始链接:https://www.longger.xin/article/2491929.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github