感谢以下博主的文章指导

Jerry

[https://butterfly.js.org/posts/dc584b87/]:

JesseXW

https://blog.csdn.net/JesseXW/article/details/135649752?ops_request_misc=%257B%2522request%255Fid%2522%253A%25225C569AA8-411B-49F6-94C6-3C1F75713717%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=5C569AA8-411B-49F6-94C6-3C1F75713717&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-135649752-null-null.142^v100^pc_search_result_base4&utm_term=Butterfly%E4%B8%BB%E9%A2%98&spm=1018.2226.3001.4187

korgs

https://blog.csdn.net/liudonglovehemin/article/details/131087757?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522551019DA-4FD0-438E-AE96-D985625368B8%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=551019DA-4FD0-438E-AE96-D985625368B8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-131087757-null-null.142^v100^pc_search_result_base4&utm_term=hexo%20butterfly%20%E5%A6%82%E4%BD%95%E5%86%99%E6%96%87%E7%AB%A0&spm=1018.2226.3001.4187

小满@

https://blog.csdn.net/mjh1667002013/article/details/129290903?ops_request_misc=&request_id=&biz_id=102&utm_term=hexo%20butterfly%20%E5%A6%82%E4%BD%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-129290903.142^v100^pc_search_result_base4&spm=1018.2226.3001.4187

hexo官方大人

[https://hexo.io/zh-tw/docs/]:

VIP_CQCRE

https://blog.csdn.net/cqcre/article/details/105742951?ops_request_misc=&request_id=&biz_id=102&utm_term=Hexo%E9%83%A8%E7%BD%B2%E5%88%B0%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-105742951.142^v100^pc_search_result_base4&spm=1018.2226.3001.4187

这个师傅的文章帮我解决了上线的大多数问题,讲的很仔细,可以参考阅读

此篇在我完成网页的基本搭建后所写旨为分享网页制作所遇到的一些问题

文章写作

由于我使用的是Typora,其本身就是一个专门为了写markdown文件的软件,所以这让我写文章更加方便,不用专门去考虑标题大小、引用等问题,大家可以自行去搜索类似的md软件,方便自己写文章。

在文章内先写Post Front-matter

title	【必需】文章标题
date 【必需】文章创建日期
updated 【可选】文章更新日期
tags 【可选】文章标签
categories 【可选】文章分类
keywords 【可选】文章关键字
description 【可选】文章描述
top_img 【可选】文章顶部图片
cover 【可选】文章缩略图(如果没有设置top_img,文章页顶部将显示缩略图,可设为false/图片地址/留空)
comments 【可选】显示文章评论模块(默认 true)
toc 【可选】显示文章TOC(默认为设置中toc的enable配置)
toc_number 【可选】显示toc_number(默认为设置中toc的number配置)
toc_style_simple 【可选】显示 toc 简洁模式
copyright 【可选】显示文章版权模块(默认为设置中post_copyright的enable配置)
copyright_author 【可选】文章版权模块的文章作者
copyright_author_href 【可选】文章版权模块的文章作者链接
copyright_url 【可选】文章版权模块的文章连结链接
copyright_info 【可选】文章版权模块的版权声明文字
mathjax 【可选】显示mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false )
katex 【可选】显示 katex (当设置 katex 的 per_page: false 时,才需要配置,默认 false )
aplayer 【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置
highlight_shrink 【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置)
aside 【可选】显示侧边栏 (默认 true)
abcjs 【可选】加载 abcjs (当设置 abcjs 的 per_page: false 时,才需要配置,默认 false )

这些内容就title跟date为必填项 其他的都是选填

然后就是文章的内容了

放到_posts文件夹下,再运行,文章就已经可以显示出来了

图片显示

不知道脑子里突然想到的是图床,因为之前使用的路径访问好像都有问题,如果之后还准备好好运行这个网站的话可能会自己去搭一个图床吧,现在用的是免费的网站。

<img src="" width="500" height="400" />

*上线部署

上线部署是困扰了我很久的问题,近期才得以解决,在此分享一下我的解决办法

前期准备

云服务器、域名&备案(备案时间等待可能有几个工作日吧)

我使用的是腾讯云 配置的是Ubuntu

本地安装git、hexo、写笔记

服务器安装git、创建git仓库、配置密钥、钩子函数

本地从github把hexo代码拉取下来,之后每次修改后调用的hexo deploy命令就会自动将上传到服务器的git仓库,服务器端的git仓库再用钩子函数将本地上传的静态文件部署到指定目录

开始部署

本地创建git用户

桌面右键打开bit bash

