Git + Nginx + Hexo + CentOS,静态博客的搭建过程

Uncategorized
2.3k words

Hexo静态博客的搭建过程

首先,我自己的情况如下:

  • 想要搭建一个博客,拿来记笔记 & 挂大佬友链 & 自己的简历内容++
  • 有一台(其实是两台)组的云服务器,平时没什么用,算力也不够我折腾太多
  • 被身边的人催着搭博客
  • 今天有空

综上所述,我开始搭博客,本来想本地Flask开发一下博客,包装Docker然后丢进服务器直接部署的,奈何懒狗本性爆发,就用现成的框架直接做了。
闲盐少许,讲一下我自己的搭建过程。

基础准备

一台CentOS服务器,一台装了Windows的笔记本,一个有时间的人

环境搭建

简单来说,我的目标是实现一个逻辑:
通过在笔记本上本地编辑Markdown文件,用本地Hexo编译成静态页面,然后通过Git把这些静态页面上传到服务器上,服务器通过Nginx去显示这些页面。

我也不知道Hexo是怎么编译的,我也不知道Nginx是怎么把那些文件和路径自动理清的,我只知道我要开始写博客.jpg

所以我们需要对笔记本(本地)和服务器都进行一些环境部署:

  • 本地:Hexo,Git
  • 服务器:Nginx,Git

Git真是好文明!

本地环境

所以首先需要在本地部署Hexo和Git,但是Hexo的部署我很久之前就搞好了,已经忘记遇见什么坑了,总之去搜一下Hexo的官网和CSDN、Stackoverflow、Bing什么的然后这样那样一下就好了,如果我重装Hexo的话应该就会把这里的部署过程全写上,现在只记得:

  • 安装Node.js环境
  • 安装npm,cnpm(cnpm是真神)

我知道!(谁问你了)Git的安装最简单了,只要去官网安装,然后可能需要手动也可能不需要手动添加到系统路径PATH里面就行了,在cmd里面执行Git -v就能知道有没有装好了。
装好Hexo和Git,本地环境就算结束。

服务器环境

服务器的Git安装更简单,直接指令安装就结束了:sudo yum install -y git,如果是yum源没弄好的话会找不到git;另外也可以直接去官网下载一个源码包,然后解压缩手动编译。
Nginx我自己在部署的时候是选择了wget下载源码然后手动编译,主要是因为没加yum源,找不到这个软件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 下载
wget https://nginx.org/download/nginx-1.21.6.tar.gz
# 解压
tar xvf nginx-1.21.6.tar.gz

# 进入解压后的目录
cd nginx-1.21.6
# 配置(带有https模块)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 编译
make
# 安装
make install

# 启动服务
# 需要先进入sbin目录下
cd /usr/local/nginx/sbin
# 启动nginx服务
./nginx
# 关闭服务

# 需要先进入sbin目录下
cd /usr/local/nginx/sbin
# 关闭nginx服务
./nginx -s stop

这部分我完全参考这个老哥的文章进行的,没有产生bug。

操作你o.O!Git部分

在服务器上新开一个git仓库,新新的,空空的。

1
2
3
4
5
mkdir -p projects/blog // 项目的真实目录
mkdir repos && cd repos
git init --bare blog.git // 创建一个裸露的仓库
cd blog.git/hooks
vi post-receive // 创建 hook 钩子函数,输入内容如下
1
2
#!/bin/sh
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f

注意,这里写的post-receive功能就是把每次接收到git仓库里的东西,打包丢到另一个文件夹里面,在这个脚本里就是把/home/git/repos/blog.git里的东西丢进/home/git/projects/blog文件夹,所以等下Nginx检测文件的路径要写成/home/git/projects/blog才行。

操作你O.o!Nginx部分

这里首先要装好Nginx,安装过程先进行一个跳的过,值得注意的是,我手动make install的Nginx并没有生成什么site-enabledefault目录,但是不影响我启动:

1
nginx

启动以后直接访问服务器外网IP,出现Nginx的欢迎页面即可。
然后去/usr/local/nginx/conf/nginx.conf修改配置文件:

1
2
3
4
location / {
root /home/git/projects/blog/;
index index.html index.htm;
}

然后Nginx就会去root字段后面的这个文件夹找文件。

操作你ovo!本地hexo上传服务器

修改hexo产生的_deploy文件

1
2
3
4
deploy:
type: git
repo: username@外网IP:/home/git/repos/blog.git # git仓库地址
branch: master

然后新建个hexo文章,hexo ghexo d就完事了。