将Hexo博客部署到阿里云轻量服务器(保姆级教程)


1. 前言

嗨,大家好!作为一名有追求的程序员,拥有一个自己的个人博客,记录学习、分享经验,那简直是必备的!

目前主流的博客方案有两种:

  • 动态博客平台:像 WordPress,功能强大,有网络就能随时随地写文章。
  • 静态博客生成器:像 Hexo,它在你的电脑上生成静态网页,然后你再把这些网页上传到服务器。发文章稍微麻烦一点,但访问速度飞快,也更安全。

我之前用的是 Hexo + GitHub Pages 的方案,优点是完全免费,搭建也简单。但缺点也明显,因为 GitHub 服务器在国外,国内访问速度有时候真的让人抓狂。

正好我之前学生时代买的阿里云轻量服务器在吃灰,本着不浪费的原则,我决定把我的 Hexo 博客搬到阿里云上,给它来个国内访问加速!

网上相关的教程很多,但很多都是你抄我我抄你,细节缺失,我跟着做了好几次都没成功。所以,这篇教程是我综合了许多文章,加上自己亲身实践踩坑后总结出来的。为了照顾像我一样的小白,我会配上详细的步骤和代码解析,保证是保姆级的体验,手把手带你完成部署。

2. 环境介绍

在开始之前,我们先统一一下“装备”,方便你对照检查:

  • 本地电脑:Windows 10 (64位)
  • 服务器:阿里云轻量应用服务器
  • 服务器系统:CentOS 7.3

3. 本地环境准备

这部分是基础工作,如果你已经安装过 Git 和 Node.js,可以快速跳过。

3.1 安装 Node.js

Hexo 是基于 Node.js 开发的,所以我们必须先安装它。

  1. 访问 Node.js 官网,推荐下载左侧的 **LTS (长期支持版)**,因为它最稳定。
  2. 下载完成后,双击安装包,一路 Next 即可。你可以自己选个安装路径,其他保持默认就好。

3.2 安装 Git

我们需要用 Git 来管理代码和部署博客。

  1. 访问 Git 官网,下载对应你系统的安装包。
  2. 安装过程同样是一路 Next。Git 的默认配置会自动帮你把环境变量都设置好,非常省心。
  3. 安装完成后,在桌面或任意文件夹内点击鼠标右键,如果能看到 Git GUI HereGit Bash Here 这两个选项,就说明安装成功了!

4. 初始化你的 Hexo 博客

环境OK了,现在正式开始搭建博客!

4.1 全局安装 Hexo

在桌面空白处右键,点击 Git Bash Here 打开一个命令行窗口,然后输入以下命令:

npm install -g hexo-cli

小提示

  • $ 是命令行的提示符,你不需要输入。
  • 这个过程需要从国外服务器下载文件,可能会有点慢,耐心等待几分钟。
  • 如果看到一些 WARN (警告)信息,别担心,不影响使用。

4.2 初始化项目

  1. 在你喜欢的位置新建一个文件夹来存放你的博客项目,比如 E:\MyBlog

  2. 进入这个文件夹,同样右键打开 Git Bash Here,输入初始化命令:

    hexo init

    等待命令执行完成,Hexo 就会帮你创建好一个博客项目所需的所有文件。

  3. 现在,让我们在本地把它跑起来看看效果!继续输入以下命令:

    hexo s

    或者使用更详细的调试模式:

    hexo s --debug
  4. 打开浏览器,访问 http://localhost:4000,如果能看到一个标题为 “Hexo” 的网页,恭喜你,本地博客已经成功跑起来了!

4.3 更换一个酷炫的主题 (NexT)

