博客建站7 - hexo博客独立服务器如何自动部署?

news/2024/11/16 3:36:57/文章来源:https://www.cnblogs.com/luoweifu/p/18377982
  • 1. 本网站的系统架构
  • 2. 安装git
  • 3. 配置git用户
    • 3.1. 为什么要创建git用户
    • 3.2. 创建git用户
    • 3.3. 设置git用户的密码
    • 3.4. 创建公钥-私钥对
    • 3.5. 服务器配置公钥
  • 4. hexo配置自动化部署
    • 4.1. 配置Git仓库
    • 4.2. hexo站点配置

1. 本网站的系统架构

  • 网站示例: sunlogging.com
  • 服务器: 阿里云ECS
  • 服务器系统: Ubuntu 24.04 LTS
  • 博客框架: Hexo
  • 网站主题: Volantis

2. 安装git

执行环境: ECS服务器 + 本地计算机

  1. 安装
sudo apt install -y git
  1. 验证
git --version

显示具体的版本号则说明安装成功。

3. 配置git用户

3.1. 为什么要创建git用户

为了实现博客的自动化部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录,我们创建一个受限的用户来进行免密登录。

3.2. 创建git用户

执行环境: ECS服务器

  1. 创建账户
adduser git
  1. 查看是否创建成功
cat /etc/passwd | grep git
# 或
id git
  1. 配置sudoers

将git用户添加到sudo的配置文件

# 切换到root用户
su -
# 编辑配置文件
vim /etc/sudoers
# 增加配置, 在打开的配置文件中,找到root ALL=(ALL) ALL, 在下面添加一行
# 其中git是你要加入的用户名称
git ALL=(ALL) ALL

3.3. 设置git用户的密码

执行环境: ECS服务器

  1. 设置密码
sudo passwd git
# shell提示符会提示输入新密码两次,输入完成后按回车。

设置完密码后,就可以用git用户远程登录ECS服务器了。

  1. 验证
ssh git@服务器IP
# 服务器IP是ECS服务器的公网IP

输入刚设置的密码进行登录,如果登录成功,这说明git用户密码的设置成功。

3.4. 创建公钥-私钥对

执行环境: 在本地计算机

前提条件: 已安装git和ssh客户端,如果未安装,请先安装。

# 进入~/.ssh,如果不存在该目录,可以手动创建一个
cd ~/.ssh# 创建公钥-私钥对
ssh-keygen -t ed25519 -C "you_email@example.com"
# 邮箱使用你的git配置的邮箱

接下来,碰见系统询问就直接按回车键。此时便会在 ~/.ssh 目录创建两个文件,分别为: id_ed25519 (私钥) 和 id_ed25519.pub (公钥)。

3.5. 服务器配置公钥

执行环境: ECS服务器

前提条件: 已安装git,如果未安装,请先安装。

  1. 复制id_ed25519.pub

复制 4.4创建的 id_ed25519.pub 的内容。注意不要在命令行里选中复制,可以用VSCode等编辑器打开文件后,复制内容。

  1. 用git用户登录服务器
ssh git@服务器IP
  1. 创建authorized_keys文件
# 进入git用户的home目录
cd ~
# 创建.ssh目录
mkdir .ssh
cd .ssh/
# 创建id_ed25519.pub文件,并将已复制的内容粘贴进来
vim id_ed25519.pub
# 检查是否保存成功
cat ./id_ed25519.pub
# 将公钥文件拷贝一份并命名为:authorized_keys
cp ./id_ed25519.pub ./authorized_keys
  1. 验证

退出远程登录的服务器。再次通过ssh用git用户登录,这时应该不需要输入密码就能进正常登录了。

ssh git@服务器IP

4. hexo配置自动化部署

4.1. 配置Git仓库

执行环境: ECS服务器

前提条件: 已安装git,如果未安装,请先安装。

  1. 用git用户登录服务器
ssh git@服务器IP
  1. 创建git仓库
cd ~
git init --bare sunlogging_repo
  1. 创建 post-receive
cd hooks/
# 创建并编辑 post-receive 文件
vim ./post-receive
# 在vim内输入以下内容并保存:
git --work-tree=/home/www/sunlogging --git-dir=/home/git/sunlogging_repo checkout -f
# 给 ./post-receive 添加执行权限
chmod +x ./post-receive

post-receive文件内容的功能:
让钩子文件删除 /home/www/sunlogging 目录下原有的文件,然后从 /home/git/sunlogging_repo 仓库 clone 新的博客静态文件到 /home/www/sunlogging 目录下。

  • /home/www/sunlogging: 静态博客网站的根目录
  • /home/git/sunlogging_repo: 博客网站的git仓库目录
  1. 修改 /home/www/sunlogging 目录权限
cd /home/www/sunlogging
# 修改 sunlogging 目录的所属用户为git,这样git用户才有读写权限
chown -R git:root ./sunlogging/

4.2. hexo站点配置

执行环境: 在本地计算机

