crazyTanuki
V2EX  ›  Node.js

你们是怎么部署 nodejs 的?

  •  
  •   crazyTanuki · Jan 3, 2024 · 22174 views
    This topic created in 1035 days ago, the information mentioned may be changed or developed.

    1.装 nodejs 环境然后 build 完直接服务器 node

    2.宝塔面板直接用 node 模块功能

    3.pm2 直接跑

    4.docker 跑 nodejs 镜像

    5.k8s 集群部署 nodejs 镜像

    6.服务器上直接 npm run dev

    Supplement 1  ·  Jan 3, 2024
    综合评论,基本上 4 最优解,3 和 5 次之
    125 replies  •  2024-03-18 17:32:08 +08:00
    1  2  
    ❮ ❯
    coderxy
    coderxy
    Jan 3, 2024
    1
    5
    passon
    passon
    Jan 3, 2024
    2
    4 3
    shimada666
    shimada666
    Jan 3, 2024
    3
    4,5 都有,看具体情况
    NNNNzs
    NNNNzs
    Jan 3, 2024
    4
    3 6
    IamUNICODE
    IamUNICODE
    Jan 3, 2024
    5
    4
    3
    5
    目前是 4 5
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    6
    @NNNNzs 牛啊老哥
    wyhooo
    wyhooo
    Jan 3, 2024
    7
    6 也太秀了
    jojo0830
    jojo0830
    Jan 3, 2024
    8
    1 为啥没人用?
    musi
    musi
    Jan 3, 2024
    9
    @jojo0830 因为版本不好控制
    express
    express
    Jan 3, 2024
    10
    纯好奇,6 不会崩么,日志怎么打,出现错误怎么查呢
    duanxianze
    duanxianze
    Jan 3, 2024
    11
    @jojo0830 直接 node 多进程不容易控制
    inas
    inas
    Jan 3, 2024
    12
    GitHub Actions
    wu67
    wu67
    Jan 3, 2024
    13
    3 4 我都在用.
    现在几乎都是 4 了, 之前的人留的配置, 日志不自动删, 也没有文档关于手动清理的, 服务器硬盘占用暴涨, 后来我给改成 docker 跑镜像了
    pkoukk
    pkoukk
    Jan 3, 2024
    14
    3 4 5 按顺序用过来的,现在基本上都是 5 了
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    15
    @wu67 感觉 4 已经取代 3 了,不过现在身边很多大佬都用 5 取代 4 了
    461229187
    461229187
    Jan 3, 2024
    16
    6 是真的 6
    v2tex
    v2tex
    Jan 3, 2024
    17
    在 4 或 5 里用 3 跑🐶
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    18
    @express 只能重启
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    19
    @jojo0830 应该是没那么方便的原因
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    20
    @v2tex 45 不是已经解决了 3 所解决的问题了吗
    wu67
    wu67
    Jan 3, 2024
    21
    @crazyTanuki k8s 需要运维, 很多中小公司没有这个实力, 尤其是那些业务驱动型的小公司
    owen800q
    owen800q
    Jan 3, 2024 via iPhone
    22
    6
    wonderfulcxm
    wonderfulcxm
    Jan 3, 2024 via iPhone
    23
    @wu67 docker 更占空间吧,日志文件我也映射出来。
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    24
    @wu67 主要用的还是部署服务,特性功能用的比较少
    loveDiu4ever
    loveDiu4ever
    Jan 3, 2024
    25
    3 是 最快的
    v2tex
    v2tex
    Jan 3, 2024❤️1
    26
    @crazyTanuki 一方面是为了用 pm2 的日志和启动多个服务方便,还有就是随时可以从容器切换到非容器环境
    ada87
    ada87
    Jan 3, 2024
    27
    serverless deploy
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    28
    @ada87 这是什么神仙部署?类似云开发吗?
    wu67
    wu67
    Jan 3, 2024
    29
    @wonderfulcxm docker 只是镜像大, 但是每次更新会删掉旧的. pm2 以前的人留下来的配置, 谁敢碰呀, 日志每天爆炸性增长, 我接手的时候, 8 个 G....
    d119
    d119
    Jan 3, 2024
    30
    isbase
    isbase
    Jan 3, 2024
    31
    @wu67 pm2 的日志确实比较坑,默认没有启用日志轮转。会占满硬盘
    unclemcz
    unclemcz
    Jan 3, 2024 via Android
    32
    类似 3 ,我用 forever ,然后外面加 nginx 。
    dif
    dif
    Jan 3, 2024
    33
    PM2
    bianhui
    bianhui
    Jan 3, 2024
    34
    能容器尽量容器
    jsq2627
    jsq2627
    PRO
    Jan 3, 2024
    35
    4/5 优先。但是要吃满多核 cpu 需要前面有 gateway lb
    所以有时候还用 pm2 cluster mode ,简单
    dudubaba
    dudubaba
    Jan 3, 2024
    36
    流水线+集群,生产环境 pm2 作用不大。
    june4
    june4
    Jan 3, 2024
    37
    本地 build 打包通过脚本传上服务器。
    服务器用 systemd 管理各个进程,有多进程需求的用的是第三方 npm 包(就是简单包装了下 node 内置的 cluster 功能)。
    0754
    0754
    Jan 3, 2024
    38
    6
    ysc3839
    ysc3839
    Jan 3, 2024 via Android
    39
    pkg 打包可执行文件,然后 systemd 运行
    XJPlus
    XJPlus
    Jan 3, 2024
    40
    以前 Windows 服务器的时候用过 6 ,哈哈哈哈哈哈
    ysc3839
    ysc3839
    Jan 3, 2024 via Android
    41
    @ysc3839 上述是公司项目的做法,自己的没什么正经项目,都是 tmux 直接运行。
    yuuk
    yuuk
    Jan 3, 2024
    42
    4+3 ,通过 docker 脚本起 pm2 ,pm2 再起服务脚本
    yuuk
    yuuk
    Jan 3, 2024
    43
    @dudubaba 为啥这么说?可以看日志和性能啊,还有进程保护、集群模式,总的来说还是挺方便。难道还有其他代替方案吗?
    wusheng0
    wusheng0
    Jan 3, 2024 via Android
    44
    3 ,4
    guguji5
    guguji5
    Jan 3, 2024
    45
    之前 3 ,现在 4 (什么日志不日志的,我从来不看日志)
    DingJZ
    DingJZ
    Jan 3, 2024
    46
    3 ,想用 docker 跑一直没空搞
    顺便问问大家怎么和 CI 工具配合的,我现在是把服务器作为 jenkins 的从节点,直接在节点上编译然后 pm2 启动
    如果构建再 copy 过去太大了,包括用 docker 镜像,node_modules 打不打在里面
    lbunderway
    lbunderway
    Jan 3, 2024
    47
    没人用 swarm 吗
    NNNNzs
    NNNNzs
    Jan 3, 2024
    48
    @crazyTanuki egg 或者 nestjs 是可以直接 npm start 的不是说真 npm run dev
    UXha45veSNpWCwZR
    UXha45veSNpWCwZR
    Jan 3, 2024
    49
    新手,第一个 nodejs 项目.3.
    Roojay
    Roojay
    Jan 3, 2024
    50
    一般静态服务直接用[serve]( https://www.npmjs.com/package/serve) 然后 `nohup serve -s -n -l 8080 ./web > web.log 2>&1 &`
    BeautifulSoap
    BeautifulSoap
    Jan 3, 2024
    51
    Lambda
    整个项目 zip 打包后传上去就行,太大的话 webpack 之类的 bundle 一下
    jiangzm
    jiangzm
    Jan 3, 2024❤️10
    52
    OP 分的有点乱,宝塔是什么鬼,1 、6 应该属于同一类
    按部署方式来说
    1 、CI/CD ( Jeknins/GitLab CI/TeamCity/...)
    2 、DevOps/Pipeline ( AWS Pipeline/阿里云 Devops/腾讯 Coding )
    3 、手撸

    按运行环境来说
    1 、VM/PM
    2 、Docker
    3 、Kubernetes

    按运行方式来说
    1 、PM2
    2 、Supervisor
    3 、直接运行
    m319
    m319
    Jan 3, 2024
    53
    这个 6 可太 6 了
    hikarikun0203
    hikarikun0203
    Jan 3, 2024
    54
    没有 serverless?
    learninining
    learninining
    Jan 3, 2024
    55
    6 有点 6
    adoal
    adoal
    Jan 3, 2024
    56
    非容器化的传统部署,至少要写好 systemd unit ,配好日志定时切分轮替。初始部署以及做过基础设施配置变更后至少要 reboot 一次服务器看能否自动启动完毕且运行正常。
    xiaojun996
    xiaojun996
    Jan 3, 2024
    57
    3 & 4
    defunct9
    defunct9
    Jan 3, 2024
    58
    7. systemctl 做成服务跑
    unt
    unt
    Jan 3, 2024
    59
    我比较担心 docker 的性能损耗和稳定性,我亲身经历过我直接用 nginx 启动的服务没出过问题,docker (所有容器)崩过好几次
    dc2002007
    dc2002007
    Jan 3, 2024
    60
    @express 我曾经通过 pm2 守护 npm run dev ,完全不会挂的
    CAze
    CAze
    Jan 3, 2024
    61
    3 & 4
    3 、功能不多我一般直接挂 PM2 ;
    4 、一般是做 web 的中间件,或者是拿去写接口
    photon006
    photon006
    Jan 3, 2024
    62
    4 ,用 docker-compose 的 scale 语法实现 zero downtime 平滑重启

    https://www.tines.com/blog/simple-zero-downtime-deploys-with-nginx-and-docker-compose
    sumarker
    sumarker
    Jan 3, 2024
    63
    3
    毫无疑问...
    kuxuan
    kuxuan
    Jan 3, 2024
    64
    3 多个项目都用
    rupert
    rupert
    Jan 3, 2024
    65
    6 有其合理性,现在很多前端用 Vite 开发,众所周知用 Vite 开发但是打包用的是其他的工具,可能打包有问题,所以
    lstz
    lstz
    Jan 3, 2024 via iPhone
    66
    用 docker ,版本号更新能 rollback ,心安
    PrtScScrLk
    PrtScScrLk
    Jan 3, 2024
    67
    1 & 3
    var1122
    var1122
    Jan 3, 2024❤️1
    68
    以前用 pm2 跑,后来更新的时候老是翻车(多数是包更新问题);后来就改成 docker 镜像了。
    vultr
    vultr
    Jan 3, 2024
    69
    我只有开发的时候用 nodejs ,部署的时候根本用不上它,直接导出纯静态文件了。
    ljh0585
    ljh0585
    Jan 3, 2024
    70
    上家公司 pm2 ,自己的项目 nohup ,现在 k8s
    AllenCai
    AllenCai
    Jan 3, 2024
    71
    nvm 用来控制版本,直接跑
    AllenCai
    AllenCai
    Jan 3, 2024
    72
    @AllenCai 还有就是加个 3
    AllenCai
    AllenCai
    Jan 3, 2024
    73
    @AllenCai
    类似这样,感觉很轻很方便
    ···js
    module.exports = {
    apps: [{
    name: 'app-node-12',
    script: 'app.js',
    exec_interpreter: '/home/.nvm/versions/node/v12.18.3/bin/node'
    },{
    name: 'app-node-14',
    script: 'app.js',
    exec_interpreter: '/home/.nvm/versions/node/v14.15.0/bin/node'
    }]
    };

    ···
    txzh007
    txzh007
    Jan 3, 2024
    74
    6 这个 开发环境暴露出来的东西有点多啊
    hevi
    hevi
    Jan 3, 2024
    75
    主要是 3

    公司租的小机器,没必要强上 docker 。。
    ClearMoki
    ClearMoki
    Jan 3, 2024
    76
    怕啥,直接 git clone 然后 install ,yarn start:dev 我司根本不怕的
    danhua
    danhua
    Jan 3, 2024
    77
    3
    abear
    abear
    Jan 3, 2024
    78
    @var1122 #68 docker 镜像,每次的项目更新,package 是重新下载 node_module 吗,打包的 node 的 app ,是放镜像里面还是放外面
    zackzergzeng
    zackzergzeng
    Jan 3, 2024
    79
    7 包里自带 node 二进制文件
    wherewhale
    wherewhale
    Jan 3, 2024
    80
    AWS + Serverless
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    81
    @wherewhale 这个怎么玩?直接写云函数?那些类似 koa 的框架 api 怎么搞
    GeorgeGalway
    GeorgeGalway
    Jan 3, 2024
    82
    666666
    wherewhale
    wherewhale
    Jan 3, 2024
    83
    @crazyTanuki 对 用函数 lambda 满足要求 koa 可用可不用 我们选择 graphql
    var1122
    var1122
    Jan 3, 2024
    84
    @abear 就是因为 npm 包的问题,所以每次 release 都是放到镜像里面;如果是拉单个 images 完整包肯定很大吗,但是通过 docker push 往镜像管理上传的时候,node 与 os 本体部分是公共抽离的,只有 node_modules 和程序的大小;
    crazyTanuki
    crazyTanuki
    OP
    Jan 3, 2024
    85
    @wherewhale 感觉有点超前,周边没有用这个的...
    wherewhale
    wherewhale
    Jan 3, 2024
    86
    @crazyTanuki 响应不会特别快 国内我估计接受不了
    testliyu
    testliyu
    Jan 3, 2024
    87
    dist 放在 nginx 里的是哪种
    zorui
    zorui
    Jan 3, 2024
    88
    原来是 2+5 k8s 里面跑 pm2 镜像
    zorui
    zorui
    Jan 3, 2024
    89
    原来是 3+5 k8s 里面跑 pm2 镜像
    ada87
    ada87
    Jan 3, 2024
    90
    @crazyTanuki #28 serverless ,方便个人感觉第二,目前能排第一的只能是 Vercel
    julyclyde
    julyclyde
    Jan 3, 2024
    91
    使用 pm2 ,就像使用 supervisorD 那么错
    正确的做法应该是 systemd/docker 直接运行你的应用程序入口
    Jackeriss
    Jackeriss
    Jan 3, 2024
    92
    pm2 我不光跑 node ,python 什么的也用,实在是太好用了
    cutchop
    cutchop
    Jan 3, 2024
    93
    pm2
    Azure99
    Azure99
    Jan 3, 2024
    94
    自己的项目 4
    huangsijun17
    huangsijun17
    Jan 3, 2024
    95
    使用 systemd 呢?
    Imindzzz
    Imindzzz
    PRO
    Jan 3, 2024
    96
    用的 docker ,但是一直觉得 docker 镜像太大了,起步几百兆,同样的 java 项目就才几十兆
    Jianzs
    Jianzs
    Jan 3, 2024
    97
    @ada87 #27 方便交流下平常是怎么使用 serverless 的么?会用到它的哪些能力?

    我最近也在做一个 Serverless 领域的项目,希望能给开发者带来更好的开发体验:开发者只需要写 TS ,就能够部署到自己的 AWS 、阿里云 等云账户,云间迁移不需要修改代码。

    所以,想了解下现有 serverless 工具的用户是怎么用的,以及会不会遇到什么问题~

    https://github.com/pluto-lang/pluto
    Jianzs
    Jianzs
    Jan 3, 2024
    98
    @BeautifulSoap 终于发现国内使用 Lambda 的人了,我想问一下,你会用到 AWS 的 BaaS 组件么,例如 DynamoDB 之类的,然后在 Lambda 调用? 你在开发这类应用的时候,有没有感觉开发过程很繁琐,需要在各个地方点来点去,有没有感觉权限配置之类的很复杂?想了解一下你的使用感受。

    我最近在做一个 Serverless 领域的项目,开发者只需要写 TS ,自动推导代码依赖的 BaaS 组件,自动创建 BaaS 组件,和 FaaS 函数,并且自动配置好权限。所以,我想了解下开发者需不需要这类工具。

    https://github.com/pluto-lang/pluto
    Jianzs
    Jianzs
    Jan 3, 2024
    99
    @wherewhale #80
    @hikarikun0203

    方便交流下平常是怎么使用 serverless 的么?会用到它的哪些能力?

    我最近也在做一个 Serverless 领域的项目,希望能给开发者带来更好的开发体验:开发者只需要写 TS ,就能够部署到自己的 AWS 、阿里云 等云账户,云间迁移不需要修改代码。

    所以,想了解下现有 serverless 工具的用户是怎么用的,以及会不会遇到什么问题~

    https://github.com/pluto-lang/pluto
    tntin
    tntin
    Jan 3, 2024
    100
    目前我用的是 systemd 运行,但感觉不是很舒服。
    用的 nest.js 然后 build 后上传服务器 需要在服务端 npm install ,这里感觉装依赖有点麻烦,不知道有没有办法打包的时候将用到的依赖一起打包
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2976 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 230ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    ♥ Do have faith in what you're doing.