V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ggp1ot2
V2EX  ›  程序员

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

  •  
  •   ggp1ot2 · 2023-03-01 15:03:07 +08:00 · 4402 次点击
    这是一个创建于 662 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

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

    40 条回复    2024-02-06 19:49:09 +08:00
    maichael
        1
    maichael  
       2023-03-01 15:11:15 +08:00
    你 hexo build 出来也就是个静态文件,直接 nginx 挂出来不就好了。
    bluehr
        2
    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
        3
    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
        4
    bluehr  
       2023-03-01 15:15:18 +08:00
    4.“并且如果用 Github pages 发布网站,再绑定一道域名” 这个无非是多了一次域名解析的时间,这个完全没必要纠结吧,多出来的时间你不可能感知得到
    cwcc
        5
    cwcc  
       2023-03-01 15:15:34 +08:00   ❤️ 2
    只能说是大部分教程都是这样做,手动部署其实更简单。只需要 build 出来静态文件的目录放到 nginx /var/www/xxx 下面,然后配置 nginx 的域名、路径过去就行了。因为写文档的人默认你会这些,且自己在国内域名、服务器、备案等流程比搭建博客繁琐很多。

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

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

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

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

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

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

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

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