当前位置: 首页 > news >正文

将 hugo 博客搬迁到服务器

1. 说明

在 Ubuntu 22.04 上使用 root 账号,创建普通账号,并赋予 root 权限。
演示站点:https://woniu336.github.io/
魔改hugo主题: https://github.com/woniu336/hugo-magic

在这里插入图片描述

2. 服务器配置

建立 git 用户

adduser git

安装 git

sudo apt install git

给新用户添加管理权限

sudo usermod -aG sudo git

账号切换

sudo su git

在服务端新建 git 仓库

cd ~
git config --global init.defaultBranch main
git init --bare hugo.git
sudo chown -R git:git hugo.git
mkdir hugo

配置钩子

vim /home/git/hugo.git/hooks/post-receive

写入以下文本:

git --work-tree=/home/git/hugo --git-dir=/home/git/hugo.git checkout -f

配置权限:

sudo chmod +x /home/git/hugo.git/hooks/post-receive

3.本地生成 SSH 密钥

打开 Git bash 输入:

ssh-keygen -t ed25519 -C "太酷啦"

复制公钥内容:

cat ~/.ssh/id_ed25519.pub

4. 服务器配置

登录到远程服务器,并将公钥内容添加到 ~/.ssh/authorized_keys 文件中

## 登录git用户
cd ~
mkdir -p ~/.ssh
echo "YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

YOUR_PUBLIC_KEY替换成公钥内容

5.测试 SSH 连接

在推送代码之前,先测试 SSH 连接是否正常

注意:假设SSH端口是5522,不是默认的22

ssh -p 5522 git@41.87.27.42

清理 known_hosts 文件

如果之前有错误的连接记录,可以尝试清理 known_hosts 文件

ssh-keygen -f "~/.ssh/known_hosts" -R "41.87.27.42"

6.本地推送

打开博客根目录,打开Git bash,输入:

hugo --gc --minify

创建本地仓库

cd public
git init
git branch -M main

添加远程仓库

git remote add origin ssh://git@8.8.8.8:33/home/git/hugo.git

确认远程仓库配置

git remote -v

第一次推送博客内容到服务器

git add .
git commit -m 'First Commit'
git push -u origin main 

如果推送有问题,直接强推:

git push -f origin main

更新本地仓库(可选)

git fetch --prune
git branch -a

7.自动推送脚本

将脚本保存在博客根目录去执行

#!/bin/bash# 备份 public 目录下的 .git 目录
if [ -d "public/.git" ]; thenmv public/.git .git_backup
fi# 删除 public 目录
rm -rf public# 生成静态文件
hugo --gc --minify# 还原 .git 目录
if [ -d ".git_backup" ]; thenmv .git_backup public/.git
fi# 进入 public 目录并推送更新
cd public
git add .
git commit -m 'update'
git push origin main# 提示用户确认退出(使用绿色高亮)
echo -e "\033[1;32m推送完成。按Enter键退出...\033[0m"
read

8.宝塔部署

安装nginx,设置为静态站点,在计划任务添加shell脚本,将DEST_DIR设置为你站点目录

脚本解释:使用rsync命令将hugo静态目录同步到站点目录

#!/bin/bashLOCK_FILE="/home/git/myrsyncscript.lock"  # 修改为你有权限写入的目录(flock -n 9 || { echo "Another instance is running"; exit 1; }SOURCE_DIR="/home/git/hugo"DEST_DIR="/www/wwwroot/book.xxx.org"sudo rsync -avz --delete --exclude='.user.ini' --timeout=600 "$SOURCE_DIR/" "$DEST_DIR/"if [ $? -eq 0 ]; thenecho "文件拷贝成功"elseexit 1fi) 9>"$LOCK_FILE"

完美结局~


相关文章:

将 hugo 博客搬迁到服务器

1. 说明 在 Ubuntu 22.04 上使用 root 账号,创建普通账号,并赋予 root 权限。 演示站点:https://woniu336.github.io/ 魔改hugo主题: https://github.com/woniu336/hugo-magic 2. 服务器配置 建立 git 用户 adduser git安装 git sudo apt …...

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG: 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗?Kimi学了这些资料以后,根据这里面的信息综…...

CTF密码学小结

