基本使用

  1. 安装
1
npm install -g hexo-cli
  1. 创建一个文件文件夹

  2. 在此问价夹内初始化一个博客

1
hexo init
  1. 启动博客
1
hexo s
  1. 新建一个博客文章
1
hexo n "名字"
  1. 清理缓存
1
hexo clean
  1. 生成文章
1
hexo g
  1. 部署
1
hexo d

部署阿里云

nginx 配置

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
26
27
28
29
30
31
32
33
34
35
36
37
38
server {
listen 80;
server_name domain www.domain;
location / {
root /usr/share/nginx/html/blog;
index index.html index.htm;
}
# location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
# root /usr/sn hare/nginx/html;
# index index.html;
# add_header Access-Control-Allow-Origin *;
# }

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

}

server {
listen 443 ssl;
server_name domain www.domain;

# 指定 SSL 证书和私钥文件
ssl_certificate /etc/ssl/certs/yangans.fun.pem; #公钥
ssl_certificate_key /etc/ssl/certs/yangans.fun.key; #私钥

# SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;

# 配置 Nginx 提供静态文件的路径
root /usr/share/nginx/html/blog;
index index.html;
}

docker

1
2
3
4
5
6
7
8
9
docker run -d \
-p 80:80 \
-p 443:443 \
--name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/certs/domain.pem:/etc/ssl/certs/domain.pem \
-v /mydata/nginx/certs/domain.key:/etc/ssl/certs/domain.key \
nginx

本地自动化部署

服务器端

  1. 基本配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#安装git
yum install git

#新建git用户
adduser -m git
passwd #设置密码

#修改用户权限
chmod 740 /etc/sudoers
vim /etc/sudoers # 添加git ALL=(ALL) ALL 允许 Git 用户在所有主机上、以任何身份执行任何命令。
chmod 400 /etc/sudoers

#切换到git用户
su git
#配置ssh免密
cd ~
mkdir .ssh
cd /.ssh
touch authorized_keys
  1. 配置git仓库
1
2
3
4
5
6
7
8
9
10
cd ~
git init --bare blog.git

#新建post—receive文件
vim ~/blog.git/hooks/post-receive
#输入以下内容:
git --work-tree=/mydata/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

#保存退出之后赋予可执行权限
chmod +x ~/blog.git/hooks/post-receive
  1. git init --bare blog.git:此命令初始化一个 裸仓库(bare repository),blog.git 就是这个仓库的目录名。裸仓库与普通仓库不同,它不包含工作目录(即不含文件的实际内容)。裸仓库仅用于存储 Git 版本控制数据,适用于作为远程仓库。

    • --bare 选项表示仓库不包含工作目录,仅存储 Git 版本信息,通常用于作为中央仓库,其他机器可以通过它进行 git pushgit pull
  2. vim ~/blog.git/hooks/post-receive:该命令会打开 Git 仓库的钩子目录中的 post-receive 文件。如果该文件不存在,vim 会创建它。Git 提供了一些钩子(hook),用来在特定操作后自动执行某些任务。post-receive 钩子是指在 git push 操作成功后执行的脚本,可以用来执行自动部署或其他任务。

  3. git --work-tree=/mydata/nginx/html/blog --git-dir=/home/git/blog.git checkout -f:这是在 post-receive 钩子中执行的命令,作用是将更新的 Git 内容拉取到指定的目录。

    • --work-tree=/mydata/nginx/html/blog:指定了 工作目录,即更新内容将被检出到 /mydata/nginx/html/blog 目录。工作目录就是实际存放文件内容的地方,在这里我们希望 Git 将仓库中的文件内容部署到 /home/www/website 目录。

    • --git-dir=/home/git/blog.git:指定了 Git 仓库的目录(blog.git)。这是仓库的路径,post-receive 钩子会从这个仓库中提取最新的提交。

    • checkout -f:执行 git checkout 命令将最新的提交检出到指定的工作目录,并且 -f表示强制覆盖文件(如果目标目录中已经有文件,git checkout 会覆盖这些文件)。

通过这条命令,你将仓库中的最新内容(代码或静态文件)同步到 /mydata/nginx/html/blog 目录。

/mydata/nginx/html/blog 目录为nginx html文件目录

配置 权限 chmod 777 -R /mydata/nginx/html/blog

本地主机

  1. 生成 SSH 密钥对(如果没有) 默认路径在 ~/.ssh/下
1
ssh-keygen -t rsa -b 4096
  • **-t rsa**:指定密钥类型为 RSA。

  • **-b 4096**:指定密钥长度为 4096 位。

  1. 将公钥复制到远程服务器
1
ssh-copy-id user@remote_host

该命令会将本地的 ~/.ssh/id_rsa.pub 公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中

hexo配置

打开blog/_config.yml配置

1
2
3
4
deploy:
type: 'git'
repo: git@remote_host:/home/git/blog.git
branch: master

将本机部署到服务器中

1
hexo d