前提条件: 已安装 node.js、hexo、git等软件,如果未安装,请先安装。

  1. 安装hexo-deployer-git

hexo-deployer-git是hexo官方提供的部署插件,可以实现hexo站点自动部署到git仓库。

npm install hexo-deployer-git --save
  1. 修改 _config.yml 配置
deploy:type: gitrepo: git@your_pub_ip:/home/git/sunlogging_repobranch: master

your_pub_ip为ECS服务器的公网IP,请替换为你的公网IP。仓库路径修改为你自己的仓库路径。

  1. 部署网站
# 1.生成静态页面
hexo generate
# 或
hexo g# 2.部署静态页面
hexo deploy
# 或
hexo d# 1+2 简写为
hexo g -d
# 或
hexo d -g
  1. 验证

通过浏览器访问 http://xxx.xxx.xxx.xxx:80/,就能查看刚部署的博客主页了。


大家好,我是陌尘。

IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。

搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。

感谢大家的关注,期待与你一起成长。



【SunLogging】
扫码二维码,关注微信公众号,阅读更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786635.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RE入门第二天---RC4算法

一.RC4加密简介 RC4(Rivest Cipher 4)是一种流加密算法,由罗纳德李维斯特(Ron Rivest)在1987年开发。RC4算法的核心思想是利用伪随机数生成器(PRNG)和密钥共同生成一个密钥流,该密钥流与明文进行异或运算得到密文。 在RC4算法中,密钥流由两部分组成:密钥调度算法(KS…

ThreeJS Shader的效果样例雷达图和大气层(二)

一、雷达图实现原理:图中是一个旋转的渐变扇形,可以通过先实现一个扇形、然后再实现一个渐变扇形,最后再将扇形旋转来达到最终效果 1. 实现一个夹角为O的扇形,已X轴正方向为单位向量M,UV点到(0,0)形成向量N,通过M和N的点乘就可以得到一个夹角,然后判断角度小于O就可以了…

sql server导入mysql,使用工具SQLyog

概述 需要将sql server的数据导入到mysql中,由于2种数据库存在各种差异,比如表字段类型就有很多不同,因此需要工具来实现。 这里使用SQLyog来实现。SQLyog安装 安装过程参考文档:https://blog.csdn.net/Sunshine_liang1/article/details/84400820 注意:版本不能太低,必须…

PyCharm debug collecting data...

用PyCharm调试时变量实现不出来,一直显示Collecting data...:解决的办法是File-->Settings-->Python Debugger,选中Gevent compatible:问题顺利解决,变量很快就出来了:

进度报告12

(1)接口 创建接口:接口只能有成员变量和方法,方法默认是抽象接口用处:弥补单继承,面向接口编程可以灵活切换各种需求的实现

kubernetes学习笔记

基础环境系统镜像版本Centos 7.6 最小化最低运行环境基本要求内存及CPU:512MB / CPU 1核K3s版本v1.30.0+k3s1集群规划: 注意:需要对每台主机设置hostname,使用 hostnamectl set-hostname 主机名K8s-master 192.168.200.129 1C/1G K8s-worker1 192.168.200.130 2C/2G K8s-wo…

MURF860AC-ASEMI智能AI专用MURF860AC

MURF860AC-ASEMI智能AI专用MURF860AC编辑:ll MURF860AC-ASEMI智能AI专用MURF860AC 型号:MURF860AC 品牌:ASEMI 封装:TO-220AC 批号:最新 恢复时间:35ns 最大平均正向电流(IF):8A 最大循环峰值反向电压(VRRM):600V 最大正向电压(VF):0.95V~1.90V 工作温度:-65C~…

无线遥控技术研究433MHZ

1. 主流的有433MHZ的,主要用在遥控玩具上,使用芯片 EV1527,其中 1527是数据的编码格式,OOK是无线发射数据的通信方式,433M是载波频率。原理图如下,其中根据4个按键的组合,在TXD输出组合波形 TXD的输出波形如下: 方波需要发恶化电路发射出去,发射电路如下,那么理论上…

057、Vue3+TypeScript基础,页面通讯之父页面使用$refs修改子页面暴露的成员

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

【Windows提权】windows环境变量滥用维权/提权

原创 掌控安全学院 - camer#include <windows.h> #include <stdio.h>int main(int argc, char *argv[]) {// 恶意程序wchar_t* Shell = L"C:\\Windows\\Temp\\shell.exe";HINSTANCE hInstance1 = ShellExecuteW(NULL, L"open", Shell, NULL, N…

13-神经网络-模型预测

nn.ReLU()是构造了一个ReLU对象,并不是函数调用,而F.ReLU()是函数调用类似于这样来构造我们的层和块,可以比直接用nn.Sequential有更高的灵活性。当然我们也可以在我们的class中使用nn.Sequential,这样组合使用也可以提高灵活性

订单

当点击结算(car.html)时,会跳转到提交订单页面(palce_order.html)