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

本文初发于 “曾晨de小站” zengchen233.cn,同步转载于此。

背景

起初是使用的wordpress,阿里云学生机支撑不起来小站,故更换Hexo,用上我心爱的小服务器。

服务器配置

连接远程服务器

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

创建新用户

创建新用户 zengchen

adduser zengchen
chmod 740 /etc/sudoers
vim /etc/sudoers

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

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

获取 root 权限

sudo passwd zengchen

切换新用户

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

su zengchen
cd ~
sudo apt update
sudo apt install vim git htop screenfetch curl wget 

配置 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 zengchen@20.01.10.24

配置 Git

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

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

里面 post-receive 添加 hook 钩子,

#!/bin/sh
git --work-tree=/home/zengchen/hexo --git-dir=/home/zengchen/hexo.git checkout -f

添加运行权限

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

若执行 git clone zengchen@20.01.10.24:/home/zengchen/hexo.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/zengchen/hexo;

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

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

本地配置:

创建 hexo 文件夹

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

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

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

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

部署到远程服务器

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

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

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

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