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

Node.js官网下载Windows (x64)长期支持版 Long Term Support (LTS) schedule。按提示逐步安装即可,安装完成后打开cmd查看版本号验证是否安装成功。最好安装 14版本以上

 C:\Users\everwin> node -v
 v16.20.1
 
 C:\Users\everwin> npm -v
 9.8.1

 

2.安装git

git是一个版本控制工具,国外镜像下载巨慢,建议前往淘宝 Git for Windows 镜像下载 git 安装包。按提示逐步安装即可,安装完成后右键菜单中出现Git Bash和Git GUI菜单表明安装成功,如下图所示。

image-20230731003903716

 

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

会在其内部生成相应的项目文件。如下图所示:

image-20230731004444413

在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 安装包 (源码包)

wget -c https://nginx.org/download/nginx-1.18.0.tar.gz

也可事先下载好安装包 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(Windows版本)。因为xsftp 会使用xshell 默认登录的root用户上传到root用户目录

,所以这里使用 FileZilla 以git 用户登录 上传文件 ,也可以用 scp -r 源文件 目标服务器地址文件 方式 上传.

打开FileZilla,使用git用户通过22端口远程连接到阿里云服务器,将客服端生成的公钥上传到服务器的~/.ssh目录下。

image-20230731015614056

上传完成后切回服务器端,继续以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
 

 

posted @ 2023-08-14 17:25  我如云影君如梦  阅读(255)  评论(0编辑  收藏  举报