meteor
与复制 Meteor 应用程序、启动 tmux 会话并运行以在服务器上启动应用程序相比,Meteor Up(或其他 Meteor 应用程序部署过程,如 Modulus)是否做任何花哨的事情,我有点好奇。提前感谢ins!
4 回答
Meteor Up和Modulus似乎只运行 node.js 和 Mongodb。他们在使用meteor build
. 这可能会给您的应用程序带来性能优势。
可以只在tmux或screen会话中运行流星。我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 Forever或PM2,它们会在服务器自动启动已重新启动。所以你必须手动登录到服务器并运行meteor
. 如果您想出一个使用tmux或screen的简单方法,请告诉我。
编辑:
我已经设法让 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)
如果您查看 Meteor Up Github 页面:https ://github.com/arunoda/meteor-up ,您可以看到它的作用。
如:
特征
单命令服务器设置 单命令部署 多服务器部署 环境变量管理 支持 settings.json 基于密码或私钥(pem)的服务器身份验证 访问,来自终端的日志(支持日志拖尾) 支持多个流星部署(实验性)
服务器配置
应用程序崩溃时自动重启(永远使用) 服务器重启后自动启动(使用 upstart) Stepdown 用户权限 如果部署失败,则恢复到以前的版本 安全的 MongoDB 安装(可选) 预安装 PhantomJS(可选)
所以是的......它还有更多......
Mupx 做得更多。它利用了 docker。它是开发版本,但我发现它在将 Meteor 更新到 1.2 后比 mup 更可靠
更多信息可以在 github repo 中找到: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(用于 Meteor 应用程序的 Docker 运行时) ,并且由于它使用 docker,因此使用以下命令通过 ssh 访问 MongoDB shell 非常有用:
docker exec -it mongodb mongo <appName>
试一试!