搭建Hexo博客并部署到ECS
前言
想搭个博客记录学习过程,以后可以回顾一下学过的知识。而且现在不怎么发朋友圈了,也可以加个日记板块玩玩。
虽然有hexo+github的免费方案,但因为手里有之前买着积灰的ECS,还是选择了hexo+ECS。
环境说明:
- 本地:win10
- 服务器:阿里云ECS,CentOS7
技术简单说明:
hexo:将markdown格式的文件转化成静态资源页面
git:将静态资源页面推送到服务器
nginx:代理静态资源页面部署博客
一篇博文产生的具体流程是:我先用notion等markdown编辑器编写.md文件,将其复制到hexo根目录的source文件夹下的_post文件夹,或者直接在hexo根目录下启动git bash,使用hexo new post <title>生成新文件,再去修改新文件内容。内容编辑完成后在git bash中使用hexo g命令生成页面,生成后使用命令hexo s可启动本地服务,通过访问localhost:4000查看页面。查看无误后,使用hexo d命令即可发布到服务器,通过外网访问。
本地环境配置
安装Node.js
node.js直接去官网下载安装即可
安装完在cmd用下面两个命令查看,有版本号即安装完成
node -v
npm -v
安装Git
同样直接官网下载安装即可
具体安装过程可看这篇博客详解Git安装过程,一般直接next即可,安装好后,鼠标右键点击出现的菜单中有Git Bash和Git Gui则表示安装成功。
安装Hexo并配置
由于npm使用的源服务器在国外,使用npm直接下载很容易遇到卡顿的问题,所以我们可以将npm换成淘宝的镜像服务器。
在选定的安装目录下(如D:\Blog)右键点击打开Git Bash,输入
npm config set registry https://registry.npm.taobao.org
然后安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org
安装hexo
cnpm install -g hexo-cli
初始化hexo,博客目录会生成相应目录和文件
hexo init
安装hexo-deployer-git 和 hexo-server
npm install hexo-deployer-git --savenpm install hexo-server
输入下面两个命令
hexo g
hexo s
即可通过http://localhost:4000访问本地hexo服务。
配置_config.yml
在刚才生成hexo的目录下,找到_config.yml,打开它,找到deploy 做如下配置
1 | deploy: |
到这里,本地环境配置完成。
服务器环境配置
Nginx安装和配置
Nginx默认通过80端口访问,所以要确保服务器80端口开启,先配置阿里云服务器安全组规则,添加80端口放行。

Nginx安装
用Xshell等ssh工具连接上ECS
安装nginx
yum install -y nginx
开启nginx
systemctl start nginx
使nginx开机自启
systemctl enable nginx
访问ECS公网IP,出现centos页面说明安装成功

Nginx配置
建立博客的目录并赋予权限
cd /homemkdir wwwcd wwwmkdir website
cd ..
chmod -R 777 ./www
在/etc/nginx/目录下创建一个文件夹vhost
cd /etc/nginxmkdir vhostcd vhostvim blog.conf
编辑 blog.conf文件内容
1 | server{ |
按ESC后:wq保存并退出
打开/etc/nginx/目录下的nginx.conf文件
vi /etc/nginx/nginx.conf
include刚刚新建的conf文件

如果以后还想添加新的网站,也可以在vhost目录下新建一个conf配置文件。
安装Git并配置仓库
安装Git
yum install git
配置git用户
adduser git
修改git用户权限
chmod 740 /etc/sudoersvi /etc/sudoers
添加git ALL=(ALL) ALL

保存退出后将sudoers文件权限改回原样
chmod 400 /etc/sudoers
自行设置git用户的密码
sudo passwd git
切换到git用户,然后在~目录下创建.ssh文件夹
su gitcd ~mkdir .sshcd .ssh
本地Git Bash生成ssh公钥密钥文件
ssh-keygen -t rsa -C "13xxxxxx13@qq.com"
此时提示输入目录保存公钥密钥,输入后一路回车
此时在刚刚输入的目录下就会有两个文件,分别是id_rsa(秘钥)和 id_rsa.pub(公钥),Windows默认生成在C:\Users\用户名\.ssh
服务器创建authorized_keys文件并把公钥内容复制进来
vim ~/.ssh/authorized_keys
修改authorized_keys和.ssh的权限
chmod 600 ~/.ssh/authorized_keyschmod 700 ~/.ssh
尝试用Git Bash连接ECS
ssh -v git@服务器公网ip
出现Welcome to Alibaba Cloud Elastic Compute Service !说明登录成功
回到Xshell(现在Git Bash已经登录上git用户,也可以在Git Bash操作),创建git仓库,并新建一个钩子文件post-receive
cd ~git init --bare blog.gitvi ~/blog.git/hooks/post-receive
修改钩子文件内容,i进入编辑模式,添加
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
然后Esc,:wq保存退出。授予钩子文件权限
chmod +x ~/blog.git/hooks/post-receive
尝试发布
尝试写一篇文章并且发布到服务器上,Git Bash输入
hexo new "Hello My First Blog"hexo clean && hexo generate --deploy
服务器重新运行nginx
nginx -s reload
一切正常的话现在已经可以通过公网ip访问hexo主页了。
hexo常用指令
hexo new "title" 新建文章(md文件),title为文章的标题
hexo new page "pagename" 新建网页,pagename为网页的名称
hexo clean 清除部署的緩存
hexo n == hexo new 新建一篇文章
hexo g == hexo generate 生成静态页面
hexo s == hexo server 本地部署,可预览网站,默认端口为4000,浏览器输入localhost:4000即可进入网站进行预览,回到git-bash按ctrl+c退出预览(退出后localhost:4000失效)
hexo d == hexo deploy 将网站部署到GitHub
hexo g -d 生成页面并部署到服务器
hexo g -s 生成页面并本地部署进行预览




