7

meteor与复制 Meteor 应用程序、启动 tmux 会话并运行以在服务器上启动应用程序相比,Meteor Up(或其他 Meteor 应用程序部署过程,如 Modulus)是否做任何花哨的事情,我有点好奇。提前感谢ins!

4

4 回答 4

12

Meteor UpModulus似乎只运行 node.js 和 Mongodb。他们在使用meteor build. 这可能会给您的应用程序带来性能优势。

可以只在tmuxscreen会话中运行流星。我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 然后启动流星,而不是使用专门设计的工具,如Node.js ForeverPM2,它们会在服务器自动启动已重新启动。所以你必须手动登录到服务器并运行meteor. 如果您想出一个使用tmuxscreen的简单方法,请告诉我。

编辑:

我已经设法让 Meteor 在系统启动时启动,/etc/rc.local文件中包含以下行:

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

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

#!/usr/bin/env bash
(cd /home/ubuntu/Sites/meteorapp && exec meteor run --settings settings.json --production)
于 2015-10-23T01:21:06.900 回答
5

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

如:

特征

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

服务器配置

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

所以是的......它还有更多......

于 2015-10-22T11:12:19.403 回答
3

Mupx 做得更多。它利用了 docker。它是开发版本,但我发现它在将 Meteor 更新到 1.2 后比 mup 更可靠

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

于 2015-12-15T18:23:27.973 回答
1

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

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

它确实使更新您的应用程序变得容易,我对此非常满意。

Mupx 确实使用MeteorD(用于 Meteor 应用程序的 Docker 运行时) ,并且由于它使用 docker,因此使用以下命令通过 ssh 访问 MongoDB shell 非常有用:

docker exec -it mongodb mongo <appName>

试一试!

于 2016-06-13T01:01:17.663 回答