为什么使用 NGINX 或如何正确部署 Meteor 应用程序?

Why using NGINX or how to deploy Meteor app correctly?

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

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

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

第一个非常简单(所以我真的很喜欢它)。这里是link. I have to do a few steps - create a droplet with Ubuntu 14.04, then connect to this droplet via ssh, then install and run mup. After that anybody can access to my app. I worry, that there is no ssl support (my project is e-commerce, so I really need https-connection), but then I found in mup docs a short article How to set up SSL with Mup。所以乍一看一切都很完美

但后来我找到了另一种部署流星应用程序的方法。这里是link。它要复杂得多。首先,我需要在我的 droplet 上安装节点和 mongo。然后安装配置nginx。然后在许多步骤之后是 Meteor 安装。作者没有解释为什么人们需要以这种方式部署应用程序,并假设这对每个人来说都是显而易见的。他的解释是"The problem with this is that it isn’t wise to run an application like Meteor through your public port (which is 80)".

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

那么问题来了:哪一种方式是正确的?而且(这很重要)为什么?

安全性和性能对于这个项目都很重要。我也将使用 prerender.io or spiderable (for seo purposes) and fast render,如果它可以对您的答案产生影响的话。非常感谢你们的回答!

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

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

1)Why we need to use Nginx

2)Which one is the better approach

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

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

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

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 或在您分享的博客 (droplet) link 中定义,只需要 运行 meteor up 命令,这将首先创建一个包对于您的应用程序比 运行 所以在第一种方法中如果您做了任何更改而不需要再次登录到您的服务器更新更改,您需要做的只是再次 运行 相同的命令和这将创建包含更新的新包和 运行 您的项目。但我不认为那更安全。

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

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

希望这会有所帮助!

谢谢