用宝塔面板把Hexo部署到服务器

📝 前言

之前把博客部署在 GitHub 上,但访问速度实在太慢。最近看到阿里云服务器促销就买了一台,这篇文章记录了完整的部署过程。本教程使用 Ubuntu 系统演示。

🎯 部署思路

  1. 搭建并创建 git 仓库
  2. 将本地博客 deploy 到 Git 仓库
  3. 使用 git-hooks 实现自动部署到网站目录
  4. 用 Nginx 实现外部访问网站

💡 一、环境安装

1. 安装宝塔和 Nginx

[!TIP]
宝塔面板是一个服务器管理面板,可以让我们更方便地管理服务器。

  1. 前往官网获取安装脚本
  2. SSH 连接到服务器运行系统对应安装脚本
  3. 安装好后登录面板,在环境安装中只需勾选 Nginx
  4. 添加站点,记住网站目录名如:xmdblog.com

添加站点

2. 安装 Git

前往官网安装页,运行对应系统的安装命令。


💡 二、部署配置

1. Git 仓库搭建

首先创建 git 用户并配置权限:

# 添加git用户 
adduser git

# 改变sudoers文件权限
chmod 740 /etc/sudoers

# 编辑sudoers文件
vim /etc/sudoers
# 在root ALL=(ALL) ALL 下方添加:
# git ALL=(ALL) ALL

# 恢复权限
chmod 400 /etc/sudoers

[!NOTE]
vim 基础操作:按 i 编辑,ESC 退出编辑,按 : 输入命令,输入 wq 命令按回车保存并退出

为git用户创建ssh密钥连接,本地电脑打开PowerShell,cd到用户文件夹运行一下命令生成.ssh密钥,已经有了的可以跳过。

ssh-keygen -t rsa -C "网站目录名"

服务器端使用ssh公钥

su git  #切换到git用户 

cd #切换到根目录

mkdir -p ~/.ssh #创建ssh目录

touch ~/.ssh/authorized\_keys #创建authorized\_keys文件

chmod 600 ~/.ssh/authorized\_keys #为authorized\_keys文件赋予文件所有者可读可写的权限

chmod 700 ~/.ssh #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限

登录宝塔进入文件页,复制公匙id_rsa.pub内容到服务器/home/git/.ssh/authorized_keys,保存,用PowerShell运行ssh git@服务器IP测试是否可以连接到git用户

git用户下创建git仓库

sudo mkdir /home/git/repos  #新建目录,这是git仓库的位置 

cd /home/git/repos

sudo git init --bare xmdblog.git #初始化一个名叫xmdblog的仓库,可以自定义仓库名

配置钩子实现自动部署

找到 /home/git/repos/xmdblog.git/hooks/post-update.sample 改名post-update,内容改为

#!/bin/sh 

git --work-tree=/www/wwwroot/网站目录名 --git-dir=/home/git/repos/仓库名.git checkout -f

然后赋予权限

cd xmdblog.git/hooks/ 

sudo chmod +x post-update #赋予其可执行权限

sudo chown -R git:git /home/git/repos/ #仓库所有者改为git

sudo chown -R git:git /www/wwwroot/网站目录名/ #站点文件夹所有者改为git

如果报错.user.ini无法操作,在网站目录里删除这个文件即可。

2.本地配置

修改本地Hexo配置\_config.yml文件

deploy:

type: git

repo: git@服务器IP:/home/git/repos/仓库名.git #域名解析到服务器后也可以把这里的服务器IP换成域名

branch: master

上传

hexo clean  #清除缓存 

hexo generate #生成静态页面

hexo delopy #将本地静态页面目录部署到服务器

给网站配置好ssl,建议配置重定向到www.域名.com,现在不出问题的话你已经可以访问到自己的博客啦!


📚 总结

完成以上步骤后,您的 Hexo 博客就成功部署到服务器了!主要实现了:

  • 使用宝塔面板简化服务器管理
  • Git 仓库实现自动部署
  • Nginx 提供 Web 访问服务
  • SSL 证书确保安全访问

💬 讨论

欢迎在评论区讨论:

  1. 您是如何部署 Hexo 博客的?
  2. 在部署过程中遇到了什么问题?