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

📝 前言

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

🎯 部署思路

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

💡 一、环境安装

1.安装宝塔和Nginx

[!TIP]

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

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

2.安装Git

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

💡 二、部署配置

1.Git仓库搭建

首先创建Git用户并配置权限

1
2
3
4
5
6
7
8
9
10
11
12
13
# 添加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密钥,已经有了的可以跳过。

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

服务器端使用ssh公钥

1
2
3
4
5
6
7
8
9
10
11
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仓库

1
2
3
4
5
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,内容改为:

1
2
3
#!/bin/sh 

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

然后赋予权限

1
2
3
4
5
6
7
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文件

1
2
3
4
5
6
7
deploy:

type: git

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

branch: master

上传

1
2
3
4
5
hexo clean  #清除缓存 

hexo generate #生成静态页面

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

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

📚 总结

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

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

💬 讨论

欢迎在评论区讨论:

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