Hexo搭建个人博客网站全指南

Hexo搭建个人博客网站全指南

本机的一些操作(通用)

安装node.js

node.js官网链接:Node.js (nodejs.org)

我们先从node.js官网下载最新版的node.js,这里有最新版和稳定版两个版本,根据Hexo官网的建议,如果我们要用最新的Hexo版本,最好也安装最新的Node.js,所以我们这里选择最新版

image-20230206133313319

之后,将我们刚刚下载好的msi安装包安装好

之后,在命令行检查是否安装正确

1
2
node -v	// node版本
npm -v // 包管理软件版本

安装hexo

Hexo官网:Hexo

1
npm install -g hexo-cli

初始化hexo文件夹

先在本机新建一个文件夹,然后进入这个文件夹,并用命令行打开,然后在当前目录下执行

1
hexo init

这样,hexo就会自行下载并配置好当前文件夹

安装git deployer插件

1
npm install hexo-deployer-git --save

至此,基本的hexo就搭建完成了

但是我们还需要把他们部署到GitHub Pages或者Gitee Pages或者自己的服务器上,才能够在网络上访问到我们的网站。

GitHub/Gitee Pages

这里以Gitee为例

新建仓库

先新建一个仓库

image-20230206132321059

对仓库初始化

进入仓库后,可以看到以下页面

image-20230207115817334

这里,我们只需要关注红色方框的部分。

第一个是我们的仓库地址,这个待会要用到。

第二个是我们的个人信息,如果之前使用过gitee,那么相信大家已经配置过了,可以忽略,否则,就需要在本地先执行这两条语句。

接下来,打开我们本地的hexo配置文件_config.yml,翻到最下面,可以看到deploy这一条,将repo替换成自己的仓库地址,其它部分直接copy过去就行。

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: "git"
repo: https://gitee.com/TFMLin/acblog.git
branch: master

最后,在hexo目录下执行

1
2
hexo clean
hexo g -d

第一行是清空本地数据库,第二行是生成静态文件并将其推送到服务器上。

将仓库开源

之后,打开我们的Gitee仓库,就可以看到我们的网站文件了。

image-20230207120456775

但是,此时这些文件只是保存在我们的代码仓库之中,并没有以网页的形式呈现给大家,我们还需要将其部署到Gitee Pages中。

首先,我们要将我们的代码开源

我们进入到管理选项卡

image-20230207120735786

翻到最下面,有一栏“是否开源”,我们选择开源,并勾上所有选项,开源许可依照自己情况选择,当然不选也是没有关系的

image-20230207120817806

打开GiteePages服务

之后,我们还要进入Gitee Pages选项卡开启GiteePages服务

image-20230207120606915

如果你的Gitee还没有实名认证,这里会提示你先要实名,这里就不在赘述。

image-20230207121018167

然后点击启动,注意,不要勾选强制使用https,不要勾选强制使用https

改一个小bug

尝试访问我们的网站,发现有些资源404了,我们还需要改一个配置,就是_config.yml文件里的url和root,形式如下。

image-20230207123716920

最后,就能成功访问我们的网站了!

image-20230207123842872

自建服务器

