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

时间:2015-10-21 23:34:14

标签: meteor meteor-up modulus.io

我有点好奇,如果Meteor Up(或其他Meteor应用程序部署像Modulus这样的流程)与复制Meteor应用程序,启动tmux会话以及只运行meteor以启动应用程序相比有任何想象力在你的服务器上。谢谢你提前!

4 个答案:

答案 0 :(得分:12)

Meteor Up Modulus 似乎只运行node.js和Mongodb。他们在使用meteor build打包生产后运行您的应用。这可能会让您的应用在性能方面具有优势。

可以在 tmux 屏幕会话中运行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 Forever PM2 ,在服务器重新启动时自动启动。因此,您必须手动登录服务器并运行meteor。如果您使用 tmux 屏幕计算出一种简单的方法,请告诉我们。

修改

我已设法通过/etc/rc.local文件中的以下行让Meteor开始系统启动:

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

一旦系统启动,此命令在tmux会话中运行run_meteorapp.sh shell脚本。在run_meteorapp.sh中我有:

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

答案 1 :(得分:5)

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

如:

  

功能

     

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

     

服务器配置

     

如果应用程序崩溃(永久使用)自动重启,则自动重启   服务器重启(使用upstart)Stepdown User Privileges恢复为   以前的版本,如果部署失败安全的MongoDB   安装(可选)预装PhantomJS(可选)

所以是的......它做得更多......

答案 2 :(得分:3)

Mupx做得更多。它利用码头工具。这是开发版本,但我发现它在将Meteor更新为1.2后比mup更可靠。

可以在github repo:https://github.com/arunoda/meteor-up/tree/mupx

找到更多信息

答案 3 :(得分:1)

我一直在使用mupx部署到数字海洋。设置mup.json文件后,您不仅可以部署应用程序,还可以通过CLI轻松更新服务器上的代码。还有一些其他命令也很有帮助。

mupx reconfig - 使用环境变量重新配置应用程序
mupx stop - 停止app duh
mupx start - ...
mupx restart - ...
mupx logs [-f --tail=100] - 这会获取在遇到部署错误时非常有用的日志。

它确实可以让您轻松更新自己的应用,我对此非常满意。

Mupx使用MeteorD (Docker Runtime for Meteor Apps) 并且由于它使用了docker,使用此命令通过ssh访问MongoDB shell非常有用:

docker exec -it mongodb mongo <appName>

试一试!