【问题标题】:Why using NGINX or how to deploy Meteor app correctly?为什么使用 NGINX 或如何正确部署 Meteor 应用程序?
【发布时间】:2016-09-15 00:11:55
【问题描述】:

我将在几周内完成我的 Meteor 应用程序。所以我将面临的问题 - 如何让我的应用程序可供其他人使用。

首先我在 Digital Ocean 上买了一个水滴。并开始阅读有关将流星应用部署到生产服务器的方法。

我找到了两种完全不同的方法!

第一个非常简单(所以我真的很喜欢它)。这是link。我必须做几个步骤——用 Ubuntu 14.04 创建一个 droplet,然后通过 ssh 连接到这个 droplet,然后安装并运行 mup。之后任何人都可以访问我的应用程序。我担心没有ssl支持(我的项目是电子商务,所以我真的需要https-connection),但后来我在mup docs中找到了一篇短文How to set up SSL with Mup。乍一看,一切都很完美。

但后来我找到了另一种部署流星应用程序的方法。这是link。它要复杂得多。首先,我需要在我的 droplet 上安装 node 和 mongo。然后安装和配置nginx。然后经过许多步骤是 Meteor 安装。作者没有解释为什么人们需要以这种方式部署应用程序,假设它显然适用于每个人。他的解释是“这样做的问题是,通过你的公共端口(即 80)运行像 Meteor 这样的应用程序是不明智的”。

我承认我在这些问题上没有经验和知识。我可以确切地说的一件事是,我需要一种非常合适的方式来部署电子商务流星应用程序。这样做我不会睡很多小时也没关系。

所以问题是:哪一种方法是合适的?而且(很重要)为什么?

安全性和性能对于这个项目都很重要。我还将使用prerender.iospiderable(用于seo 目的)和fast render,如果它会对您的答案产生影响的话。真的很感谢你们的回答!

【问题讨论】:

    标签: ssl meteor nginx deployment meteor-up


    【解决方案1】:

    您可以通过不同的机制在服务器上部署您的 Meteor 应用程序。有很多方法可以做同样的事情。 正如你所说,你也找到了两种方法来做到这一点。 因此,在第一个链接中,您在成功部署时使用 Meteor up 来部署应用程序。 在第二种方法中,您需要先登录到服务器,然后创建用户,然后再将所需的一切安装到您的服务器机器上,然后您需要设置 Nginx。

    所以我猜你的问题与“Nginx”有关。而你想知道

    1)为什么我们需要使用 Nginx

    2)哪种方法更好

    所以你的第一个问题的答案如下:-

    Nginx(发音为“engine x”)是一个用于多种用途的 Web 服务器,主要用于代理传递。意味着使用 nginx,您可以将您的请求从一个 url 重定向到另一个,并且实际的 url 从 UI 中隐藏(出于安全目的和重定向)。 就像在流星中一样,您的应用程序默认运行在 3000 上,因此一种方法是您可以打开 3000 端口并在该端口上运行您的应用程序。但是通过 nginx,您可以在 80 端口上运行您的应用程序,并且当用户点击任何事件而不是在 nginx 中时,您可以配置要发送请求的地址。 就像您可以将它们发送到 3000 端口一样。 所以现在用户实际上不知道您的请求在哪里进行,因为您向他们展示了端口 80,但实际上您的请求是转到 3000 端口。所以这是使用 nginx 的一个优势,同样还有很多。

    所以对于 nginx 的配置,如果你使用的是 ubuntu,你只需要安装 nginx,而不是通过简单的命令-:

    sudo apt-get install nginx
    

    然后在如下目录下的nginx配置文件中设置:-

    /etc/nginx/sites-enabled/default
    

    只需打开此文件并在此处设置您的配置,例如:-

    server {
    
    listen       80;
            server_name  localhost;
    
            root   /home/parveen/meteor/app;
            location / {
                    index /index.html;
    
            }
    
            location /api {
               proxy_pass http://localhost:3000;
            }
    }
    

    通过这种方式,您可以根据需要配置您的 nginx 设置,请阅读 nginx 文档了解详细信息。

    之后,您需要使用您想要使用的 forever 或 nohup 启动您的服务器,这样您的服务器就不会在您退出服务器登录时停止。

    结论:-

    在第二种方法中,您需要通过 ssh 登录到您的服务器自己安装所有内容,而不是配置 nginx,然后运行您的服务器。 如果您再次进行任何更改,则需要更新对服务器的更改,然后停止流星应用程序,然后重新启动它。 但这是更安全的方法,你可以做你想做的事。

    在第一种方法中,他们使用 mup (Meteor up) 为你做了很多工作。您只需要进行一些配置,您可以使用 Docker 或在您共享的博客(液滴)链接中定义,只需要运行 meteor up 命令,这将首先为您的应用程序创建一个包,而不是在第一种方法中运行它,如果您所做的任何更改都不需要再次登录到您的服务器更新更改,您需要做的只是再次运行相同的命令,这将创建带有更新的新包并运行您的项目。但我不认为这更安全。

    所以这取决于您的要求和您要使用的选择。

    如果您有任何问题,非常欢迎。

    希望这会有所帮助!

    谢谢

    【讨论】:

    • 感谢您的回答!更好的安全方法在实践中意味着什么?我正在完成服装电子商务网站。我的项目少于 500 件,因此它并不是真正的数据密集型项目。我读到如果我不使用 Galaxy,那么 nginx 是一种获得良好性能的方法。但是,如果我的网站在 db 中只有 100-300 个项目并且用户可以做的最复杂的事情是将项目添加到购物车,然后通过表格确认订单。就是那个问题。我可以在我的用例中使用 mup 还是我强烈建议使用 nginx?
    • 这完全取决于你,因为两者都有不同的用法和优点,比如如果你使用 mup,你不需要手动 ssh 登录到你的服务器,而不是更新那里的更改然后重新启动你的应用程序。由mup完成。无论您在哪里使用 nginx,都不需要这样做。但是,如果您要求比我建议您使用 nginx 更安全。任何困惑都比再次评论!谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2020-05-05
    • 2012-10-13
    相关资源
    最近更新 更多