简 述: 在阿里云服务器 Ubuntu 20.04 上部署 Hexo 博客。

[TOC]


本文初发于 “偕臧的小站” ifmet.cn,同步转载于此。




背景

​ 初,将 hexo 部署在 GitHub,因访问较慢;不久,改成 hexo 部署在 GitHub + Coding 双线程解析,实测 coding 是韩国的服务器,访问加速不明显(现在好像升级了,没继续了解);数月后,今改成 阿里云 + GitHub 解析国内外访问,用上我心爱的小服务器(偕臧自家用,豆腐店)。


服务器配置

连接远程服务器

​ 阿里云购买 “轻量应用服务器” ,安装 Ubuntu 20.04;面板左侧点击 “服务器运维-远程连接” ,设置 root 密码后重启电脑生效,在本机使用 ssh + root@20.21.01.11 登录 (此假设我购买的阿里云服务器公网IP20.21.01.11,寓意新年)。


创建新用户

创建新用户 xmuli

adduser xmuli
chmod 740 /etc/sudoers
vim /etc/sudoers

找到如下 root ALL=(ALL:ALL) ALL 后,在其下面添加一行

xmuli   ALL=(ALL:ALL) ALL  # xmuli 替换为自己用户名

获取 root 权限

sudo passwd xmuli

切换新用户

切换为新建的用户后(后面都是此用户和其 ~ 目录下工作 ),安装一些常用软件

su xmuli
cd ~
sudo apt update
sudo apt install vim git htop screenfetch curl wget # zsh 暂没安装

配置 SSH

创建 ~/.sshauthorized_keys 文件,赋予权限

mkdir ~/.ssh
vim ~/.ssh/authorized_keys  # authorized_keys 名字不能变
chmod 600 ~/.ssh/authorized_keys 
chmod 700 ~/.ssh/

然后切回本机,将 cat ~/.ssh/id_rsa.pub 的结果复制到 远程服务器的~/.ssh/authorized_keys里面;在本地测试,验证 ssh 无密码登录

ssh -v xmuli@20.21.01.11

配置 Git

创建 Git 裸库 blog.git,和工作目录 blog(存放解析后 html 文件)

cd ~
mkdir blog
git init --bare blog.git
vim blog.git/hooks/post-receive  # 创建新文件

里面 post-receive 添加 hook 钩子,

#!/bin/sh
git --work-tree=/home/xmuli/blog --git-dir=/home/xmuli/blog.git checkout -f

添加运行权限

chmod +x blog.git/hooks/post-receive

若执行 git clone xmuli@20.21.01.11:/home/xmuli/blog.git 可下载云服务器该 git 仓库


安装 nginx

安装 nginx 和修改对应配置文件

sudo apt install
sudo vim /etc/nginx/sites-available/default

找到

# include snippets/snakeoil.conf;

root /var/www/html; 

替换为

# include snippets/snakeoil.conf;

root /home/xmuli/blog;

执行 service nginx status 查看 nginx 状态,其默认状态是运行中(服务开始了) + 开机自启 (若是没有,需要执行此状态 );命令可参考 【译】你必需知道的10个 Nginx 常用命令

若此刻直接访问云服务器的公网 IP 会显示 nginx 欢迎界面,因为此时 /home/xmuli/blog 文件夹为空,没有任何 html 文件。


本地配置:

创建 hexo 文件夹

本地创建一个测试的 hexoBlog 的博客文件夹,用来最小化验证部署正确。

cd ~
hexo init hexoBlog                       # 创建和初始化 hexoBlog 文件夹
cnpm install                             # 安装插件
cnpm install hexo-deployer-git --save    # hexo d 部署插件

修改 hexoBlog 根目录下的配置文件 _config.yml ,末尾修改为

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
  type: git
  repo: xmuli@20.21.01.11:/home/xmuli/blog.git
  branch: master                           
  message: '站点更新:{{now("YYYY-MM-DD HH:mm:ss")}}'

部署到远程服务器

在本机中 ~/hexoBlog 路径下,执行部署

hexo clean   # 清理
hexo g       # 生成 html 文件
hexo s       # 在本机浏览器预览效果
hexo d       # 部署,会自动将生成的 html 文件, push 到阿里云服务器的 /home/xmuli/blog 文件夹中

然后重启阿里云服务器后,浏览器输入服务器公网 IP ,即可网页看到解析后的部署网页 “Hello World”。

最后替换为自己的真实博客文件夹的 _config.yml 文件末尾处替换为如上,重新执行 hexo d 部署即可成功;可以生成一个快照哦~,以防万一


参考