感觉没啥好总结的啊 基础的永远是RSA、流密码、哈希、对称密码、古典密码那一套(密码学上过课都会),其他的就是数论的一些技巧 似乎格密码也很流行,以及一些奇奇怪怪的性质利用也很多 1、random设置种子后随机的性质&#xff1a…...

Vue快速入门(七)——Vue3 状态管理 - Pinia(二)

目录 六、核心概念——Getter 1、基本操作 定义getter 访问getter 2、访问其他 getter 3、向 getter 传递参数 4、访问其他 store 的 getter 使用 setup() 时的用法 使用选项式 API 的用法 使用 setup() 不使用 setup() 七、核心概念——Action 1、基本操作 定义a…...

ZooKeeper集群环境部署

1. ZooKeeper安装部署 1.1 系统要求 1.1.1 支持的平台 ZooKeeper 由多个组件组成。一些组件得到广泛支持,而另一些组件仅在较小的一组平台上得到支持。 客户端是 Java 客户端库,由应用程序用于连接到 ZooKeeper 集群。 服务器是在 ZooKeeper 集群节点…...

10 个 C# 关键字和功能

在 Stack Overflow 调查中,C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序,范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能,对于开发人员来说,要跟上新功能发布的最新信息将是一项艰巨的任务。本…...

贪心算法之重叠区间问题

