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

Deploying Meteor app via Meteor Up or tmux meteor

我有点好奇 Meteor Up(或其他 Meteor 应用程序部署过程,如 Modulus)是否比复制 Meteor 应用程序、启动 tmux 会话和 运行 meteor 在您的服务器上启动您的应用程序。提前致谢!

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

如:

Features

Single command server setup Single command deployment Multi server deployment Environmental Variables management Support for settings.json Password or Private Key(pem) based server authentication Access, logs from the terminal (supports log tailing) Support for multiple meteor deployments (experimental)

Server Configuration

Auto-Restart if the app crashed (using forever) Auto-Start after the server reboot (using upstart) Stepdown User Privileges Revert to the previous version, if the deployment failed Secured MongoDB Installation (Optional) Pre-Installed PhantomJS (Optional)

所以是的...它的功能更多...

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;
  }
}

通过使用此方法,所有内容都包含在 meteor 容器中,您可以从 meteor 监视更改等方面受益。但是,您的服务器可能会有一些额外的开销。我不确定到底有多少,因为我没有对这两种方式进行足够的测试。

我发现使用这种方法的唯一问题是在重启时自动执行所有操作并不容易,比如自动 运行ning tmux 然后启动 meteor,而不是使用专门设计的工具,如 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'

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

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

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

后比 mup 更可靠

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

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

mupx reconfig - 使用环境变量重新配置应用
mupx stop - 停止应用程序 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>

试一试!