部署Hexo博客到私有云服务器上
本文最后更新于:2023年2月3日 下午
前言
本文介绍一个将Hexo建立的博客,部署到私有云服务器上的过程。私有云服务器系统使用Linux系统,博客框架使用Hexo,Hexo发布器使用git,网站代理服务器使用nginx。
名词解释
Hexo[1] 一款快速、简洁且高效的博客框架 。
私有云服务器 在云服务提供商处购买的,可用于个人使用的网络服务器。
git[2] 一个免费和开源的分布式版本控制系统。
nginx[3] 一个HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务。
部署流程
-
本地电脑使用Hexo发布器,将要发布的网站内容上传到私有云服务器的git仓库。
-
私有云服务器的git仓库在接收到git push后,自动通过git hooks,将网站内容同步到nginx的访问目录下。
-
通过nginx服务,对静态博客网站进行代理。
服务器环境的安装与配置
以下步骤,除特别提醒,均在私有云服务器上操作。
一、配置git服务
安装git
安装git,在云服务器的控制台输入如下命令:
1 |
|
读条结束后,输入以下命令检查git版本:
1 |
|
创建 www 用户
创建的这个用户,是用于管理博客网站相关的服务
1 |
|
然后为这个账号设置密码
1 |
|
创建 git 仓库并初始化
我们创建/data/repos
目录用于存放 git 仓库
1 |
|
创建好后,初始化一个裸露的仓库
1 |
|
这个仓库用于存放Hexo博客的git仓库
给 git 仓库目录设置用户和用户组并设置权限
1 |
|
创建网站存放目录
创建网站目录文件
1 |
|
给网站目录文件设置权限
1 |
|
绑定git hook
创建git同步钩子
1 |
|
按下i
键,进入插入模式,输入钩子脚本如下:
1 |
|
按下ESC
键退出编辑模式,输入:wq
保存并退出文件
增加可执行权限
1 |
|
二、ssh连接配置
生成ssh密钥对
在本地客户端电脑上,输入shell命令生成密钥对[4]
1 |
|
这时会生成两个文件,如:id_rsa
和id_rsa.pub
。其中有后缀名.pub
的是公钥,没有后缀名的是私钥。
如果已生成了公钥和私钥,可跳过这步。
绑定私钥
在本地客户端电脑上,进入到用户文件夹,创建ssh配置文件。
1 |
|
修改配置文件,绑定刚刚生成的私钥。
config
1 |
|
保存文件,并确认配置文件config
和私钥id_rsa
在同一目录.ssh
下。
若有多个密钥对,也可以通过此文件进行配置。[5]
绑定公钥
切换到git用户,创建ssh密钥目录
1 |
|
绑定密钥
1 |
|
重启ssh服务
1 |
|
更改www用户默认shell
使用命令查找 git-shell 所在目录
1 |
|
输入命令,编辑/etc/passwd
文件,
1 |
|
将最后一行关于www
用户的登录 shell 配置改为查找到的 git-shell 的目录如下
passwd
1 |
|
此举是为了保证访问安全,将git用户默认的shell修改为git,禁止其使用Linux shell。
使用搭建好的 Git 服务
克隆仓库到本地客户端电脑
1 |
|
三、nginx配置
安装nginx服务
1 |
|
修改nginx启动用户
输入命令,配置nginx
1 |
|
在nginx.conf文件中,找到如下内容:
nginx.conf
1 |
|
查看使用nginx服务的用户名,将其修改为我们创建的www
用户。
1 |
|
按下ESC
键退出阅读模式,输入:q
退出文件。
设置nginx网站服务
输入命令,打开nginx配置
1 |
|
在nginx.conf文件中,找到如下内容:
nginx.conf
1 |
|
将root
这一行的/usr/share/nginx/html;
修改为用于存放网站文件的目录。
nginx.conf
1 |
|
按下ESC
键退出编辑模式,输入:wq
保存并退出文件
重启nginx服务器
在nginx服务停止后,输入命令,重启nginx服务。
1 |
|
需要停止nginx服务,使用以下命令:
1 |
|
需要重启nginx服务,可以使用以下命令
1 |
|
本地客户端创建Hexo项目并部署
以下步骤在本地客户端电脑操作
一、建立Hexo项目(Mac OS)
安装brew
1 |
|
中国地区安装方法
1 |
|
安装node.js
1 |
|
或者需要指定版本
1 |
|
安装Hexo-cli
1 |
|
安装完成后,在终端查看hexo的版本
1 |
|
创建Hexo项目
1 |
|
如果已存在Hexo项目,但丢失了node_modules
目录,可以通过如下命令重新安装依赖包
1 |
|
二、Hexo部署配置
安装hexo-deployer-git
1 |
|
Hexo项目的deploy配置
1 |
|
使用deploy发布博客到云服务器
1 |
|
访问你的博客
完成以上步骤后,通过直接访问公网IP地址,或者通过你自己的域名(经过IP绑定、备案),将可以访问到自己的博客
参考
- netlify.Hexo[EB/OL].https://hexo.io/zh-cn/, 2022/2022 ↩
- git[EB/OL].https://git-scm.com/, 2022/2022 ↩
- nginx[EB/OL].https://nginx.org, 2022/2022 ↩
- 生成/添加SSH公钥 - Gitee.com[EB/OL].https://gitee.com/help/articles/4181, 2022/2022 ↩
- Git配置多个SSH-Key - Gitee.com[EB/OL].https://gitee.com/help/articles/4229, 2022/2022 ↩