Hexo 默认的主题有点朴素,我们可以换一个更流行、更漂亮的主题。这里我们以广受好评的 NexT 主题为例。

  1. 首先,在你的博客项目文件夹(比如 E:\MyBlog)里,找到 themes 文件夹,在这里打开 Git Bash Here

  2. 输入以下命令,把 NexT 主题下载到 themes 文件夹中:

    git clone https://github.com/next-theme/hexo-theme-next

    执行完毕后,themes 文件夹下就会多出一个 next 文件夹。

  3. 接下来,打开你博客项目的根目录(E:\MyBlog),找到一个名为 _config.yml 的文件,这是站点的配置文件。用代码编辑器打开它。

  4. 在文件中找到 theme 这个配置项,把它原来的值 landscape 修改为 next

    # theme: landscape
    theme: next
  5. 回到博客根目录的 Git Bash 窗口,按 Ctrl+C 停止之前的服务,然后重新执行 hexo s

  6. 刷新 http://localhost:4000,你就能看到焕然一新的 NexT 主题界面啦!

5. 配置 SSH 免密登录

为了让你的电脑能和阿里云服务器“顺畅沟通”,我们需要配置 SSH 密钥。这样,你每次部署博客时就不用一遍遍输入服务器密码了。

  1. 设置 Git 用户信息 (如果第一次用 Git,需要设置):

    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
  2. 生成 SSH 密钥

    ssh-keygen -t rsa -C "你刚刚设置的邮箱"

    执行后,系统会问你文件保存位置和密码,直接连敲三次回车,使用默认设置即可。

  3. 复制公钥
    密钥生成后会产生两个文件:id_rsa(私钥,自己保管好)和 id_rsa.pub(公钥,需要放到服务器上)。
    找到这个公钥文件,路径一般在 C:\Users\你的用户名\.ssh\id_rsa.pub。用记事本或者其他文本编辑器打开它,把里面的所有内容完整地复制下来。

6. 服务器端配置

重头戏来了!现在登录你的阿里云服务器,开始进行一系列配置。

6.1 配置 Git 环境

  1. 远程连接服务器:登录阿里云后台,找到你的轻量服务器,点击右上角的“远程连接”。

  2. 切换到 root 用户:为了拥有最高权限,方便操作,我们先切换到 root

    sudo su root
  3. 安装 Git

    yum install git -y

    -y 参数表示中途遇到的所有询问都自动回答 “yes”。

  4. 创建 git 用户:我们专门创建一个 git 用户来处理博客的部署任务,这样更安全。

    adduser git
  5. 设置 git 用户密码

    passwd git

    根据提示,输入两次密码。注意:Linux 输入密码时屏幕上不会有任何显示,你只管输入,输完按回车就行。

  6. 配置 SSH

    • 切换到刚创建的 git 用户:su git

    • 进入 git 用户的家目录并创建 .ssh 文件夹:cd /home/git/ 然后 mkdir .ssh

    • 创建 authorized_keys 文件并把我们本地的公钥粘贴进去:vim .ssh/authorized_keys

      • i 键进入编辑模式。
      • 把你电脑上 id_rsa.pub 文件的内容粘贴进来。
      • Esc 键退出编辑模式。
      • 输入 :wq 然后回车,保存并退出。
    • 设置正确的权限,这一步非常重要!

      chmod 700 /home/git/.ssh
      chmod 600 /home/git/.ssh/authorized_keys
  7. 测试连接
    回到你本地电脑的 Git Bash 窗口,输入以下命令(把 SERVER_IP 换成你服务器的公网 IP):

    ssh -v git@SERVER_IP

    第一次连接会提示一个安全警告,输入 yes 回车。如果配置成功,它会直接连上服务器而不需要你输入密码。

6.2 创建 Git 仓库和网站目录

