当前位置: 首页 > 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"

完美结局~


http://www.lryc.cn/news/427252.html

相关文章:

  • 【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
  • CTF密码学小结
  • Vue快速入门(七)——Vue3 状态管理 - Pinia(二)
  • ZooKeeper集群环境部署
  • 10 个 C# 关键字和功能
  • 贪心算法之重叠区间问题
  • Python爬虫入门教程(非常详细)适合零基础小白
  • ArcGIS Pro基础:软件的常用设置:中文语言、自动保存、默认底图
  • 依赖注入+中央事件总线:Vue 3组件通信新玩法
  • EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角
  • fastadmin安装插件报500的错误
  • 速盾:为什么需要服务器和cdn?
  • 十四、模拟实现 list 类
  • JavaScript简介之引入方式
  • 同一台电脑上安装不同版本的nodejs(搭配VSCode)
  • python小游戏之摇骰子猜大小
  • C++入门——12继承
  • Python做统计图之美
  • 激光雷达点云投影到图像平面
  • [python]将anaconda默认创建环境python版本设置为32位的
  • Jmeter+Influxdb+Grafana平台监控性能测试过程(三种方式)
  • [创业之路-135] :ERP、PDM、EDM、Git各种的用途和区别,硬件型初创公司需要哪些管理工具?
  • 通过剪枝与知识蒸馏优化大型语言模型:NVIDIA在Llama 3.1模型上的实践与创新
  • DOM型xss靶场实验
  • 华为---端口隔离简介和示例配置
  • Android 架构模式之 MVC
  • 节点使用简介:comfyui-photoshop
  • 使用Go语言将PDF文件转换为Base64编码
  • XSS Game
  • ???牛客周赛55:虫洞操纵者