本地搭建hexo

本地搭建hexo过程详见hexo官网,步骤比较详细,按照步骤搭建即可

hexo主题

我使用的Butterfly主题,主题配置请查看Butterfly安装文档

部署到云服务器

服务器环境 nginx 搭建

使用云服务商提供的远程登陆登录进云服务器,可以现在服务商设置中设置 root 用户的密码以提高安全性。
使用 root 用户,安装nginx。

1
yum install -y nginx

启动nginx

1
systemctl start nginx

修改配置文件

1
2
3
4
# 进入路径
cd /etc/nginx
# 使用vim编辑器编辑配置文件
vim nginx.conf

输入 i 进入 insert 模式,并进行如下修改:

  1. 将最上方 user 改为 root(或者创建名为nginx的用户并给予权限)
  2. 在 server 中更改 root 指向的路径,我这里选择 /home/blog ,此时我们还没有创建这个文件夹。
  3. 如果有域名的话,将域名写到server_name上。


    按 esc 键,输入 :wq 回车退出vim编辑器并保存文件。

    安装 Node.js 和 Git

    安装 Node.js

1
2
3
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
# 这里的setup_14.x指Node.js14的版本,可以改为其他版本,建议不要太低,hexo一些主题的Node.js版本都比较高。
yum install -y nodejs

安装完成之后,可以执行命令查看是否安装成功

1
2
node -v
npm -v

安装 Git 以及配置仓库

主要是让我们的PC可以通过ssh的方式连接到云服务器,然后可以通过 deploy 的方式将我们的博客推到服务器上
安装 Git

1
yum install git

安装结束后配置 git 用户

1
adduser git

修改用户的权限

1
2
chmod 740 /etc/sudoers
vi /etc/sudoers

在 sudoers 文件中添加

1
git     ALL=(ALL)       ALL


保存退出后将 sudoers 文件的权限改回

1
chmod 400 /etc/sudoers

设置 git 用户的密码

1
passwd git

切换到 git 用户,并创建 .ssh 文件夹和公钥密钥文件

1
2
3
4
5
6
7
8
9
10
11
# 切换到 git 用户
su git
cd ~
mkdir .ssh && cd .ssh
# 生成公钥和密钥文件
ssh-keygen
# 然后一路 enter 键即可,此时在目录下有两个文件,密钥 id_rsa 和公钥 id_rsa.pub ,接下来复制一份公钥
cp id_rsa.pub anthorized_keys
# 然后修改它的权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

接下来在我们自己的本地,打开 cmd,尝试使用 ssh 方式连接到我们的云服务器。

1
ssh -v git@云服务器的公网IP地址

提示:第一次登录,服务器会让你确认是否连接,输入 yes 进入下一步,然后服务器会让你输入 git 用户的密码,输完密码后回车即可。
当然这里也可以用其他方法,让服务器与 PC 建立 ssh 信任关系,这样就不需要输入密码了。
如果为了安全起见,还可以将 git 用户的 shell 登录权限禁用。

出现 Welcome to Alibaba Cloud Elastic Compute Service ! 或其他类似的语句,就说明登录成功了。
接下来需要创建一个新的 git 仓库,并且新建一个 post-update 文件(有些 git 版本可能是 post-receive ,注意分辨即可)。

1
2
3
cd ~
git init --bare blog.git
vi ~/home/git/blog.git/hooks/post-update

在post-update文件添加以下内容

—work-tree路径和nginx配置文件中root路径保持一致

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

添加结束后修改权限

1
2
3
chmod +x ~/home/git/blog.git/hooks/post-update
exit # 退出到 root 登录
chown -R git:git /home/git/blog.git # 添加权限

在本地完成推送部署

找到项目中hexo 的配置文件 _config.yml,找到deploy配置,进行修改

1
2
3
4
5
deploy:
type: git
repo: git@云服务器的公网IP:/home/git/blog.git
branch: master
message:

发布到服务器

1
2
hexo clean
hexo g -d

然后我们就可以在本地主机浏览器上输入域名或者公网IP访问我们的博客了。

常见问题

Q:部署到云服务器,出现了 403 界面怎么办?

A: 403 为禁止访问,nginx 服务器没有获得你的路径的读取的权限,检查是否给予了 post-update 权限 chmod +x ~/home/git/blog.git/hooks/post-update。如果还不行可以尝试使用 chmod -R 777 /home/blog。