我们先ssh到自己的服务器,如果没有服务器的同学,可以上腾讯云或者阿里云购买服务器,个人比较喜欢用腾讯云,点击链接(https://url.cn/nxbcPuTu)即可进入购买页面,我们购买最低配置的版本就够了,这里我用了[https://url.cn/nxbcPuTu](2h2g的版本)。

如果网站需要备案,那就买境内服务器,如果不想备案,那就买境外服务器(境外推荐香港服务器,线路更好,访问速度相比其他地方更快)

安装git

ssh到自己的服务器之后,我们需要安装git

centos服务器的话,可以执行:

1
yum install git

ubuntu服务器就执行

1
apt install git

创建git用户并进行一些配置

创建git用户

之后我们要创建git用户并修改一些权限

1
2
3
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

然后用键盘上的上下左右键,定位到以下内容

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

按键盘上的i建进入编辑状态,在这个下方加入这样一行

1
git     ALL=(ALL)       ALL

效果如图所示

image-20230207190422548

然后按键盘上的esc建进入命令模式,再输入:wq保存,注意前面有个冒号

退出后,我们再执行下面这行代码把文件权限恢复

1
chmod 400 /etc/sudoers

修改git用户的密码

接下来我们为git用户添加密码,执行

1
sudo passwd git

效果如下表示成功

image-20230207190746131

然后再我们的本地电脑上,找到我们的公钥,如果没有的,先执行ssh-keygen命令生成,生成的过程一路回车即可

执行下面的命令后,我们会得到自己的公钥,然后将其一字不差的复制粘贴进服务器的authorized_keys文件中,具体步骤往下看

image-20230207190952776

之后,我们测试以下是否配置正确,在本机的命令行尝试连接git用户,以下是成功的效果,供参考。

image-20230207192824911

接下来,我们在git这个用户下继续我们的操作

创建git仓库

建裸库

创建git仓库,用于存放我们的网页

1
2
3
cd ~
// 默认是创建在home/git/目录下
git init --bare blog.git

配置hooks

配置钩子文件,使得每次我们往git仓库里push代码之后,都会将其中的文件拉取到我们存放网站的文件夹下

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

将下面的代码粘贴进我们的post-receive文件中,之后:wq保存

1
git --work-tree=/home/www/blog --git-dir=/home/git/blog.git checkout -f

然后再将这个文件赋予可执行权限

1
chmod +x ~/blog.git/hooks/post-receive

配置网站根目录

接下来,我们再切换至root用户进行以下操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
su root

输入密码

cd /home

mkdir www

cd www

mkdir website

// 修改文件夹权限
chmod 777 /home/www/blog

chmod 777 /home/www

最后,我们再配置一下nginx服务器,我们才能使网站文件放到互联网上供大家访问

配置nginx服务器用于网络访问我们的Hexo站点

nginx的安装及初始化

如果没有nginx服务器的,可以用以下命令下载

1
yum install nginx

用以下命令启动nginx

1
systemctl start nginx

为了防止服务器因为某些原因重启,我们再设置以下开机自启nginx

1
systemctl enable nginx

nginx配置文件

然后,我们需要编辑一下nginx的配置文件,使其定位到我们的网站根目录vim /etc/nginx/nginx.conf

要想正常访问,只需要关注以下部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
listen [::]:80;
server_name ac.lry666.cn; // 这里是网站的域名,如果有就填域名,没有就用默认值"_"(只要引号里的下划线)
root /home/www/blog/; // 这是网站的根目录,照抄就行

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

之后,我们重启nginx服务器

1
nginx -s reload

本地配置并推送到服务器

最后,我们再将本地的配置文件_config.yml中最后的deploy改成

1
2
3
4
deploy:
type: "git"
repo: git@ac.lry666.cn:/home/git/blog.git // 这里的服务器地址和仓库地址改为自己的
branch: master

再在hexo目录下

1
2
hexo clean
hexo g -d

最终测试效果

这样,我们就能够正常访问我们的网站了

image-20230207202930531

进阶使用https访问

当然前提是你得有一个自己的域名,我是在腾讯云购买的

如果想要配置https访问并且强制使用https,可以将配置文件修改,并将ssl证书上传至指定目录,下面是配置文件参考

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

server {
listen 80;
listen [::]:80;
server_name ac.lry666.cn;
root /home/www/blog/;

rewrite ^(.*) https://$server_name$1 permanent; // 重定向至https

// ... 省略掉,不用改
}

# Settings for a TLS enabled server.

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ac.lry666.cn;
root /home/www/blog/;

ssl_certificate "/etc/nginx/cert/ac.lry666.cn_bundle.crt"; // 这里要改成自己的证书
ssl_certificate_key "/etc/nginx/cert/ac.lry666.cn.key"; // 这里也是

// ... 省略掉,用默认的就行
}

Hexo搭建个人博客网站全指南
https://www.lry666.cn/posts/5e56/
作者
LRY666
发布于
2023年2月6日
许可协议