博客建站7 - 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: git
  repo: git@your_pub_ip:/home/git/sunlogging_repo
  branch: 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】
扫码二维码,关注微信公众号,阅读更多精彩内容
本文详细介绍了如何利用Python语言结合MySQL数据库开发一个学生管理系统。通过这一过程,读者不仅能够掌握系统设计的基本思路,还能学习到如何使用Python进行数据库操作。该系统涵盖了用户界面设计、数据验证以及数据库的增删改查等多个关键环节。 Python作为一种高级编程语言,以简洁易懂著称,广泛应用于数据分析、机器学习和网络爬虫等领域,同时也非常适合用于快速开发数据库管理应用。MySQL是一个广泛使用的开源关系型数据库管理系统,具有轻量级、高性能、高可靠性和良好的编程语言兼容性等特点,是数据存储的理想选择。在本系统中,通过Python的pymysql库实现了与MySQL数据库的交互。 pymysql是一个Python第三方库,它允许程序通过类似DB-API接口连接MySQL数据库,执行SQL语句并获取结果。在系统中,通过pymysql建立数据库连接,执行SQL语句完成数据的增删改查操作,并对结果进行处理。 系统采用命令行界面供用户操作。程序开始时,提示用户输入学生信息,如学号、姓名和各科成绩,并设计了输入验证逻辑,确保数据符合预期格式,例如学号为1至3位整数,成绩为0至100分的整数。 数据库设计方面,系统使用名为“test”的数据库和“StuSys”表,表中存储学生的学号、姓名、各科成绩及总成绩等信息。通过pymysql的cursor对象执行SQL语句,实现数据的增删改查操作。在构建SQL语句时,采用参数化查询以降低SQL注入风险。 系统在接收用户输入时进行了严格验证,包括正则表达式匹配和数字范围检查等,确保数据的准确性和安全性。同时,提供了错误处理机制,如输入不符合要求时提示用户重新输入,数据库操作出错时给出相应提示。 在数据库操作流程中,用户可以通过命令行添加学生信息或删除记录。添加时会检查学号是否重复以避免数据冲突,删除时需用户确认。通过上述分析,本文展示了从
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌尘(MoChen)

爱打赏的人技术成长更快哦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值