2024安装hexo和next并部署到github和服务器最新教程
碎碎念
本来打算写点算法题上文所说的题目,结果被其他事情吸引了注意力。其实我之前也有过其他博客网站,但因为长期不维护,导致数据丢失其实是我懒得备份。这个博客现在部署在GitHub Pages上,github不倒,网站不灭,既省钱又稳定,但也有一些小问题。比如由于中国的gfw,GitHub的访问经常会受到限制,导致国内的小伙伴有时无法顺畅访问>_<。虽然我的博客里也没写啥有用的东西但还是希望能有更多的人看到~~或许我应该做做SEO?~~✨
刚好,我手上有两台服务器,在服务器上使用git创建私有库,并利用git hooks进行自动化部署,每次上传到gitHub的同时,数据也会同步到服务器。具体的教程,下次有时间再更新,这篇文章暂时就作为一个占位符?占位文章!,先在这里放着>ᴗ<
正文
你能找到这篇文章,相信你已经成功部署了hexo至本地
当然,为了照顾还没有部署的小伙伴
我在这里提供简短的教程 具体步骤请百度我觉得百度是世界上最大的广告站,到处都是广告 也可以参考Hexo官方文档获取更详细的信息。
这是我的blog网站 ivelisya’s blog
如果有人需要源码请在评论区留言喔其实是我想要多一点评论啦 欢迎交流与分享!
hexo本地部署教程超简化版
1.下载安装基础运行程序。
- Git https://git-scm.com/
- Node.js https://nodejs.org/en/
2.安装hexo
在你的node安装好并配置环境变量之后,会有一个npm命令
到你想要安装hexo的地方打开cmd
然后执行以下命令:
npm install -g hexo # 进行安装
hexo init # 初始化
到这里你已经完成了一半了是不是很简单
3.安装主题 毕竟原版不好看
这里我使用 next 主题
我安装的版本是 nexT v8
我更推荐的版本也是 nexT v8,原因的话就是老版本bug有点多
年 | 版本号 | 仓库地址 |
---|---|---|
2014~2017 | v5 | GitHub 仓库 |
2018~2019 | v6~v7 | GitHub 仓库 |
2020 | v8 | GitHub 仓库 |
安装主题就是站点根目录下直接 git clone 下来就可以了
git clone https://github.com/next-theme/hexo-theme-next
即可
- 打开站点配置文件,将
theme
那项改成theme: next
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next
# 搜索
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
- 然后你就可以打开看看效果啦
hexo clean && hexo g && hexo s
INFO Start processing
INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.
- 访问 http://localhost:4000/ 即可查看本地部署效果
现在你已经完成本地部署了
部署至github page
- 然后到 GitHub 创建一个和你用户名相同的仓库,后面加
.github.io
以我的 blog 为例,如下
- 然后我们要实现免密登录,毕竟每次都输入密码也很麻烦
git config --global user.name "yourname"
git config --global user.email "youremail"
你也可以检查一下
git config user.name
git config user.email
- 然后
Win + R
打开 cmd,然后执行
ssh-keygen -t rsa -C yourEmail
例如
ssh-keygen -t rsa -C simazhangyu@gmail.com
- 然后你会发现
c:\user\yourName
下有一个.ssh
目录,如果没有,打开隐藏文件夹,如下图
.ssh
文件夹下有 id_rsa
和 id_rsa.pub
,前一个是私钥,后一个是公钥
有兴趣的小伙伴可以了解一下 :ssh 公钥私钥原理 推荐阅读:SSH 密钥原理详解
我们需要将 id_rsa.pub
内的内容复制下来,然后进入 GitHub,点击 Settings
,进入 SSH and GPG keys
选项,点击 New SSH key
,然后填写 Title: Blog
,Key:你刚刚复制的公钥
到这里你已经完成了一大半啦
- 进行配置
点开这个 _config.yml
对这个 deploy
进行修改
deploy:type: gitrepo: git@github.com:你的github用户名/你的github用户名.github.io.gitbranch: main
确保 deploy
配置正确,可以参考Hexo 部署文档
至此你就完成了部署到 github page
的全部教程
-
hexo clean && hexo g && hexo d
解释hexo clean
清理缓存hexo g
生成文章hexo d
推送到远端
使用 hexo d
推送试试吧,不出意外过一会你就可以访问 https://你的仓库名
来访问你的 blog 了,以我的 blog 为例,访问 https://ivelisya.github.io
即可
现在你已经完成部署至 github page 上了
数据保存
数据无价,辛辛苦苦写的 blog 数据丢失可就不好了
所以我建议在 GitHub 上面再开一个仓库来存放 blog 的源码
我建议是把 node_modules
这个文件夹也上传到仓库的,反正也不大,要是使用其它设备就可以直接 git clone
然后编写博客了,而不需要重新下载 hexo
这一步骤将加快部署速度。
默认大家都会使用 git
,所以仅提供部分代码
# 强制添加 node_modules 文件夹
git add -f node_modules/
# 提交更改
git commit -m "Add node_modules directory"
# 推送到远程仓库
git push
部署至远端服务器
部署在 GitHub Pages 上有一些小问题。比如由于中国的 gfw,GitHub 的访问经常会受到限制,导致国内的小伙伴有时无法顺畅访问。所以可以同步部署在远端服务器上。这样以后推送的时候就会同时推到 GitHub 和个人服务器上了。
服务器设置
-
登录服务器,然后安装
git
和nginx
我使用的是
root
账户服务器系统为
ubuntu
,centos
代码可能有所不同,请自行修改sudo apt update sudo apt upgrade sudo apt install git sudo apt install nginx
-
创建一个 git 裸库
cd ~ git init --bare blogit.git
-
使用 git hooks 进行自动化
vim blogit.git/hooks/post-receive
-
填入以下代码
#!/bin/sh git --work-tree=/var/www/html --git-dir=/root/blogit.git checkout -f
-
授予可执行权限
chmod +x /root/blogit.git/hooks/post-receive
-
实现免密登录
cd .ssh/ vim authorized_keys
将
id_rsa.pub
的内容填入,id_rsa.pub
位于如果没有请
Win + R
打开 cmd,然后执行ssh-keygen -t rsa -C yourEmail
例如
ssh-keygen -t rsa -C simazhangyu@gmail.com
详细步骤请参考上文
这里有一个问题
服务器可能没有开 ssh 公钥登录,所以你可能需要手动设置
服务器设置 - 开启 ssh 公钥认证
编辑 /etc/ssh/sshd_config
文件
sudo vim /etc/ssh/sshd_config
如果这里是 no
,或者被 #
注释掉了,取消注释,设置成如图所示那样
然后执行
sudo systemctl restart ssh
本地设置
修改配置文件,路径为
点开这个 _config.yml
对这个 deploy
进行修改
deploy:- type: gitrepo: https://github.com/Ivelisya/Ivelisya.github.io.gitbranch: main- type: gitrepo: root@yourServerIP:/root/blogit.gitbranch: master
确保两个 deploy
配置项都正确,可以参考Hexo 多部署配置
到这里你就已经完成了所有教程了✨
快使用 hexo d
推送试试吧!
总结
如果你觉得本教程有用请给我评论一下吧!求求了
如果你有任何问题,请给我留言,我会尽我所能提供帮助
我的 blog 网站 ivelisya’s blog
这将是一个长期更新支持维护的 blog
搭建博客容易,坚持写博客困难,希望各位小伙伴们不要三分钟热度,一定要坚持下去喔,对自己亲手搭建的网站负责嘛 自己已经搭建好 blog 的小伙伴可以给我留言,我可以将你的 blog 网站添加到友链>ᴗ<
相关文章:
2024安装hexo和next并部署到github和服务器最新教程
碎碎念 本来打算写点算法题上文所说的题目,结果被其他事情吸引了注意力。其实我之前也有过其他博客网站,但因为长期不维护,导致数据丢失其实是我懒得备份。这个博客现在部署在GitHub Pages上,github不倒,网站不灭&…...
【spring】@Qualifier注解
目录 1. 说明2. 用法示例2.1 标注在字段上2.2 标注在方法上2.3 标注在类上2.4 在自定义注解上的应用 3. 注意事项 1. 说明 1.Qualifier是Spring框架中的一个注解,主要用于解决依赖注入时的歧义性问题。2.定义:Qualifier是一个限定符注解,用于…...
uniapp 应用的生命周期、页面的生命周期、组件的生命周期
uniapp 作为一款跨平台的移动应用开发框架,其生命周期分为应用生命周期、页面生命周期和组件生命周期。下面分别介绍这三种生命周期的具体内容: 应用生命周期 应用生命周期仅适用于整个应用,在 App.vue 中可以监听到以下生命周期函数&#…...
热更新解决方案4——xLua热补丁
概述 运行时不在执行C#中的代码,而是执行Lua中的代码,相当于是打了个补丁。 1.第一个热补丁 2.多函数替换 3.协程函数替换 在原HotfixMain脚本中只加个协程函数即可(和在Start中启动协程函数) 4.索引器和属性替换 在HotfixMain中…...
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
3.2.1.2 汇编版 原子操作 CAS
基本原理说明 在 x86 和 ARM 架构上,原子操作通常利用硬件提供的原子指令来实现,比如 LOCK 前缀(x86)或 LDREX/STREX(ARM)。以下是一些关键的原子操作(例如原子递增和比较交换)的汇…...
关于llama2:从原始llama-2-7b到llama-2-7b-hf的权重转换教程
1.首先,我是从各个教程里面选了一个实际操作的教程(这样更加靠谱):下载llama2-7b并转hf模型_huggingface 下载llama2-7b-chat-hf-CSDN博客 2.但是,其实我在另外一篇更好的教程里面看到过一个坑(这篇好像是腾…...
物理机内网穿透
前言: 本文主要讲述如何使用内网穿透以及其安全性。 将带领大家在公网上搭建几个常用靶场。 一,什么是内网穿透。 大多数情况下,我们的个人电脑都处于内网,即没有可公开访问的独立 IP 地址,因此其他内网用户找不到…...
构建一个rust生产应用读书笔记四(实战1)
我们需要从访客那里收集哪些信息,以便将其登记为电子邮件通讯的订阅者? 电子邮件地址:这是最基本的要求,因为我们需要通过电子邮件地址向订阅者发送内容。姓名:虽然这不是强制性的,但我们希望收集一个名字…...
[LeetCode-Python版]206. 反转链表(迭代+递归两种解法)
题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3࿱…...
shardingsphere分库分表跨库访问 添加分片规则
shardingsphere分库分表跨库访问 添加分片规则 建立 JDBC 环境 创建表 t_order: CREATE TABLE t_order (tid bigint(20) NOT NULL,tname varchar(255) DEFAULT NULL,goods_id bigint(20) DEFAULT NULL,tstatus varchar(255) DEFAULT NULL,PRIMARY KEY (tid) ) E…...
【NLP 15、深度学习处理文本】
目录 一、反向传播 编辑 1.反向传播运算过程 2.前向传播和反向传播的作用 前向传播 反向传播 3.定义模型(torch包) 4.手动实现 ① 线性层 ② sigmoid激活函数 ③ 手动实现MSE均方差损失函数 ④ 前向传播 ⑤ 手动实现梯度计算 ⑤ 权重的更新:…...
Android Studio创建新项目并引入第三方so外部aar库驱动NFC读写器读写IC卡
本示例使用设备:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bbW3AUC&ftt&id615391857885 一、打开Android Studio,点击 File> New>New project 菜单,选择 要创建的项目模版,点击 Next 二、输入项目名称…...
3D视觉[一]3D计算机视觉
3D视觉[一]3D计算机视觉 3D计算机视觉概述 像机标定 文章目录 3D视觉[一]3D计算机视觉前言一、人类视觉二、计算机视觉2.1 计算机视觉的研究目的2.2 计算机视觉的研究任务2.3 计算机视觉的研究方法2.4 视觉计算理论2.5 马尔框架中计算机视觉表达的四个层次2.5.1 图像ÿ…...
Linux权限(超详细彻底搞懂Linux的权限)
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:Linux常见指令(初学者必看) 🔖流水不争,争的是滔滔不 一、Linux下的两种用户超级用户&…...
Ubuntu22.04安装docker desktop遇到的bug
1. 确认已启用 KVM 虚拟化 如果加载了模块,输出应该如下图。说明 Intel CPU 的 KVM 模块已开启。 否则在VMware开启宿主机虚拟化功能: 2. 下一步操作: Ubuntu | Docker Docs 3. 启动Docker桌面后发现账户登陆不上去: Sign in | …...
网新恒天八股总结
Java的基本数据类型 四类八种 整数类型:byte,short,int,long 浮点类型:float,double 字符类型:char 布尔类型:boolean char类型的范围 0 ~ 65535,可以表示16位无符号整数 equals和的区别 &,&&a…...
【AIGC】与模型对话:理解与预防ChatGPT中的常见误解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…...
09篇--图片的水印添加(掩膜的运用)
如何添加水印? 添加水印其实可以理解为将一张图片中的某个物体或者图案提取出来,然后叠加到另一张图片上。具体的操作思想是通过将原始图片转换成灰度图,并进行二值化处理,去除背景部分,得到一个类似掩膜的图像。然后…...
Qt 使用modbus协议
Qt 框架下 使用modbus协议 一,使用Qt原生的 QModbusClient ,比如QModbusTcpClient 1,因为modbus的读写 需要在同一个线程中,所以需要在主线程中利用moveToThread的方式,将业务逻辑封装到 子线程中。 2,m…...
pip离线安装一个github仓库
要使用pip安装一个本地Git仓库,你可以按照以下步骤操作: 确保你已经克隆了Git仓库到本地。 进入仓库所在的目录。 使用pip安装。 以下是具体的命令: 克隆Git仓库到本地(替换下面的URL为你的仓库URL) git clone https…...
【ETCD】【源码阅读】深入分析 storeTxnWrite.Put方法源码
该方法是 storeTxnWrite 类型中的核心方法,负责将键值对存储到数据库,同时处理键的元数据(如版本、修订号、租约)并管理租约关联。 目录 一、完整代码二、方法详解方法签名1. 计算修订号并初始化变量2. 检查键是否已存在3. 生成索…...
桥接模式的理解和实践
桥接模式(Bridge Pattern),又称桥梁模式,是一种结构型设计模式。它的核心思想是将抽象部分与实现部分分离,使它们可以独立地进行变化,从而提高系统的灵活性和可扩展性。本文将详细介绍桥接模式的概念、原理…...
【Rust自学】3.2. 数据类型:标量类型
3.2.0. 写在正文之前 欢迎来到Rust自学的第三章,一共有6个小节,分别是: 变量与可变性数据类型:标量类型(本文)数据类型:复合类型函数和注释控制流:if else控制流:循环 通过第二章…...
【Leetcode Top 100】199. 二叉树的右视图
问题背景 给定一个二叉树的 根节点 r o o t root root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 数据约束 二叉树的节点个数的范围是 [ 0 , 100 ] [0,100] [0,100] − 100 ≤ N o d e . v a l ≤ 100…...
Java并发编程框架之其他并发工具
选错了就选错了,不要一遍一遍的后悔,总是一遍遍的想,当时怎么样就好了,不要欺负当时的自己,当时你一个人站在迷雾中,也很迷茫,就算重新来一遍,以你当时的阅历和心智,还是…...
MinerU:PDF文档提取工具
目录 docker一键启动本地配置下载模型权重文件demo.py使用命令行启动GPU使用情况 wget https://github.com/opendatalab/MinerU/raw/master/Dockerfile docker build -t mineru:latest .docker一键启动 有点问题,晚点更新 本地配置 就是在Python环境中配置依赖和…...
Unity性能优化---使用SpriteAtlas创建图集进行批次优化
在日常游戏开发中,UI是不可缺少的模块,而在UI中又使用着大量的图片,特别是2D游戏还有很多精灵图片存在,如果不加以处理,会导致很高的Batches,影响性能。 比如如下的例子: Batches是9࿰…...
wazuh-modules-sca-scan
sca模块主函数wm_sca_main -> wm_sca_start 检查policy文件中的每一个项目wm_sca_check_policy static int wm_sca_check_policy(const cJSON * const policy, const cJSON * const checks, OSHash *global_check_list) {if(!policy) {return 1;}const cJSON * const id c…...
力扣-图论-15【算法学习day.65】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
JS萤石云录像回放拖动进度条无法正常播放
问题描述: 本项目版本:vue2.6.12,webpack3.6.0,ezuikit-js0.7.2 在使用萤石云的JavaScript SDK做监控的直播、录像回放时,遇到部分设备的录像回放,无法根据控制面板的拖动进度条查看某时间段的录像。 官方…...
Spring Boot 启动时间优化全攻略
引言 随着 Spring Boot 的广泛应用,开发者享受到了快速开发和自动化配置的便利。然而,随着项目复杂度的增加,Spring Boot 项目启动时间也变得越来越长,这在开发、调试和部署阶段可能会成为效率瓶颈。如何优化 Spring Boot 的启动…...
ubuntu服务器木马类挖矿程序排查、及安全管理总结
版本 24.04 由于GPU多卡服务器多人使用,需要链接隧道ssh等,容易中招挖矿脚本。 总的思路是,顺着进程的PID回溯最终的程序运行起点,这里可以先看一下日志: journalctl -u PID 通过 PID 精确定位进程的信息,…...
redis 使用Lettuce 当redis挂掉重启之后 网络是怎么重新连接
Lettuce是一个高性能的Java Redis客户端,支持同步、异步和反应式编程模式 Lettuce的核心功能包括: 高性能:通过使用Netty作为底层网络通信框架,实现了非阻塞IO,提高了性能。丰富的API:提供了丰富…...
【PyTorch】实现在训练过程中自定义动态调整学习率
问题描述: 在使用 PyTorch 训练自定义神经网络时,我们希望能够动态地调整学习率,以便在训练过程中逐渐优化模型,避免过拟合并加速收敛。那么,如何在 PyTorch 中实现这一功能呢? 解决方案: 在训…...
【Flink-scala】DataStream编程模型总结
系列文章目录 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器 4.【Flink-scala】DataStream编程模型之水位线 5.【…...
语音芯片赋能可穿戴设备:开启个性化音频新体验
在科技日新月异的今天,语音芯片与可穿戴设备的携手合作,正引领我们步入一个前所未有的个性化音频时代。这一创新融合,用户可以享受到更加个性化、沉浸式的音频体验。下面将详细介绍语音芯片与可穿戴设备合作的优点和具体应用。 1. 定制化音效…...
JavaFX使用jfoenix的UI控件
jfoenix还是一个不错的样式,推荐使用,而且也可以支持scene builder中的拖拖拽拽 需要注意的是过高的javafx版本可能会使得某些样式或控件无法使用 比如alert控件,亲测javaFX 19版本可以正常使用 1.在pom.xml中引入依赖 GitHub地址https://gi…...
SpringBoot集成ENC对配置文件进行加密
在线MD5生成工具 配置文件加密,集成ENC 引入POM依赖 <!-- ENC配置文件加密 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</ver…...
基于AI对话生成剧情AVG游戏
游戏开发这个领域,一直有较高的学习门槛。作为一个非专业的游戏爱好者,如果想要开发游戏,往往受制于游戏引擎的专业程度,难以完成复杂的游戏项目。 AI IDE的诞生,提供了另外的一种思路,即通过AI 生成项目及…...
MAVEN--Maven的生命周期,pom.xml详解,Maven的高级特性(模块化、聚合、依赖管理)
目录 (一)Maven的生命周期 1.Maven的三套生命周期 2.Maven常用命令 (二)pom.xml详解 (三)Maven的高级特性(模块化、聚合、依赖管理) 1.Maven的依赖范围 2.版本维护 3.依赖传…...
SpringBoot的事务钩子函数
如果需要在A方法执行完成之后做一个不影响主方法运行的动作B,我们需要判断这个A方法是否存在事务,并且使用异步执行动作B; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transa…...
uniapp滚动消息列表
两个相同的循环列表,循环滚动 <view class"winners_list uni-flex uni-column" :animation"animationData"><view v-for"(item, index) in winnersList" :key"index" class"li uni-flex uni-column"&g…...
基于python对pdf文件进行加密等操作
利用python对pdf文件进行操作 读取pdf-源码 import PyPDF2 # 读取pdf格式的文件 reader PyPDF2.PdfFileReader(示例文件/aaa.pdf) print(reader)# 读取指定页面的文件 page reader.getPage(0) # 输出当前页面的文本数据 print(page.extractText())读取pdf-源码解析 这段代…...
Three.js材质纹理扩散过渡
Three.js材质纹理扩散过渡 import * as THREE from "three"; import { ThreeHelper } from "/src/ThreeHelper"; import { LoadGLTF, MethodBaseSceneSet } from "/src/ThreeHelper/decorators"; import { MainScreen } from "/src/compone…...
【Leetcode 每日一题 - 扩展】45. 跳跃游戏 II
问题背景 给定一个长度为 n n n 的 0 0 0 索引 整数数组 n u m s nums nums。初始位置为 n u m s [ 0 ] nums[0] nums[0]。 每个元素 n u m s [ i ] nums[i] nums[i] 表示从索引 i i i 向前跳转的最大长度。换句话说,如果你在 n u m s [ i ] nums[i] nums[i…...
被裁20240927 --- YOLO 算法
背景 在云端部署ViSP,ViSP实现视觉伺服、yolo实现视觉跟踪。 开源的2d视觉跟踪算法有哪些? 开源的2D视觉跟踪算法有很多呢,这里给你推荐一些比较知名和常用的吧。 ByteTrackV2:这是一个通用2D跟踪算法,提出了分层的…...
AI技术架构:从基础设施到应用
人工智能(AI)的发展,正以前所未有的速度重塑我们的世界。了解AI技术架构,不仅能帮助我们看懂 AI 的底层逻辑,还能掌握其对各行业变革的潜力与方向。 一、基础设施层:AI 技术的坚实地基 基础设施层是 AI 技…...
植物大战僵尸辅助【控制台版本】
前面介绍了使用CE和OD的简单使用:CE和OD介绍和使用CE查找阳光的教学:阳光基地址和偏移地址,下面先使用最简单的控制台程序来实现修改阳光的功能。 项目地址 1.分析程序 我们的控制台程序想要修改植物大战僵尸游戏内的数据,它们…...
css中样式前加 css样式前面加个圆点
创建CSS样式,样式名称的前面需要加什么 1、我们只知道符号代表的意思是at,其翻译是 在... 例如media就是 在媒介上。没人规定本身具有什么意义,或者说就算规定了我们也改变不了,只需要知道其规定属性的用法即可。 2、px;}然后根据你自己索要…...