使用阿里云服务器 + 域名 + hexo 搭建个人博客;
Node.js
,Git
,Hexo
Node.js
,Git
,Nginx
,Pm2
webhooks
本地环境:Win10
,云服务器:Ubuntu 16.04
NVM 可以帮助我们快速切换 node 版本。所以,我们选择使用 nvm
来安装 node.js
:
下载 Windows 10 版
的 nvm 安装包
,『下载地址』
nvm-setup.exe
,一路 next;nvm
,检查是否安装成功;配置淘宝镜像:
settings.txt
,加入(注意:将 root 和 path 的内容换成自己的):root: C:\Users\TheBetterKong\AppData\Roaming\nvm
path: C:\Program Files\nodejs
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
安装 Node.js
:
nvm install latest
nvm list
nvm use 想要使用的node版本
,一般就是使用刚刚安装的最新版node -v
、npm -v
『下载地址』,这个安装很简单,安装完成后,确认:git -version
配置 Git ssh
,也即:使用 SSH 连接到 GitHub,目的:之后部署代码上传时不需要每次都输入用户名密码。
git config --global user.name “xxxxxx” # 替换为 Github 用户名
git config --global user.email “[email protected]” # 替换为 Github 邮箱地址
git config --list
查看配置信息;ssh-keygen -t rsa -b 4096 -C "[email protected]" # 你的 GitHub邮箱地址
ssh -T [email protected]
测试;
Permissions for 'C:\\Users\\TheBetterKong/.ssh/id_rsa' are too open.
,『解决办法』npm install -g hexo-cli
,全局安装 hexo-cli;安装完成后,输入 hexo -v
验证安装;cd
进入到 Blog 文件夹,输入 hexo init
初始化 hexo 库(即:在当前文件夹生成网站所需要的文件,手脚架);npm install
,再次手动安装代码仓库所依赖的 modules;至此,所有配置完毕,可以本地执行:
hexo generate # 也可简写为 hexo g
hexo server # 简写为 hexo s
在浏览器中打开:http://localhost:4000 ,会看到 Hexo 模板的效果;
至此,一个简单的 Hexo 网站就搭建出来了,有兴趣的话,可以先执行:
hexo new post "first blog" # 注意标题中有空格需要用双引号包起来
生成一个简单的 Blog,在 source/_post 文件夹中,修改 first-blog.md 文件就能修改文章内容了,之后重新 hexo s
就能在本地查看到效果了。
安装 hexo 的 git 部署插件:
npm install hexo-deployer-git --save
安装完毕后,登录 Github,新建一个 public 仓库,并记录该仓库的 SSH 地址;
打开,Blog 文件夹里的 _config.yml 文件,修改其 deploy 配置:
deploy:
type: git
repo: https://github.com/Ackerly/name.git //替换为刚才新建git代码库的ssh链接
branch: master //注意!!! :后面有空格,如果没有空格,这行代码失效
配置完毕后,尝试将本地 blog 的代码上传到 Github:
hexo clean && hexo g
hexo d
无错误出现,可登录 Github 查看更新情况;
这里我在阿里云的云翼计划里,购买了轻量应用服务器,学生优惠话 1 核-2GB 内存 + 40G 的 SSD 5Mbps 的带宽
每个月不到十块,还是很香的!
一般需要在防火墙上开放如下端口:
应用类型 | 协议 | 端口号 |
---|---|---|
HTTP | TCP | 80 |
HTTPS | TCP | 443 |
SSH | TCP | 22 |
备案后的域名;
域名控制台->域名列表->解析->添加记录
按照相关信息填取,『记录值』:你的公网 ip;
如有不懂,详情参考域名所属的官方文档;
进入 GitHub 搜索 nvm
或者直接进入『地址』,找到 nvm 的安装脚本,如果没有找到,可以用下面的安装脚本命令:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
安装完 nvm 以后,会提示我们再开一个新的终端来连接服务器,重连后,使用:
nvm ls-remote # 显示当前可下载的版本,选一个下载就行
nvm install v13.12.0
nvm use v13.12.0 # 把 node 版本指向 6.10.3
nvm alias default v13.12.0 # 将此版本设置为默认版本
node --version # 检查是否安装成功
npm -v
sudo apt-get update -y # 更新系统和 apt 包列表
sudo apt-get upgrade -y
sudo apt-get install git # 安装
git --version # 查看是否安装成功
同样,配置 SSH:
git config --global user.name "xxxxxx" # 自行替换你的 GitHub 用户名
git config --global user.email "[email protected]" # 自行替换你的 GitHub 电子邮件地址
生成秘钥(在 root 权限下操作):
ssh-keygen -t rsa -b 4096 -C "[email protected]" # 自行替换你的 GitHub 电子邮件地址
复制生成的共有秘钥:
cd ~/.ssh
cat id_rsa.pub
在 Github 上创建 SSH key:
在服务器上,创建用来存放 Github 代码的文件夹:
cd /
mkdir www # 用于存放业务代码
cd www
mkdir myBlog # 用于存放前端代码
cd myBlog
git clone https://github.com/Ackerly/name.git # 自行替换为用于存放博客代码的仓库 ssh 地址
至此 git 的安装及代码库的部署以及完成,但是现在代码只是暂时同步了当前仓库的最新内容。但是如果有人在本地推送新的代码上去,服务端需要重新拉取代码:
git pull # git 代码拉取命令
安装:
sudo apt-get install nginx
;sudo systemctl start nginx
;sudo systemctl enable nginx
;配置:
/etc/nginx/conf.d/
文件夹,是我们进行子配置的配置项存放处,/etc/nginx/nginx.conf
主配置文件会默认把这个文件夹中所有子配置项都引入;具体做法:
/etc/nginx/conf.d
目录下创建一个文件,叫 blog.conf;cd /etc/nginx/conf.d
vim blog.conf
server{
listen 80;
root /www/myBlog/TheBetterKong_Blog; # 在服务端的代码路径
server_name www.thebetterkong.cn; # 购买的域名
location /{
}
}
:wq
,保存退出;systemctl restart nginx
至此,在浏览器输入你的域名就可以访问博客页面;
根据官方介绍 webhook 的作用是:
webhook 是用 Go 语言编写的轻量级可配置工具,可让您轻松地在服务器上创建 HTTP 端点(挂钩),可用于执行已配置的命令。您还可以将数据从 HTTP 请求(例如标头,有效负载或查询变量)传递到命令。webhook 还允许您指定必须满足的规则才能触发该挂钩。
简而言之,我们这里配置它的目的就是,使你在本地写完 blog,push 到 github 之后,服务器上的 blog 仓库会自动 git pull,完成更新部署。
使用如下命令:
sudo apt-get update
sudo apt-get install webhook
详情可见:webhook
在你服务器上,blog 仓库的同级目录下进行:
redeploy.sh
的 shell 脚本,用来执行 git pull
指令,内容如下:#!/bin/sh
git pull
chmod +x redeploy.sh
;[
{
"id": "redeploy-blog",
"execute-command": "/home/kxf/www/redeploy.sh",
"command-working-directory": "/home/kxf/www/TheBetterKong_Blog"
}
]
$ nohup /path/to/webhook -hooks hooks.json -verbose &
http://yourserver:9000/hooks/redeploy-blog
『git webhooks』能够实时的将变化的代码提交到服务器;
打开GitHub仓库->Settings->Webhooks->add webhook:
上一步得到的 url:http://yourserver:9000/hooks/redeploy-blog
application/json
Just the push event
至此,webhook 部署完毕。可以在本地,push 一下进行测试,github 的 webhook 界面也能看到相关的状态信息。
至此,Blog 已经搭建完毕;
hexo clean && hexo g
;hexo d
;之后,就是 Blog 的主题配置等工作,可参考我的 Blog 如下两部分: