V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ggp1ot2
V2EX  ›  程序员

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

  •  
  •   ggp1ot2 · 282 天前 · 3588 次点击
    这是一个创建于 282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    最近用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 发布网站,再绑定一道域名,岂不是中间多了一层跳转,牺牲了速度?

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

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

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

    (其实说白了还是 Pages 适用于大多数情况,而且大多数人也不会专门为了搭建 hexo 买台贼贵的 VPS )
    guowq
        6
    guowq  
       282 天前 via Android
    静态的优势就是不用维护服务器,不怕 ddos cc
    非要用服务器就去 wp 吧,主题插件很丰富
    enchilada2020
        7
    enchilada2020  
       282 天前 via Android
    静态博客就这点好 随便一个免费 pages 服务就行了 不一定非要 GitHub 的
    vazo
        8
    vazo  
       282 天前
    托管到 github 养老,服务器和域名都不用个人维护.
    feitxue
        9
    feitxue  
       282 天前   ❤️ 1
    说白了还是没有去看 hexo 本身的一手文档导致的问题
    一手文档阅读还是有必要的
    fenglangjuxu
        10
    fenglangjuxu  
       282 天前 via iPhone
    可以先 hexo g 然后把 public 目录同步到你的服务器,然后就是一个静态服务了
    totoro52
        11
    totoro52  
       282 天前
    生成出的页面全是静态,直接 nginx 不就行了吗
    yleoer
        12
    yleoer  
       282 天前
    我是通过 gitlab 的 workflows 自动生成静态文件,推送到服务器。目前就是本地写好以后,git push 上去就能自动更新了。
    nightwitch
        13
    nightwitch  
       282 天前
    因为用自己的服务器,维护 ssl 之类的很麻烦
    falcon05
        14
    falcon05  
       282 天前
    hexo g 按条件触发就可以了,你写一个接口,比如 git push 上去之后,hook 发一个请求到你的服务器接口,接口收到后执行一次 git pull 和 hexo g 就更新了
    ggp1ot2
        15
    ggp1ot2  
    OP
       282 天前
    @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
        16
    feitxue  
       282 天前
    一手文档确实没有楼上那个朋友总结的好,当然,这种总结也是大概率建立在人家对一手文档阅读过的前提。
    大概率你当局者迷了,没反应过来这玩意儿实质静态文件部署,说穿了就没啥技术含量了。
    yyh0808
        17
    yyh0808  
       282 天前
    我 hexo 博客,连 nginx 都没用,express 框架 js 写路由直接转发请求完事了、、、每年就是证书到期换一下,只用 nodejs 就能搞定
    oldfriend
        18
    oldfriend  
       282 天前
    完全可以
    SenLief
        19
    SenLief  
       282 天前
    hexo g 有个-w 的选项,可以监控文件变动。

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

    我现在就是 Obsidian 编辑器和管理器,hexo 生成静态文件,利用部署插件部署到又拍云,备案的域名可以自带 cdn 多好。
    sannaha
        20
    sannaha  
       282 天前 via Android   ❤️ 1
    itskingname
        21
    itskingname  
       282 天前
    我是使用 Azure 的云函数来部署的。
    nifanle7
        22
    nifanle7  
       282 天前 via iPhone
    @cwcc 请问有没有优雅点的同步方式?现在阿里云的虚拟云主机都是用 FTP 软件手动传到服务器的。
    Trim21
        24
    Trim21  
       282 天前
    hexo 正常的用法是写完博客之后 generate ( hexo g )生成静态文件,然后 deploy ( hexo d )到某个地方,再然后就不用管了。

    hexo s 是写博客或者修改主题才会用到。
    brust
        25
    brust  
       282 天前
    还是用 notion 写博客爽
    wheat0r
        26
    wheat0r  
       282 天前
    自建的话,建议去看官方文档,简单来说就是把静态页面发布出来就好。
    我之前看到有大神的文档建议用 nginx 反代 hexo s 的端口,笑死我了
    Byzliu
        27
    Byzliu  
       282 天前
    有服务器了可以不用静态博客,wordpress 或者 typecho 这种带后台的动态博客应该更方便一点,也不用单独的添加评论系统了,服务器部署 hexo 就是把你生成的静态文件上传到服务器网站目录就好了,托管到 github 好处就是不怕被攻击,也没有任何费用
    Jxnujason
        28
    Jxnujason  
       282 天前 via Android
    我用的是 github 的 workflow ,另外 hexo 静态生成是真的慢,前端时间换成 hugo 了
    dcsuibian
        29
    dcsuibian  
       282 天前
    Hexo 官方文档,“部署”章节第一篇就是“GitHub Pages”,说明这么做的人很多而且也是比较推荐的做法了

    GitHub 托管多好啊,免费、稳定,不用在意 https 证书、带宽、ddos 攻击等细枝末节(图床还是要管的),当然选 GitHub 就意味着基本放弃了国内那些用百度的用户了。我连域名都没绑。

    至于速度,实际去试试呗。一个普普通通的 CNAME 解析而已,人完全感知不到的。
    你还可以先拿到 github 的 ip ,然后做个 A 记录,那就完全没差别了。(如果 GitHub 不经常换 ip 的话)
    cwcc
        30
    cwcc  
       282 天前   ❤️ 1
    @nifanle7 如果你愿意开源你的源 md 文件,可以用一个 github 仓库放 md 文件,用 GitHub Action 在更新 md 时候自动船新部署到服务器。也可以用 rsync 加上参数-rltgoDzvO --delete 部署你生成的静态文件夹。
    jqtmviyu
        31
    jqtmviyu  
       282 天前
    用 github 多好呀. 开个私有仓库放 md, 开个公有仓库放 page, 配置下 cli
    然后就变成熟悉的 git 管理了, 只管提交, 编译和部署是自动的.

    再说了, 自己的服务器和域名哪有 gihub 家的稳定.

    想让国内访问也可以把 page 仓库在 vercel 也整一份, 然后添加自己的域名,
    realpg
        32
    realpg  
       282 天前
    不托管 github 是不是脑子有坑非得用静态博客
    这玩意就是为了适应那种没有执行能力的版本库托管用的
    baobao1270
        33
    baobao1270  
       282 天前
    自己搜一下 hexo-ssh-deployer 吧
    dayeye2006199
        34
    dayeye2006199  
       282 天前
    因为可以白嫖
    ysc3839
        35
    ysc3839  
       282 天前 via Android
    因为 GitHub Pages 是门槛最低的免费静态网站托管服务了,其他的相对来说都麻烦一些,而且大部分用户是用 GitHub 账号的,不需要额外注册。
    plutotree
        36
    plutotree  
       281 天前
    @yleoer 推送到服务器这一步是用什么操作的?有没有比较优雅的方案
    acherkrau
        38
    acherkrau  
       281 天前
    我是用 rsync+github action 把静态文件推送到 vps 上了
    yleoer
        39
    yleoer  
       281 天前
    @plutotree #36 我用的这个: https://github.com/easingthemes/ssh-deploy ,配置一次后面就不用管了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   892 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:32 · PVG 06:32 · LAX 14:32 · JFK 17:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.