Hexo 博客搭建并发布到云服务器
Hexo 博客搭建并发布到云服务器
个人自建博客可采用方案 hexo , hugo ,halo ,wordpress ,Typecho ,vuepress 等等 ,这里采用 hexo 方案 .
halo 采用java + freemarker ,可以用1panel 便捷部署,还有对应的小程序 ,不过比较吃服务器内存
vuepress 可参考 https://vuepress.vuejs.org/zh/
以下是 Hexo 博客搭建流程 ,参考 : http://www.atangbiji.com/2019/12/22/buildHexoBlog
Hexo 工作原理 :
本地计算机搭建Hexo环境,Hexo通过generate命令将*.md文件渲染成静态的html页面,然后Hexo通过deploy命令触发git用户通过公钥免密登陆服务器,进而将静态页面推送到服务器的git仓库(repository)中。然后,服务器再通过钩子(git-hooks) 将静态页面checkout到网站的根目录下,进而实现博客的自动部署。
一.本地计算机搭建Hexo 环境
1.安装node.js
去
C:\Users\everwin> node -v
v16.20.1
C:\Users\everwin> npm -v
9.8.1
2.安装git
git是一个版本控制工具,国外镜像下载巨慢,建议前往
3.安装hexo
在E盘新建 E:\hexo-notes文件夹用来存放个人博客,进入该文件夹,右键打开Git Bash,使用 npm 安装 Hexo。
npm install -g hexo-cli
Hexo安装完成后,在hexo-notes文件夹下新建everwin-notes项目,并对其进行初始化。
$ hexo init everwin-notes
$ cd everwin-notes
$ npm install
会在其内部生成相应的项目文件。如下图所示:
在everwin-notes文件夹下启动hexo服务。
hexo server
此时在本地打开浏览器,通过 http://localhost:4000/ 便可访问基于Hexo的个人博客主页了。如下图所示:
二.服务端环境搭建
服务器环境 centos 7.6 ,已购买域名 和ssl证书 ,并开放相应端口
1.安装nginx
1.1 安装nginx 所需依赖
# 安装gcc-c++
yum install gcc-c++
# gcc- v 查看版本
# pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel
# zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
yum install -y zlib zlib-devel
# openssl是web安全通信的基石,https 通信需要此模块
yum install -y openssl openssl-devel
1.2 下载nginx 安装包 (源码包)
也可事先下载好安装包 sftp 上传至服务器指定目录
如果提示服务器没有安装 wget ,需 yum 安装
yum -y install wget
1.3编译安装nginx
# 解压 nginx 安装包
tar -zxvf nginx-1.18.0.tar.gz
# 进入解压后的 nginx 目录
cd nginx-1.18.0.tar.gz
# 执行配置文件
./configure
# 编译
make
# 安装到指定目录,不指定prefix 的话配置文件可能被放在 etc目录下
make install PREFIX=/usr/local/nginx
1.4 启动nginx (后面需要修改nginx配置文件,包括 页面 及ssl 配置)
cd /usr/local/nginx/sbin
./nginx
# 刷新nginx 配置
./nginx -s reload
# 停止nginx 服务
./nginx -s stop
# 修改nginx.conf 配置文件后检查是否有误
./nginx -t
# 优雅停止
./nginx -s quit
# 重启nginx
./nginx -s reopen
1.5 配置博客目录 (nginx主页)
1.5.1专门为hexo创建一个部署目录/home/www/hexo (root 用户创建)
mkdir -p /home/www/hexo
1.5.2 修改nginx 配置
cd /usr/local/nginx/conf
vim nginx.conf
进入后按i键由命令模式切换到编辑模式。
-
将其中的部署根目录(root)修改为/home/www/hexo;
-
将域名(server_name)修改为 blog.everbest.site
如果暂时没有域名就填阿里云实例的公网ip,以后有了再改回来;
-
查看监听端口(listen)的系统默认值是否为80(不用修改)。
完成以上修改后,先按 Esc 由编辑模式切换到命令模式,再输入 :wq! 命令保存并退出编辑器。
-
后续修改 SSL 配置 及 HTTP 请求自动跳转 HTTPS (需要SSL 证书-> key & pem 文件)
2.安装node.js
# 查看有哪些版本可以安装https://github.com/nodesource/distributions#rpminstall
# 我这里安装16.x ,下载 node
curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -
# 安装
yum -y install nodejs
# 查看安装结果
node -v
npm -v
3.安装git及配置git用户, git仓库
3.1 安装git
yum install git
# 注意 - - 双 中划线
git -- version
# 默认会安装 1.8.x
3.2 创建git用户
为了实现博客的自动部署,我们后面要使用公钥免密登录服务器。为了安全起见,最好不要使用root用户免密登录。因此,我们要创建一个新的git用户,用于远程公钥免密登录服务器。
# 创建git 用户
adduser git
# 修改git用户的权限
chmod 740 /etc/sudoers
vim /etc/sudoers
# 进入后按i键由命令模式切换到编辑模式。找到 root ALL=(ALL) ALL,在下面添加一行
git ALL=(ALL) ALL。修改完成后,先按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。
# 保存退出后改回权限。
chmod 400 /etc/sudoers
# 设置git用户的密码。
sudo passwd git
# 这样win 客户端就可以通过git 用户密码远程登录服务器了
git root@服务器公网IP
3.3 给git用户配置ssh免密公钥登录
使用 ssh -keygen 生成密钥对 ,我这里已经生成,直接上传服务器即可
下载并安装FTP工具,我这里用的是阿里云官方提供的
,所以这里使用 FileZilla 以git 用户登录 上传文件 ,也可以用 scp -r 源文件 目标服务器地址文件 方式 上传.
打开FileZilla,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下。
上传完成后切回服务器端,继续以git用户的身份进入服务器~/.ssh目录,新建一个authorized_keys文件,并将id_rsa.pub文件中公钥的内容拷贝到该文件中。
$cd ~/.ssh
$cp id_rsa.pub authorized_keys
$cat id_rsa.pub >> ~/.ssh/authorized_keys
在服务器上设置文件权限:
$chmod 600 ~/.ssh/authorized_keys
$chmod 700 ~/.ssh
确保设置了正确的SELinux上下文。
restorecon -Rv ~/.ssh
要想 通过 rsa 私钥认真登录服务器,还需开启 私钥认证配置
# 编辑 sshd_config 配置文件 ,非root 用户需要 sudo
vim /etc/ssh/sshd_config
# 修改如下两行为yes。其实大多数情况下不用修改,默认就是yes。
RSAAuthentication yes
PubkeyAuthentication yes
#重启sshd服务
systemctl restart sshd.service
此时 通过 ssh 远程登录 就 不需要再输入密码了 ,直接RSA私钥 认证
[ rsa 公私密钥对 需要在 c盘当前用户目录 下的 .ssh 目录中 ]
# ssh 免密登录
ssh -v git@xxx.xxx.xxx.xxx(阿里云公网IP)
或者
ssh git@xxx.xxx.xxx.xxx(阿里云公网IP)
3.4 服务器上配置git仓库
a.在服务器上使用git用户创建一个Git仓库,并且在该仓库中新建一个post-receive钩子文件。
$cd ~
$git init --bare hexo.git
$vi ~/hexo.git/hooks/post-receive
b.进入后按i键由命令模式切换到编辑模式。输入:
git -- work-tree=/home/www/hexo –git-dir=/home/git/hexo.git checkout -f
即:让钩子文件删除/home/www/hexo目录下原有的文件,然后从blog.git仓库 clone 新的博客静态文件到/home/www/hexo目录下。
完成以上修改后,先按Esc由编辑模式切换到命令模式,再输入:wq命令保存并退出编辑器。
c.授予钩子文件可执行权限。
$chmod +x ~/hexo.git/hooks/post-receive
$cd ~
$sudo chmod -R 777 /home/www/hexo
d.重启服务器 reboot
4.nginx SSL 配置
需要在阿里云控制台 购买 域名,SSL 证书.配置DNS 域名 解析,SSL证书可免费申请
[ SSL 证书需要和域名匹配 ]
# root用户登录服务器,进入nginx 目录
cd /usr/local/nginx
mkdir cert
# xsftp上传 nginx证书压缩包 至 nginx/cert 路径下
# 如果服务器未安装unzip 工具需先安装
yum -y install unzip
# 解压 证书 得到 key 和pem 文件
unzip ssl.zip
# 编辑 nginx.conf
vim /usr/local/nginx/conf/nginx.conf
按 i 进入编辑模式
HTTP 请求 重定向至 HTTPS , server 80端口下 新增如下配置
return 301 https://$server_name$request_uri;
全部配置如下所示 :
server {
listen 80;
server_name blog.everbest.site;
## http 请求重定向至 https
return 301 https://$server_name$request_uri;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /home/www/hexo;
index index.html index.htm;
}
}
监听443 端口 并进行如下配置 :
server {
listen 443 ssl;
server_name blog.everbest.site;
## 配置 ssl 证书路径
ssl_certificate /usr/local/nginx/cert/blog.everbest.site.pem;
ssl_certificate_key /usr/local/nginx/cert/blog.everbest.site.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
location / {
root /home/www/hexo;
index index.html index.htm;
}
}
博客地址 : https://blog.everbest.site/
三 .本机(win) Hexo 相关配置
1.修改 git仓库地址
在本地计算机hexo的工程目录 E:\hexo-notes\everwin-notes 下,找到_config.yml,对deploy参数进行修改。
deploy:
type: 'git'
repo: git@149.129.94.103:/home/git/hexo.git,master
branch: master
2.本机安装 Hexo服务插件
在Hexo 工程根目录 ( E:\hexo-notes\everwin-notes)下,用gitbash 执行如下命令
npm install hexo-deployer-git --save
npm install hexo-server
3.使用Hexo生成、发布个人博客。
更新博客并发布到服务器 : 在hexo 根目录(本地: E:\hexo-notes\everwin-notes)下执行 :
hexo clean
hexo generate
hexo deploy
也可使用 如下命令 一键更新发布
hexo clean && hexo g -d
新建博客文章 :
hexo new 文章名称 就会直接在 E:\hexo-notes\everwin-notes\source_posts 生成 md文章
hexo new 文章名称
本地启动预览 :
hexo server
butterfly 博客安装 : 参考 https://butterfly.js.org/posts/21cfbf15/
https://blog.csdn.net/Youth_lql/article/details/115146647
hexo 博客搭建流程参考 http://www.atangbiji.com/2019/12/22/buildHexoBlog
参考 :
http://www.atangbiji.com/2019/12/22/buildHexoBlog/#1-3-%E5%AE%89%E8%A3%85Hexo
https://blog.csdn.net/weixin_45019350/article/details/121901433
https://xmq.plus/posts/2547c616.html#toc-heading-11
搜索插件安装 :
npm install hexo-generator-search --save
字数统计插件 :
npm i --save hexo-wordcount
添加 emoji表情支持
npm install hexo-filter-github-emojis --save
看板娘3D
中文链接转拼音
npm i hexo-permalink-pinyin --save
安装看板娘 https://chj1759353665.github.io/2020/10/26/hexo%E7%9C%8B%E6%9D%BF%E5%A8%98/
npm inatall --save hexo-helper-live2d