前言

这一篇关于如何在macOS搭建博客的博文和上一篇在win10系统搭建博客的文章大同小异,主要我自己两个系统都使用,便有了两篇搭建博文,所以本篇文章的内容会少一点,关于Github部分会不写,会增加如何部署在云服务器,所以我们开始吧。

开始

这篇博文主要分为两个部分:

Node.js、Git、Hexo的安装

Node.js和Git的本地安装与检查

  1. 在macOS系统下,Node.jsGit 的安装基本上和在wWindows系统下基本一致,到官网下载最新版即可,因为网站会根据系统直接提供适配系统的安装包。

    下载和安装非常简单,下载完打开安装,一直下一步即可,在macOS系统下则不需要像Windows系统配置环境变量。

    补充!!!!下面方法请在上述 node.js 的安装使用出错时使用
    关于 Node.js 的安装,经过多次尝试发现这种直接到官网下载安装包安装的方式虽然方便,但后面使用 npm 命令安装 hexo 时会报错,报错的原因主要是没有权限将hexo写入 .npm-global 里面,就算我使用 sudo 还是不行。
    不过通过查询 npm 官网上的教程发现,官网不推荐 installer 直接安装的方法,如果使用该方法安装的朋友出现报错,请先卸载 nodenpm ,然后按照以下方法安装:

    macos-hexo

    • nvm 的安装和确认是否成功,打开macOS的 终端 输入以下命令:
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
      #安装完成后输入下面命令检查:
      command -v nvm
      #会看到反馈:nvm,没看到请关掉 终端 ,然后重启电脑在重新输入命令
    • nvm 安装 node.js,在 终端 输入以下命令:
      nvm install node
      # "node" is an alias for the latest version
  2. 检查 node.jsGit 是否安装成功,在 终端 输入以下命令:

    node -v
    git --version

    macos-hexo1

Hexo的安装

  1. 打开 终端 输入以下命令:

    mkdir hexoblog
    # 在个人目录下创建hexoblog文件夹,路径为/Users/你的用户名/hexoblog
    npm install -g hexo-cli
    # 安装Hexo
    hexo -v
    # 查看Hexo版本号(判断是否安装成功)

    macos-hexo2

    如果觉得安装慢,想安装快一点,请查看从零开始的个人博客搭建(Win10篇)中npm相关的注意事项,这里就不讲述了。

  2. 初始化Hexo,在步骤1的基础下,在 终端 输入以下命令:

    hexo init
    # 在当前文件夹初始化hexo
    # 出现 Start blogging with Hexo!代表成功
  3. 查看Hexo博客
    在步骤2的基础下,接着上述 终端 并输入以下命令:

    hexo clean
    # 清空缓存
    hexo generate
    hexo g #简写
    # 重新编译
    hexo server
    hexo s #简写
    # 打开本地访问

    在终端中出现 Hexo is running at http://localhost:4000 . Press Ctrl+C to stop 则代表本地博客已经可以在浏览器输入 http://localhost:4000 按回车键后看到下图所示的界面。

    macos-hexo3
    恭喜你,本地博客搭建完成了!

  4. 关于主题

    • 我自己使用的主题是 Butterfly ,你可以到主题的Github地址下载,将下载好的 hexo-theme-butterfly-dev.zip 文件解压后重命名为 butterfly 并放入 hexoblog\themes 中即可,关于此主题的更多内容请参考主题文档
    • 当然,你也可以在 hexoblog 文件夹中打开 终端 输入以下命令来安装 Butterfly 这个主题:
      git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
      # 其他主题基本都可以使用相同的方法安装
    • 主题选择完请按照主题的官方文档进行配置。

将博客部署到云服务器

本教程以腾讯云的云服务器为例,毕竟最近白嫖了1个月的腾讯云轻量应用服务器

服务器的购买或白嫖?

  1. 首先肯定是要有一个云服务器,如果没有也可以点击上面的链接去白嫖一个,虽然只能拥有短短的15天或者一个月,个人新用户可以选择15天的CVM,老用户的话可以选择轻量应用服务器。
    server

  2. 如果是CVM,参考如下:

    server1

  3. 如果是轻量应用服务器,参考如下:

    server2

Git服务器的配置

  1. 当你拥有一个云服务器后,就可以开始操作了,你购买完成后会直接跳转到相应的页面,待实例创建完成,你就能看到公网IP和实例的登录密码,有这两个就可以登录服务器了。
    登录服务器,打开你熟悉的终端软件,例如我这里使用的是 SecureCRT ,输入上面所说的IP和登录用户名 root 以及密码就能看到与下图相似的界面。

    server3

  2. 安装Git
    先检查服务器是否安装了Git,在终端输入 git --version 命令查看是否存在Git,如果如下图所示 not found ,则是没有安装,需要你去安装。

    server4
    安装Git,输入以下的命令,然后回车等待一会即可。

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
    yum install -y git

    出现下图所示则代表安装成功。

    server5

  3. 创建Git用户并且配置Git仓库

    useradd git
    # 创建用户
    passwd git
    # 设置密码
    su git
    # 切换用户
    cd /home/git/
    # 进入git用户的家目录
    mkdir -p projects/blog
    # 项目存在的真实目录(当然你可以创建在其他地方)
    mkdir repos && cd repos
    # 创建文件夹
    git init --bare blog.git
    # 创建一个裸露的仓库

    server6

    cd blog.git/hooks
    # 进入hooks文件夹
    vi post-receive
    # 创建并编辑post-receive文件

    server7
    回车后输入下面的代码后然后按住键盘的 ESC 键,输入 wq 然后按回车键即可保存退出。

    # 创建 hook 钩子函数
    #!/bin/sh
    git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f

    server8
    接着为刚才创建并编辑好的文件添加可执行的权限,输入如下的命令:

    chmod +x post-receive
    # 为刚才的文件添加可执行的权限
    exit
    # 退出到 root 登录
    chown -R git:git /home/git/repos/blog.git
    # 添加权限

    server9

  4. 测试能否克隆仓库
    在自己的电脑随意找个位置新建一个文件夹 hexoblog ,然后打开终端命令工具,如果你是macOS可以直接打开系统的 终端.app,如果你是Windows系统,可以使用 bash(如何安装使用请看从零开始的个人博客搭建(Win10篇)),然后输入以下命令,测试是否能将仓库克隆下来:

    git clone git@server_ip:/home/git/repos/blog.git
    # server_ip请换成你的服务器IP
    • 发现目前需要密码就能克隆仓库。

    server10

  5. 建立免密码登录(通过密钥登陆)
    登录服务器,输入以下命令:

    su git
    # a切换git用户
    cd ~
    # 切换到git用户的家目录
    mkdir .ssh
    # 创建.ssh目录
    chmod 700 .ssh/
    # 赋予.ssh文件夹权限
    cd .ssh
    # 进入.ssh目录
    vim authorized_keys
    # 创建并编辑一个名为authorized_keys的文件,并写入公钥(id_rsa.pub)内容
    # 没有装vim的请把vim改成vi
    chmod 600 authorized_keys
    # 赋予authorized_keys文件权限

    如何获得公钥请查看“在centos7.6下配置SSH的公私钥key登录”中的生成公私钥(以终端软件 SecureCRT 8.3 为例)部分

  6. 测试是否能够成功连接,在本地的 hexoblog 打开 终端 软件,输入以下命令:

    ssh git@server_ip
    # server_ip请换成你的服务器IP

    如下图,能够成功登陆则代表连接成功。

    server11

  7. 禁止git用户shell登陆权限,只用于git命令的登录(出于安全考虑),继续root登录服务器,输入以下命令:

    # 如果接着步骤6,请输入下面的命令切换回root用户,如果是重新登录服务器直接看第二条命令
    su root 或 exit
    # su root是切换root用户,exit是退出当前用户
    which git-shell
    # 查看git-shell的路径
    vim /etc/shells
    # 编辑/etc/shells文件并且添加上个命令得到的路径
    vim /etc/passwd
    # 修改passwd文件中git用户的权限

    server12

    在shells文件内添加 /usr/bin/git-shell
    server13

    把passwd文件中的 git:x:1000:1000::/home/git:/bin/bash 修改为 git:x:1000:1000::/home/git:/bin/git-shell
    server25

配置 Nginx

该步骤是为了开启服务器的80端口用来显示博客网站,不然一直在服务器后台挂着 hexo s 略显奇葩,虽然也有可行的方法。

  1. 安装 Nginx
    登录服务器,打开你熟悉的终端软件,例如我这里使用的是 SecureCRT ,然后root用户登陆服务器,输入以下命令:

    yum install -y yum-utils
    # 安装依赖
    yum install -y nginx
    # 安装nginx
    nginx -v
    # 查询nginx版本号

    出现如下图所示则代表安装成功:
    server20

  2. 配置 Nginx
    输入以下命令:

    cd /etc/Nginx
    # 切换到nginx配置文件所在的目录
    vi nginx.conf
    # 编辑nginx配置文件

    user nginx 改为 user root ,如下图所示:
    server21

    找到root解析路径并修改为 /home/git/projects/blog/ ,如下图所示:
    server22

    待上述内容修改完后按住键盘的 ESC 键,再按住 : ,然后输入 wq 保存修改好了的文件,并输入以下命令:

    systemctl start nginx
    # 重启nginx服务

    此时打开浏览器输入服务器IP地址并访问,就会得到一个404页面提示,因为我们还未将博客部署到云服务器,接下来将本地博客部署到云服务器。
    server23

将博客发布到云服务器

  1. 打开博客根目录(也就是之前创建的 hexoblog 文件夹)下的 _config.yml 文件,找到 deploy 配置项,修改如下:
    deploy:
    type:
    # 填写用户名,例如我们之前创建的 git
    repo:
    git: git@server_ip:/home/git/hexoblog.git
    # 更换过ssh端口号的请用下面这种写法
    git: ssh://git@server_ip:端口号/home/git/hexoblog.git
    # Git仓库路径
    branch: master
    # 分支,默认填写master
    server24
  2. 上传本地博客到云服务器
    完成上述所有步骤后,在博客根目录下(也就是之前创建的 hexoblog 文件夹)打开 终端 ,并输入一下命令:
    hexo clean
    hexo generate
    hexo deploy
  3. 如无意外,浏览器输入 云服务器IP 即可访问你的博客了。
    如有意外,请查看是否符合以下报错:
      在输入2中的命令后出现以下报错提示:
      ERROR Deployer not found: git
      主要原因是是没有安装自动部署插件,那么只需要以下命令安装即可,如下所示:
      npm install hexo-deployer-git --save
      等待插件安装完成,然后再次输入2中的命令即可。

关于域名绑定

关于配置HTTPS(也就是SSL证书)

最后

  • 关于云服务器部署博客的内容就结束了,在macOS部署的内容和在windows上基本一致,就不值一提了,祝大家部署成功,完美搭建博客!再见👋。

如有问题请点击邮件或在底下评论与我联系