为啥所有 hexo 教程都用到 GitHub 托管,我有自己服务器可以跳过这一步吗?如何优雅一点?

2023-03-01 15:03:07 +08:00
 ggp1ot2

背景

最近用hexo折腾个人博客。

我发现,几乎所有的教程,都有一步将项目文件托管到GitHub,然后用GitHub pages发布页面,然后再解析自己的域名。

这事为了方便没有服务器发布页面的用户使用的,我理解。

但是我有自己的服务器,有公网 ip ,有自己的域名,是不是就能跳过这一步?

做法

我的做法是,我直接在服务器上安装好了hexo,然后直接hexo s,就能通过ip:port访问了。

那我再通过nginx做反向代理,将域名解析过来不就完事了。

遇到的问题

但是遇到一个问题,让我觉得不够优雅

因为我发现只有hexo s不是默认挂在后台执行,如果按照我的思路,就需要用 nohup 挂在后台,然后如果修改一个一个页面,就要杀掉那个进程,网站关一会儿,修改完再挂上去,感觉好笨啊。

疑问

所以想咨询下折腾过的,我这种情况,在不使用 GitHub 情况下,如何优雅一点?

补充

另外还想问下:hexo s 、hexo g 、hexo d,到底啥关系,不同教程介绍的先后执行顺序都不一样,但是在我这里,只有 hexo s 能更新页面。

最后说下,为什么不想用 GitHub pages ,就是因为速度慢,并且如果用 Github pages 发布网站,再绑定一道域名,岂不是中间多了一层跳转,牺牲了速度?

4357 次点击
所在节点    程序员
40 条回复
maichael
2023-03-01 15:11:15 +08:00
你 hexo build 出来也就是个静态文件,直接 nginx 挂出来不就好了。
bluehr
2023-03-01 15:13:58 +08:00
1.部署到你的服务器上肯定是可以的呀,hexo 本质上最后就是生成的静态资源,只要能访问到就可以了。
2.为什么教程都是部署到 github pages ,这个是因为足够简单成本低,我就算有个人服务器,还是喜欢部署到 github pages ,因为白嫖微软的流量美滋滋,再说你自己的服务器怕是没有 github 高可用吧
3.hexo s 、hexo g 、hexo d ,到底啥关系, 其实你把官方文档一看你就明白了 https://hexo.io/zh-cn/docs/commands
totoro625
2023-03-01 15:15:01 +08:00
hexo s 是启动内置服务器,需要 nodejs 性能的,nginx 反代失去了静态博客的意义
通常用于本地临时调试

hexo g 是生成静态文件,自有服务器的话,把 nginx 指向生成的静态文件所在目录即可

hexo d 是推送 hexo g 生成的静态文件到托管站点,一般推送到 github 或 OSS 等对象存储
如果用其他上传服务的话可以不用自带的 hexo d
bluehr
2023-03-01 15:15:18 +08:00
4.“并且如果用 Github pages 发布网站,再绑定一道域名” 这个无非是多了一次域名解析的时间,这个完全没必要纠结吧,多出来的时间你不可能感知得到
cwcc
2023-03-01 15:15:34 +08:00
只能说是大部分教程都是这样做,手动部署其实更简单。只需要 build 出来静态文件的目录放到 nginx /var/www/xxx 下面,然后配置 nginx 的域名、路径过去就行了。因为写文档的人默认你会这些,且自己在国内域名、服务器、备案等流程比搭建博客繁琐很多。

(其实说白了还是 Pages 适用于大多数情况,而且大多数人也不会专门为了搭建 hexo 买台贼贵的 VPS )
guowq
2023-03-01 15:16:51 +08:00
静态的优势就是不用维护服务器,不怕 ddos cc
非要用服务器就去 wp 吧,主题插件很丰富
enchilada2020
2023-03-01 15:18:22 +08:00
静态博客就这点好 随便一个免费 pages 服务就行了 不一定非要 GitHub 的
vazo
2023-03-01 16:20:57 +08:00
托管到 github 养老,服务器和域名都不用个人维护.
feitxue
2023-03-01 16:30:22 +08:00
说白了还是没有去看 hexo 本身的一手文档导致的问题
一手文档阅读还是有必要的
fenglangjuxu
2023-03-01 16:36:23 +08:00
可以先 hexo g 然后把 public 目录同步到你的服务器,然后就是一个静态服务了
totoro52
2023-03-01 16:37:21 +08:00
生成出的页面全是静态,直接 nginx 不就行了吗
yleoer
2023-03-01 16:49:54 +08:00
我是通过 gitlab 的 workflows 自动生成静态文件,推送到服务器。目前就是本地写好以后,git push 上去就能自动更新了。
nightwitch
2023-03-01 17:13:45 +08:00
因为用自己的服务器,维护 ssl 之类的很麻烦
falcon05
2023-03-01 17:17:59 +08:00
hexo g 按条件触发就可以了,你写一个接口,比如 git push 上去之后,hook 发一个请求到你的服务器接口,接口收到后执行一次 git pull 和 hexo g 就更新了
ggp1ot2
2023-03-01 17:41:17 +08:00
@totoro625 #3 谢谢,这样说,立马就明白了,比很多教程咔咔说一堆都好
@bluehr #4 我之前亲测过,可能是我的问题?当时做了跳转,速度明显慢了,可能我的电脑访问 GitHub 就慢

@guowq #6 原来还有这个思路,使用 hexo 的本身就是为了没有服务器的用户
@feitxue #9 一手文档是这个吗? https://hexo.io/zh-cn/docs/,说实话,我觉得文档写的一般,有点类似开发人员写的,对新过来的用户很多地方写的不清楚,我自己折腾 web 框架也好多个了,这个说实话,很一般,至少 hexo s d g 说的没有 @totoro625 #3 说的让人明白
@totoro52 #11 @fenglangjuxu #10 谢谢,仿佛自己傻掉了,一直想着 hexo 怎么弄,这本质上就是一个静态文件部署的问题了

@yleoer #12 谢谢,这个思路也学习到了,就是想省事,但是经常在不同设备工作,不想都从 GitHub 拉一遍


@nightwitch #13 是的,这个角度没想到,之前配置其他网站,用的免费证书,每年维护一次,挺麻烦的
feitxue
2023-03-01 17:55:58 +08:00
一手文档确实没有楼上那个朋友总结的好,当然,这种总结也是大概率建立在人家对一手文档阅读过的前提。
大概率你当局者迷了,没反应过来这玩意儿实质静态文件部署,说穿了就没啥技术含量了。
yyh0808
2023-03-01 17:57:42 +08:00
我 hexo 博客,连 nginx 都没用,express 框架 js 写路由直接转发请求完事了、、、每年就是证书到期换一下,只用 nodejs 就能搞定
4s4IYOLfT1s3InRR
2023-03-01 17:58:00 +08:00
完全可以
SenLief
2023-03-01 18:03:50 +08:00
hexo g 有个-w 的选项,可以监控文件变动。

其实 hexo 有很多的部署插件的,如果本地生成静态文件,用 rsync 插件推送给服务器不就好了。

我现在就是 Obsidian 编辑器和管理器,hexo 生成静态文件,利用部署插件部署到又拍云,备案的域名可以自带 cdn 多好。
sannaha
2023-03-01 18:16:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/920154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX