为啥所有 hexo 教程都用到 GitHub 托管,我有自己服务器可以跳过这一步吗?如何优雅一点? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ggp1ot2
V2EX    程序员

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

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

    背景

    最近用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 吧,主题插件很丰富
    KMpAn8Obw1QhPoEP
        7
    KMpAn8Obw1QhPoEP  
       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 本身的一手文档导致的问题
    一手文档阅读还是有必要的
    keepfun
        10
    keepfun  
       2023-03-01 16:36:23 +08:00 via iPhone
    可以先 hexo g 然后把 public 目录同步到你的服务器,然后就是一个静态服务了
    MIUIOS
        11
    MIUIOS  
       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 之类的很麻烦
    GG668v26Fd55CP5W
        14
    GG668v26Fd55CP5W  
       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  
    PRO
       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  
       2024-02-06 19:49:09 +08:00
    @wheat0r 你别说,我就是这么用的 :)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5522 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 07:32 PVG 15:32 LAX 00:32 JFK 03:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86