以下四个题都是重叠区间问题 452. 用最少数量的箭引爆气球 为了让气球尽可能重叠,先按照气球起始位置由大到小排序tips:sort默认就可以实现以上排序,不需要写cmp重点:当下一个气球的左边界不小于上一个气球的右边界时(即有重叠的…...

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术,将…...

ArcGIS Pro基础:软件的常用设置:中文语言、自动保存、默认底图

上图所示,在【选项】(Options)里找到【语言】设置,将语言切换为中文选项,记得在安装软件时,需要提前安装好ArcGIS语言包。 上图所示,在【选项】里找到【编辑】设置,可以更改软件默认…...

依赖注入+中央事件总线:Vue 3组件通信新玩法

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线 目录 中央事件总线使用 依赖注入使用 总结 中央事件总线 依赖注入…...

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展,远程安防监控系统已经成为现代社会中不可或缺的一部分,无论是在小区、公共场所还是工业领域,安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台,其在构建远程安防监控系统方面…...

fastadmin安装插件报500的错误

项目场景: 项目新建后,想在本地项目中安装相关的插件,但是在插件管理页面点击安装的时候一直报500的错误。 问题描述 我们将项目中的调试打开,在application/config.php里修改 app_debug,将false改为true&#xff0c…...

速盾:为什么需要服务器和cdn?

在互联网时代,服务器和CDN(内容分发网络)起着非常重要的作用。它们是实现高效、稳定和可靠网络服务的关键组成部分。下面我将详细阐述为什么需要服务器和CDN。 首先,服务器是互联网上存储、处理和传输数据的中心枢纽。当我们在浏…...

十四、模拟实现 list 类

Ⅰ . list 基本框架的实现 01 结点的建立 为了实现链表&#xff0c;我们首先要做的应该是建立结点 为了和真正的 list 进行区分&#xff0c;我们仍然在自己的命名空间内实现 代码实现&#xff1a; namespace yxt {// 建立结点template<class T>struct ListNode{T _d…...

JavaScript简介之引入方式

JavaScript 引入方式 提问&#xff1a;CSS的引入方式&#xff1f;在学习 JavaScript 语法之前&#xff0c;我们首先要知道在哪里写 JavaScript 才行。想要在 HTML 中引入 JavaScript&#xff0c;一般有 3 种方式。 外部 JavaScript 内部 JavaScript 元素事件 JavaScript&#…...

同一台电脑上安装不同版本的nodejs(搭配VSCode)

今天拉取了一个前后端分离的项目&#xff0c;运行前端的时候&#xff0c;出现node版本不匹配的情况。 本文章将从安装node.js开始到VSCode使用进行讲解 1、去官网下载node版本 以16版本为例&#xff0c;需要哪个版本&#xff0c;就在网址上把版本号替换即可 https://nodejs.o…...

python小游戏之摇骰子猜大小

最近学习Python的随机数&#xff0c;逻辑判断&#xff0c;循环的用法&#xff0c;就想找一些练习题&#xff0c;比如小游戏猜大小&#xff0c;程序思路如下&#xff1a; 附上源代码如下&#xff1a; 摇骰子的函数&#xff0c;这个函数其实并不需要传任何参数&#xff0c;调用后…...

C++入门——12继承

1.继承 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#xff0c;体现了由简…...

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…...

激光雷达点云投影到图像平面

将激光雷达点云投影到图像平面涉及几何变换和相机模型的应用。以下是该过程的基本原理&#xff1a; 1. 坐标系转换 激光雷达生成的点云通常位于激光雷达的坐标系中&#xff0c;而图像则在相机坐标系中。为了将点云投影到图像上&#xff0c;首先需要将点云从激光雷达坐标系转换…...

VSCode + Modelsim 搭建Verilog开发环境:除了语法检查,还能这样玩?

VSCode与ModelSim深度集成&#xff1a;打造高效Verilog开发工作流 在数字电路设计领域&#xff0c;Verilog作为硬件描述语言的标准之一&#xff0c;其开发效率直接影响项目进度。传统开发模式中&#xff0c;工程师需要在多个工具间频繁切换——编辑器用于编码&#xff0c;Model…...

从开发板到工业边缘计算平台:UP Board二代的硬件解析与应用实战

1. 项目概述&#xff1a;从“开发板”到“边缘计算平台”的认知跃迁最近在整理手头的嵌入式设备&#xff0c;翻出了这块研扬的UP Board二代。说实话&#xff0c;第一次拿到它的时候&#xff0c;我下意识地还是把它归类为“一块性能不错的x86开发板”&#xff0c;就像树莓派之于…...

Perplexity症状查询功能突然失效?排查清单来了:从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity症状查询功能突然失效&#xff1f;排查清单来了&#xff1a;从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析 当Perplexity的症状查询接口返回 401 Unauthorized 或…...

get_kline_serial 用法:K 线序列长度、末尾行与新 bar 判定

前言 分钟线、小时线策略里&#xff0c;指标几乎都挂在 get_kline_serial 返回的序列上。我常见三类报错&#xff1a;长度不够就访问 iloc[-20]、把未收盘的 close 当成定稿信号、以及同一根 K 线里重复下单。下面按天勤量化里的订阅方式、长度防护和与 is_changing 的配合写一…...

深入理解STM32的PWM:从CubeMX配置到用HAL库精准控制舵机角度(以F103为例)

深入理解STM32的PWM&#xff1a;从CubeMX配置到用HAL库精准控制舵机角度&#xff08;以F103为例&#xff09; 在机器人控制、自动化设备等需要精确位置反馈的应用场景中&#xff0c;舵机的精准控制往往是项目成败的关键。许多开发者虽然能够通过PWM实现基本的0、90、180三档控制…...

如何用Path of Building物品制作系统打造终极装备:5个简单步骤

如何用Path of Building物品制作系统打造终极装备&#xff1a;5个简单步骤 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 你是否曾为《流放之路》中装备制作耗费大量通货却得…...

ncmdumpGUI:专业音频解密工具实现网易云音乐跨平台播放自由

ncmdumpGUI&#xff1a;专业音频解密工具实现网易云音乐跨平台播放自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 在数字音乐时代&#xff0c;平台间的格…...

MATLAB实战:从SSE到R方,手把手教你用误差指标评估预测模型

1. 为什么需要误差指标&#xff1f; 在数据分析和预测建模中&#xff0c;我们经常需要评估模型的预测效果。想象一下&#xff0c;你开发了一个房价预测模型&#xff0c;输入房屋面积、地段等信息后&#xff0c;模型会输出预测价格。但你怎么知道这个预测准不准呢&#xff1f;这…...

告别BiSeNet的臃肿:手把手教你用STDC网络在MMSegmentation中实现更快的实时语义分割

从BiSeNet到STDC&#xff1a;在MMSegmentation中构建高效实时语义分割模型的实战指南 当你在深夜调试一个需要实时反馈的无人机视觉系统时&#xff0c;BiSeNet的多路径结构是否正在消耗你宝贵的计算资源&#xff1f;STDC网络的出现&#xff0c;为这类场景带来了新的可能性。本文…...

Perplexity实战技能树全拆解:从零到精通的5级进阶路径及每日训练清单

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity核心原理与平台生态概览 Perplexity 是一种基于语言模型困惑度&#xff08;perplexity&#xff09;评估范式的智能问答与研究协作平台&#xff0c;其核心并非单纯依赖大模型生成能力&#xff0c;而是…...