Hexo部署至服务器(Ubuntu 20.04)

发布时间 - 2025-07-14 00:00:00    点击率:

前言

本文将指导您如何从零开始,将Hexo项目部署到Ubuntu 20.04服务器上。

正文环境 服务器:虚拟机(Ubuntu 20.04) IP:192.168.75.138 客户端:Windows 10,使用Xshell连接服务器进行操作。

在Ubuntu上搭建Git服务器 首先,使用Xshell连接服务器,并切换到root用户,返回到根路径。

创建Git仓库

  1. 安装openssh-server

命令如下:

sudo apt-get install openssh-server

  1. 安装完成后,检查ssh服务是否已启动

命令如下:

ps -e|grep ssh

  1. 创建一个名为blog的用户,用于管理Hexo项目

命令如下:

adduser blog

系统会提示输入密码,重复确认密码,后续内容直接回车即可。

  1. 为blog用户添加文件写入权限

使用vim编辑/etc/sudoers文件

vim /etc/sudoers

找到User privilege specification部分,添加如下内容:

blog    ALL=(ALL:ALL) ALL

  1. 切换到blog用户
su blog
  1. 安装git

命令如下:

sudo apt-get install git-core

  1. 返回到根路径(cd /),在/var/repo下创建名为hexo_static的裸仓库

命令如下:

sudo mkdir /var/repo
sudo chown -R $USER:$USER /var/repo
sudo chmod -R 755 /var/repo
cd /var/repo
git init --bare hexo_static.git

  1. 进入该目录进行查看

配置Nginx托管文件目录

  1. 首先安装Nginx

命令如下:

sudo apt-get install nginx -y

  1. 创建/var/www/hexo目录,用于Nginx托管,修改目录所有权和权限

命令如下:

sudo mkdir -p /var/www/hexo
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

  1. 使用vim修改/etc/nginx/sites-enabled/default,使root指向hexo目录

命令如下:

sudo vim /etc/nginx/sites-enabled/default

找到server部分,修改如下内容:

root /var/www/hexo;

  1. 重启Nginx服务,使得改动生效

命令如下:

sudo service nginx restart

创建Git钩子

  1. 在之前创建的hexo_static裸仓库下有一个hooks文件夹,在其中创建一个名为post-receive的钩子文件:

命令如下:

vim /var/repo/hexo_static.git/hooks/post-receive

在其中写入如下内容:

#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

保存后退出。

  1. 使该文件变为可执行文件

命令如下:

chmod +x /var/repo/hexo_static.git/hooks/post-receive

在Windows上搭建客户端 首先安装git,这里不再详细说明。使用命令ssh-keygen -t rsa在Windows用户下的.ssh文件夹中生成密钥。将生成的公钥id_rsa.pub复制到Ubuntu服务器的/home/blog/.ssh/authorized_keys上。首先创建.ssh目录,并进入该目录:

sudo mkdir .ssh
cd .ssh/

接着创建authorized_keys文件:

sudo touch authorized_keys

  1. 将Windows下的id_rsa.pub文件内容复制到Ubuntu下的authorized_keys文件

命令如下:

sudo vim .ssh/authorized_keys

部署Hexo项目 编辑Hexo的config.yml文件,在deploy部分修改repo项:

deploy:
  type: git
  repo: blog@server_ip:/var/repo/hexo_static.git
  branch: master

执行命令hexo deploy,将静态文件上传至Ubuntu服务器。

进入目录var/www/hexo/下,可以看到静态文件已全部上传。

访问测试 打开浏览器,输入Ubuntu服务器的IP地址,就可以看到博客页面。

补充 如果部署到购买的云服务器(如阿里云)上,可能出现访问服务器IP没有响应的情况。

点击云服务器/ECS,在安全组规则中手动添加一条80端口的规则:

后记(后续补充域名的配置操作)

参考资料:

  • 用Hexo部署博客到Ubuntu服务器 - 简书 (jianshu.com)
  • Git版本控制之ubuntu搭建Git服务器 - StoneGeek - 博客园 (cnblogs.com)


# ubuntu  # git  # windows  # nginx  # 浏览器  # it服务  # var  # default  # vim  # ssh  # 云服务器  # 切换到  # 客户端  # 博客  # 详细说明  # 可以看到  # 参考资料  # 重启  # 可能出现  # 创建一个  # 就可以 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何快速搭建安全的FTP站点?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel如何使用Blade模板引擎?(完整语法和示例)  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  中国移动官方网站首页入口 中国移动官网网页登录  昵图网官网入口 昵图网素材平台官方入口  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何用腾讯建站主机快速创建免费网站?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  图册素材网站设计制作软件,图册的导出方式有几种?  如何注册花生壳免费域名并搭建个人网站?  Laravel如何升级到最新版本?(升级指南和步骤)  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何登录建站主机?访问步骤全解析  js实现点击每个li节点,都弹出其文本值及修改  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  iOS正则表达式验证手机号、邮箱、身份证号等  如何实现建站之星域名转发设置?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  网站制作免费,什么网站能看正片电影?  如何快速搭建FTP站点实现文件共享?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  如何在云指建站中生成FTP站点?  如何在万网ECS上快速搭建专属网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  高性能网站服务器配置指南:安全稳定与高效建站核心方案  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何处理文件下载请求?(Response示例)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  ,南京靠谱的征婚网站?  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何自定义错误页面(404, 500)?(代码示例)  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  微信小程序 input输入框控件详解及实例(多种示例)  Python文件流缓冲机制_IO性能解析【教程】  网站制作企业,网站的banner和导航栏是指什么?  使用C语言编写圣诞表白程序  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】