Contents
  1. 1. 一. 本地 Linux 搭建 Hexo 博客环境
    1. 1.1. 本地Linux:
      1. 1.1.1. 安装hexo:
      2. 1.1.2. 用 hexo 把 md 转 html:
  2. 2. 二. Git 通道的配置
    1. 2.1. 本地 Linux :
    2. 2.2. 远程 Linux :
    3. 2.3. 本地 Linux
  3. 3. 三. 公网 Linux 配置 Nginx 服务
    1. 3.1. 远程 Linux

一. 本地 Linux 搭建 Hexo 博客环境

本地Linux:

安装hexo:

1
2
3
4
5
6
7
8
9
10
11
#方法一:
root@localhost:/# curl -sL https://deb.nodesource.com/setup_14.x | sh
root@localhost:/# apt install -y nodejs

#方法二: (不建议)
root@localhost:/# apt install nodejs
root@localhost:/# apt install npm

#全局安装 hexo:
root@localhost:/# npm install -g hexo-cli

用 hexo 把 md 转 html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#创建 hexo 博客的目录:
root@localhost: /# mkdir -p /var/www/huaehexo/
root@localhost: /# cd /var/www/huaehexo/

root@localhost:/var/www/huaehexo# hexo init

#创建 huae.md
root@localhost:/var/www/huaehexo# hexo new huae

#由 md 文件 生成 html:
root@localhost:/var/www/huaehexo# hexo g

root@localhost:/var/www/huaehexo# tree public/
public/
├── 2021
│ └── 05
│ └── 30
│ ├── hello-world
│ │ └── index.html
│ └── huae
│ └── index.html
#...(略)

二. Git 通道的配置

本地 Linux :

1
2
3
4
5
6
7
8
9
10
#安装git
root@localhost:/# apt install git

#生成 rsa 秘钥对:
root@localhost:~# ssh-keygen -t rsa
#我选择 rsa 保存位置为/root/.ssh/id_rsa

#查看公钥内容:(后续添加到远程Linux信任的key里面)
root@localhost:~# cat /root/.ssh/id_rsa.pub

远程 Linux :

  • 创建 Git 裸仓
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #安装git
    root@localhost:~# apt install git

    #创建用户huae (创建完以后在 /home 目录下有 huae 文件夹)
    root@localhost:~# adduser huae

    #切换为 用户huae:
    root@localhost:~# su huae

    #创建裸的(不带工作区的)git 仓库:
    huae@localhost:~$ git init --bare /home/huae/huae.git

    huae@localhost:~$ ls -l /home/huae
    total 4
    drwxrwxr-x 7 huae huae 4096 May 29 16:35 huae.git

可见 huae.git 的所属用户和用户组都是 huae。 如果创建huae.git 时是root 身份,可用 chown -R huae:huae /home/huae/huae.git 更改huae.git 的所属用户和用户组为huae。

  • 配置 Git 工作目录
    该目录用于存放提交上来的 html 等文件,后续Nginx 将该目录html 呈现在公网。
1
2
3
4
5
6
root@localhost:~# mkdir -p /var/www/huaehexo
#更改文件夹权限:
root@localhost:~# chmod -R 777 /var/www/huaehexo

# 配置 Git hooks:
root@localhost:~# vim /home/huae/huae.git/hooks/post-update

往 post-update 中写入 git --work-tree=/var/www/huaehexo --git-dir=/home/huae/huae.git checkout -f

  • 添加 SSH 信任
    创建authorized_keys文件,把 “本地Linux 的” id_rsa.pub 添加到此 authorized_keys,该id_rsa.pub 对应的用户就能提交 git 内容到本远程主机。
    1
    2
    root@localhost:~# mkdir -p  /home/huae/.ssh
    root@localhost:~# vim /home/huae/.ssh/authorized_keys

网站搭建好后出于安全目的,禁止 本地 Linux 通过 shell 登录 远程 Linux 在/etc/passwd 中找到类似 huae:x:1002:1002:,,,:/home/huae:/bin/bash 改为 huae:x:1002:1002:,,,:/home/huae:/usr/bin/git-shell

本地 Linux

配置 hexo 博客使其能自动推送到 远程Linux的git仓库

1
root@localhost:~# vim /var/www/huaehexo/_config.yml

写入内容:

1
2
3
4
5
6
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
# repo: <git仓库主人>@<远程Linux ip > : <到达 git仓库的路径>
repo: [email protected]:/home/huae/huae.git
branch: master

hexo 博客文件夹中安装 部署工具:

1
root@localhost:/var/www/huaehexo# npm install hexo-deployer-git --save

部署到远程 Linux:

1
root@localhost:/var/www/huaehexo# hexo -d

三. 公网 Linux 配置 Nginx 服务

远程 Linux

  • 安装 nginx
    1
    root@localhost:~# apt install nginx
  • 配置 nginx:
    1
    root@localhost:~# vim /etc/nginx/sites-enabled/default

填入:

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html;

server_name <#远程 Linux 公网 ip地址>;

location / {
root /var/www/huaehexo ; # git 的 work-tree , 即html 文件所在路径。
}
}

并且配置文件 /etc/nginx/nginx.confhttp { } 花括号里要填入include /etc/nginx/sites-enabled/*;

启动nginx:

1
root@localhost:~# service nginx restart

配置完以上的后,浏览器地址栏输入 http:// (远程 Linux 的ip 地址) 应该就能访问博客网页了。如果不能,检查一下远程 Linux 虚拟机/VPS/ECS 的(网络)安全组策略,是否已经开放 “http + 80 端口访问权限” , 另外是ubuntu自身的防火墙,可以搜索 iptables 如何开放 80 端口

Contents
  1. 1. 一. 本地 Linux 搭建 Hexo 博客环境
    1. 1.1. 本地Linux:
      1. 1.1.1. 安装hexo:
      2. 1.1.2. 用 hexo 把 md 转 html:
  2. 2. 二. Git 通道的配置
    1. 2.1. 本地 Linux :
    2. 2.2. 远程 Linux :
    3. 2.3. 本地 Linux
  3. 3. 三. 公网 Linux 配置 Nginx 服务
    1. 3.1. 远程 Linux