【问题标题】:Meteor deployed to aws servers hot code push restart fails部署到 aws 服务器的 Meteor 热代码推送重启失败
【发布时间】:2013-07-11 20:50:37
【问题描述】:

我有一些 Meteor 应用程序在 AWS EC2 实例上运行。

一切正常,除非我捆绑然后 tar -zxvf bundle.tgz 进入 /bundle 目录。

应用程序不像在meteor.com 上那样热部署。我必须重新启动服务器。

这是我的服务脚本

从运行级别 [2345] 开始

在运行级别 [-2345] 上停止

重生

重生限制 10 5

脚本
APP_DIR=/home/ubuntu/bundle
LOG_FILE=/var/log/app.log

导出端口=80 导出

MONGO_URL=mongodb://somelogin:fakepasssword@somedomain:1231231/app_db

导出ROOT_URL=http://somedomain.com

/usr/bin/node "$APP_DIR/main.js" 2>&1 >> $LOG_FILE

结束脚本

有什么想法吗?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    已部署的应用程序(通过 meteor bundle 创建)不会进行热代码更改。您必须更新文件然后停止并重新启动节点进程。

    您可以使用 forever 之类的东西来保持它们运行,然后执行 forever restart 让它们运行新代码

    要永久使用,您可以使用类似以下内容的脚本:

    APP_DIR=/home/ubuntu/bundle
    export PORT=80
    export MONGO_URL=mongodb://somelogin:fakepasssword@somedomain:1231231/app_db
    export ROOT_URL=http://somedomain.com
    forever start "$APP_DIR/main.js"
    

    然后,当您更新 /home/ubuntu/bundle 中的文件时,只需执行上述相同操作,但使用 forever restart 而不是 forever start

    【讨论】:

    • 另外,我将如何修改以永久支持?你的意思是永远重启会是命令行吗?
    • 热代码推送基本上不适用于已部署的实例(包括meteor.com)。当您进行流星部署时,它会执行诸如替换文件并在幕后重新启动节点进程之类的操作。永远使用很容易用我使用的东西更新答案
    • 当你说“只是做同样的事情,但永远重启”你的意思是脚本应该永远重启吗?而不是永远开始?
    • 当我在 EC2 上重新启动节点进程时,所有连接的客户端都会收到热代码推送。也许你的经历不一样?
    • 这是应该发生的。我的意思是,如果您编辑文件而不重新启动节点进程(如在本地开发时),客户端将不会在已部署的实例上获得热代码推送
    【解决方案2】:

    查看https://github.com/matb33/meteor-ec2-install 内部的一些见解。

    每当我部署并重新启动节点时,所有连接的客户端都会收到热代码推送。我也在进行适当的部署......也许部分热代码推送功能不会延续,例如会话,我不确定。

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2020-11-18
      • 1970-01-01
      相关资源
      最近更新 更多