git config --global user.email "xxx@xxx.com"     # xxx@xxx.com改为邮箱
git config --global user.name "xxx" # xxx为用户名

本地计算机安装Node.js和npm

这个在使用hexo的时候就应该配置好了

在cmd分别输入

node -v
npm -v

检查安装是否成功和版本

本地准备好写好的网站
链接服务器

在服务器中安装nginx

sudo apt install nginx

这里我没有跟网站上的步骤一样,目前也没有太大的问题

安装 gcc-c++pcrezlibopenssl 及其开发库

sudo apt install -y g++ libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

安装nodejs、npm

cd ~
curl -sL https://rpm.nodesource.com/setup_10.x | bash -#yum install -y nodejs

在服务器中,安装git

apt install git

配置git用户

adduser git

赋予用户权限

chmod 740 /etc/sudoers
vi /etc/sudoers

找到 root ALL=(ALL) ALL

在他的下一行添加

git     ALL=(ALL)       ALL

修改 sudoers 文件权限

chmod 400 /etc/sudoers 

设置 git 用户的密码

sudo passwd git
*** 给git用户配置ssh免密公钥登录

既需要在本地计算机上操作,也需要在服务器上进行操作

原理是:在本地计算机生成一个公钥文件和一个秘钥文件(类似于一个钥匙配一把锁),将公钥文件的内容拷贝到authorized_keys文件中去。这样本地计算机便可以通过ssh方式免密连接我们的云服务器了。

服务器端登录git用户

su git
cd ~
mkdir .ssh

本地右键打开git bash 生成公私钥

cd ~
cd .ssh
ssh-keygen

然后一直回车就ok

在本地就会生成公私钥啦,路径在生成时就会有提示

eg:C:\Users\你的用户名.ssh

由于是隐藏文件,记得取消隐藏

id_rsa(私钥)和id_rsa.pub(公钥)

本地给私钥设置权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

复制本地的id_rsa.pub文件

服务器端继续以git用户身份

cd ~/.ssh

vim authorized_keys

把复制的内容粘贴到authorized_keys文件中

服务器上设置文件权限:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

确保设置了正确的SELinux上下文。(这个我没搞 好像也没啥问题

restorecon -Rv ~/.ssh

接下来在本地计算机上使用ssh方式连接我们的云服务器。

$ssh -v git@xxx.xxx.xxx.xxx(公网IP)
问题一
Host key for 82.157.187.172 has changed and you have requested strict checking. Host key verification failed.

如果遇到该问题 问题出在远程主机的 SSH 主机密钥已经改变

可以手动更新 known_hosts 文件中的条目,改文件在本地.ssh文件中

可以把报错喂给ai,他会给出更详细的回答

配置git仓库

服务器上使用git用户创建一个Git仓库,并且在该仓库中新建一个post-receive钩子文件。

cd ~
git init --bare hexo.git
vi ~/hexo.git/hooks/post-receive

输入

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

work-tree为hexo的部署目录,git-dir为Git仓库的目录

授予钩子文件可执行权限

chmod +x ~/hexo.git/hooks/post-receive
cd ~
sudo chmod -R 777 /home/www/hexo

重启服务器

(7 本地hexo配置

在本地blog目录下,找到_config.yml文件

对deploy参数修改

deploy:

type: git

repo: git@你的IP:/home/git/hexo.git

branch: master

记得缩进

hexo clean
hexo g
hexo d
nginx反向代理

在本地以root用户权限进行

sudo -i
cd /ect/nginx
vim nginx_conf

在http内修改为

检查和修正/etc/nginx/sites-enabled/default文件

最后 检查语法,并重载nginx

nginx -t  # 一般报错信息很明确,翻译一下就行。若不知道就查查,或者看看文件里有没有多余的空格
nginx -s reload

最后再

hexo clean
hexo g
hexo d
问题二
Please make sure you have the correct access rights
and the repository exists.
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (D:\genius_z_blog\blog\node_modules\hexo-deployer-git\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (node:events:519:28)
at cp.emit (D:\genius_z_blog\blog\node_modules\cross-spawn\lib\enoent.js:34:29)
at ChildProcess._handle.onexit (node:internal/child_process:293:12)

如果遇到这种报错 当你hexo d时,代表你的ssh密钥配置错误

给git用户配置ssh免密公钥登录搞清楚服务器跟本地的操作

此时基本上部署的所有问题就解决了

无论从IP还是域名都可以访问

DNS解析什么的就自己去购买域名的地方搞就行了

之后再添加新内容就直接c/g/d就能上传至网站中了