通过Meteor Up或tmux meteor部署Meteor应用程序

7

我有点好奇Meteor Up(或其他像Modulus这样的Meteor应用程序部署过程)是否与将Meteor应用程序复制到服务器上,启动tmux会话并只需运行meteor来启动应用程序相比有什么特别的地方。先谢谢!

4个回答

12

Meteor UpModulus 看起来只是运行 node.js 和 MongoDB。在使用 meteor build 打包生产应用之后,它们会运行你的应用程序。这可能会提高你的应用性能。

你也可以在 tmuxscreen 会话中直接运行 Meteor。我使用 meteor run --settings settings.json --production 命令传递设置,并使用生产模式来缩小代码等。你还可以使用类似 Nginx 的代理转发器将请求转发到80端口(http)和443端口(https)。

以下是我的Nginx配置供参考:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl;
  server_name www.example.com;

  ssl_certificate /etc/ssl/private/example.com.unified.crt;
  ssl_certificate_key /etc/ssl/private/example.com.ssl.key;

  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl;
  server_name example.com;

  ssl_certificate /etc/ssl/private/example.com.unified.crt;
  ssl_certificate_key /etc/ssl/private/example.com.ssl.key;



  location / {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

通过使用这个方法,所有东西都包含在流星容器中,您可以享受到流星监视变化等好处。然而,您的服务器可能会有一些额外的开销。我不确定具体有多少,因为我没有足够测试过两种方式。

使用这种方法唯一的问题是,在重新启动时很难让所有内容自动化,例如自动运行tmux然后启动meteor,而不是使用专门设计的工具,如Node.js ForeverPM2,它们会在服务器重新启动时自动启动。所以你必须手动登录到服务器并运行meteor。如果您找到了使用tmuxscreen的简单方法,请告诉我。

编辑:

我已经成功地在/etc/rc.local文件中添加了以下行来启动Meteor系统引导:

sudo -H -u ubuntu -i /usr/bin/tmux new-session -d '/home/ubuntu/Sites/meteorapp/run_meteorapp.sh'

这个命令会在系统启动后,在tmux session中运行run_meteorapp.sh shell脚本。在run_meteorapp.sh中,我有:

#!/usr/bin/env bash
(cd /home/ubuntu/Sites/meteorapp && exec meteor run --settings settings.json --production)

5
如果您查看Meteor Up的Github页面:https://github.com/arunoda/meteor-up,您可以看到它的功能。
例如:

功能

单个命令服务器设置 单个命令部署 多服务器部署 环境变量管理 支持settings.json 基于密码或私钥(pem)的服务器身份验证 从终端访问、日志(支持日志尾随) 支持多个Meteor部署(实验性)

服务器配置

如果应用程序崩溃,则自动重启(使用forever) 服务器重新启动后自动启动(使用upstart) 降低用户权限 如果部署失败,则恢复到先前版本 安全的MongoDB安装(可选) 预安装PhantomJS(可选)

所以,是的...它做了更多的事情...

3

Mupx的功能更加强大。它利用Docker。虽然它是开发版本,但在将Meteor更新到1.2之后,我发现它比mup更可靠。

更多信息可以在github存储库中找到:https://github.com/arunoda/meteor-up/tree/mupx


1
我一直在使用mupx部署到Digital Ocean。一旦设置了mup.json文件,不仅可以通过CLI部署应用程序,还可以轻松地更新服务器上的代码。还有一些其他有用的命令。 mupx reconfig - 使用环境变量重新配置应用程序
mupx stop - 停止应用程序
mupx start - ...
mupx restart - ...
mupx logs [-f --tail=100] - 获取日志,在遇到部署错误时非常有帮助。
这确实使更新您的应用程序变得容易,我对此感到非常满意。
Mupx确实使用MeteorD(Meteor应用程序的Docker运行时),并且由于它使用docker,因此可以使用以下命令通过ssh访问MongoDB shell:
docker exec -it mongodb mongo <appName>

试一试吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接