一直想搭建一个自己的博客来记录学到的东西,趁着这段疫情不能出去,网上找了许多篇文章,终于搭建了一个自己的博客。趁着刚搭建好,记录一下搭建的过程。

本次搭建是在win10+ubuntu系统下完成

1 本地安装配置

1.1 安装node.js和npm

从官网下载相应版本并安装,可以修改自定义安装路径,其余全部默认一路next(msi文件安装会自动配置环境变量)

下载地址:nodejs下载 (nodejs中已集成了npm)

安装完成后打开cmd分别输入

1
2
node -v
npm -v

出现版本号则安装成功

1.2 安装Git

从官网下载相应版本并安装,一路全部默认。

avatar

下载地址:Git下载

安装成功后打开cmd输入git --version来验证是否安装成功

1.3 Hexo

1.3.1 安装

在本地新建一个文件加blog,并打开,在空白处右击选择Git Bash Here

avatar

打开后输入npm install hexo-cli -g安装Hexo,安装完成后hexo -v验证是否安装成功

1.3.2 启动

继续输入hexo init初始化这个文件加为博客专用文件夹

avatar

成功后输入hexo shexo server来启动

avatar

启动成功后在浏览器输入http://127.0.0.1:4000,出现以下界面则安装成功

avatar

2 服务端

2.1 安装Git、Nginx

打开终端输入

1
sudo apt-get install git nginx

安装成功后输入service nginx start启动nginx,在浏览器输入服务器ip验证是否安装成功

avatar

2.2 创建相应文件夹

新建文件夹并赋予权限

1
2
3
4
5
mkdir /hexo
mkdir /hexo/blog
mkdir /hexo/temp
mkdir /hexo/GitLibrary
chmod -R 755 /hexo/blog /hexo/temp /hexo/GitLibrary

2.3 配置Nginx

进入nginx配置目录,打开配置文件,我的是在/etc/nginx文件夹加下

1
2
cd /etc/nginx
vi nginx.conf

找到监听80端口的代码,并修改为

1
2
3
4
5
6
server {
listen       80 default_server;
listen       [::]:80 default_server;
server_name  blog.lvaohui.top; # 填写个人域名
root         /hexo/blog; #填写上面创建的博客路径
}

保存并退出,重新启动nginx服务

1
service nginx restart

2.4 配置Git

进入上面创建好的文件夹,下载并初始化git裸库

1
2
cd /hexo/GitLibrary
git init --bare blog.git

创建Git脚本

1
2
cd blog.git/hooks
vi post-receive

写入以下内容并保存,路径根据上面创建的文件更改。脚本内容是为了让Git仓库每次检测到push行为后,删除原来的内容,并将最新的资源文件Git clone在你要访问的文件夹下。

1
2
3
4
5
6
7
8
9
#!/bin/sh
GIT_REPO=/hexo/GitLibrary/blog.git
TMP_GIT_CLONE=/hexo/temp
PUBLIC_WWW=/hexo/blog

rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}

给文件添加可执行权限

1
chmod +x post-receive

至此,服务端配置完毕

3 推送本地内容到服务器

在本地的blog文件夹下打开_config.yml配置文件,找到并修改以下内容

1
2
3
4
5
deploy:
type: git
message: update
repo: root@你的服务器IP:/hexo/GitLibrary/blog.git #上面创建的blog.git路径
branch: master

在打开的Git Bash终端中输入以下命令,生成静态文件并发布

1
2
3
hexo clean
hexo g
hexo d

如果输入hexo d后提示ERROR Deployer not found: git,则执行下面的语句后再运行发布命令即可

1
npm install --save hexo-deployer-git