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