我们需要两个目录:一个用来接收本地推送过来的文件(Git 仓库),一个用来存放网站的最终静态文件。

  1. 在服务器上,切换回 root 用户 (exit 命令可以从 git 用户退回到 root)。

  2. 创建目录

    # 创建 Git 仓库目录
    mkdir -p /var/repo
    # 创建网站根目录
    mkdir -p /var/hexo
  3. 初始化 Git 裸仓库

    cd /var/repo
    git init --bare hexo.git

    --bare 参数表示这是一个“裸仓库”,它只保存版本历史,不包含实际文件。

  4. **配置自动部署 (Git Hooks)**:
    这是实现自动化部署的关键。我们利用 Git 的“钩子”(hooks)功能,让服务器在接收到你的 push 操作后,自动把网站文件部署到指定目录。

    • 创建一个 post-receive 钩子文件:

      vim /var/repo/hexo.git/hooks/post-receive
    • i 进入编辑模式,粘贴以下内容:

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

      解析:这行脚本的意思是,当 hexo.git 仓库接收到推送后,立刻将最新的内容强制检出(部署)到 /var/hexo 这个工作目录下。

    • 保存并退出 (Esc -> :wq)。

    • 给这个钩子文件添加可执行权限:

      chmod +x /var/repo/hexo.git/hooks/post-receive
  5. 修改目录权限:将这两个目录的所有权都交给 git 用户。

    chown -R git:git /var/repo
    chown -R git:git /var/hexo

7. 配置 Nginx Web 服务器

现在万事俱备,只差一个 Web 服务器来让用户通过域名或 IP 访问我们的网站了。这里我们使用宝塔面板来简化 Nginx 的安装和配置。

  1. 安装宝塔面板
    在服务器的命令行中,执行宝塔官方的安装脚本(请以宝塔官网最新脚本为准):

    # CentOS 安装脚本
    yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

    安装完成后,终端会显示你的面板登录地址、用户名和密码,请务必记下来。

  2. 放行端口
    宝塔面板默认使用 8888 端口。你需要去阿里云控制台 -> 防火墙,添加一条规则,放行 8888 端口,否则你无法访问面板。

  3. 安装 Nginx
    登录宝塔面板后,会弹出一个推荐安装套件的窗口,找到 Nginx,选择编译安装或极速安装都可以,然后等待它完成。

  4. 添加站点

    • 在宝塔面板左侧点击“网站” -> “添加站点”。
    • 域名处填写你的域名,如果没有域名就填写你的服务器公网 IP。
    • 其他保持默认,点击提交。
  5. 修改网站配置

    • 在网站列表中,找到你刚创建的站点,点击右侧的“设置”。
    • 选择“网站目录”,将“根目录”修改为我们之前创建的 /var/hexo,然后保存。
    • 选择“配置文件”,找到 root 这一行,确保它的值也是 /var/hexo;,然后保存。

8. 最后一击:部署!

回到你本地电脑的博客项目。

  1. 修改站点配置文件
    打开博客根目录下的 _config.yml 文件,找到 deploy 配置项,修改成如下格式:

    deploy:
      type: git
      repo: git@SERVER_IP:/var/repo/hexo.git
      branch: master

    注意:把 SERVER_IP 换成你服务器的公网 IP 或你已经解析好的域名。

  2. 安装 Git 部署插件
    在本地博客根目录的 Git Bash 窗口中,执行:

    npm install hexo-deployer-git --save
  3. 开始部署
    依次执行以下命令:

    # 清理旧的生成文件
    hexo clean
    # 生成新的静态文件
    hexo generate
    # 部署到服务器
    hexo deploy

    你可以合并后两条命令为 hexo g -d

如果一切顺利,当你看到 INFO Deploy done: git 的提示时,就意味着你的博客已经成功部署到阿里云服务器上了!现在,通过你的 IP 或域名访问一下,看看你的杰作吧!

9. 总结

从零开始将 Hexo 部署到云服务器,确实涉及到本地和服务器两端的多次配置,对新手来说可能会有点复杂。但只要你跟着教程一步步来,仔细检查每一条命令和每一个路径,成功并不困难。

这个过程中,你不仅搭建好了自己的博客,还顺便学习了 Linux 的基本命令、Git 的使用、SSH 的配置以及 Nginx 的简单配置,收获满满!

如果在部署过程中遇到任何问题,不要放弃,多检查、多尝试,也可以在下方留言,我们一起解决!加油!


  目录