2012-12-02 4 views
11

läuft ich Meteor (Rahmen) auf meiner AWS EC2 (Mikro-) Instanz und die Anweisungen bin die Installation und nach einem Testprojekt zu schaffen lief ich meteor auf dem Verzeichnis mir die erwartetenWie zu kontrollieren, wo Meteor

[[[[[ /var/www/html/meteortest ]]]]] 

Running on: http://localhost:3000/ 
geben

Aber ich kann nicht in meinem Browser zum localhost meines Servers navigieren, um das Hello World Beispielprojekt zu sehen. Gibt es eine Möglichkeit, ich Meteor Arbeit auf so etwas wie machen:

http://mydomain.com/meteortest/ 

oder

http://mydomain.com/meteortest:3000 
+0

Ich habe gerade mit EC2 begonnen und habe vor einer Woche noch keine Serverarbeit geleistet. Ich bin definitiv ein n00b. –

+0

Entwickeln oder implementieren Sie auf diesem Server? –

+0

@TomColeman Entwickeln. –

Antwort

11

Die Art und Weise, die Meteor der Stamm-URL unterscheidet, ist durch eine Umgebungsvariable namens ROOT_URL mit:

http://docs.meteor.com/#meteor_absoluteurl

So könnten Sie Ihr Meteor Beispiel wie so laufen: ROOT_URL = "http://mydomain.com/"meteor --port 80

Wenn Sie jedoch die Meteor-Instanz aus einem Ordner bedienen möchten (wie), müssen Sie nginx verwenden, um Ports weiterzuleiten (siehe Tyrs Beispiel), aber ersetzen Sie die Zeile:

location/{ 

mit:

location /meteortest { 

und Ihre ROOT_URL entsprechend ändern. Wenn Sie von außen immer noch nicht auf Ihre Domäne zugreifen können, haben Sie Ihre Sicherheitsgruppen möglicherweise nicht ordnungsgemäß für EC2 festgelegt. Sie müssen Port 80 öffnen. Weitere Informationen dazu finden Sie hier: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-network-security.html

+1

Dies ist besonders hilfreich, wenn Sie eines der Konten * deaktivieren möchten von localhost (oder wenn Sie eine Domain auf die IP-Adresse Ihrer Arbeitsumgebung gerichtet haben wie ich). – mmmeff

7

Sie können Setup nginx zu Proxy-Port 3000 auf Ihre Domain. Etwas wie:

server { 
    listen 80; 
    server_name meteortest.mydomain.com; 
    access_log /var/log/nginx/meteortest.access.log; 
    error_log /var/log/nginx/tmeteortest.error.log; 
    location/{ 
    proxy_pass http://localhost:3000; 
    include /etc/nginx/proxy_params; 
    } 
} 

Weitere Informationen finden Sie unter http://wiki.nginx.org/HttpProxyModule.

Laufender Meteor auf Port 3000 ist jedoch eine Entwicklungsumgebung. Wenn Sie es in der Produktion verwenden möchten, führen Sie bitte "Meteorbündel" aus, und folgen Sie dann der README in dem generierten Tarball.

4

Ich denke, das Problem ist, dass Port 3000 wahrscheinlich von Amazon Firewall blockiert wird. Man könnte es auf die Öffnung aussehen, versuchen Tyr-Lösung oder nur versuchen, Meteor läuft mit

meteor --port 80 

Sie Root-Rechte benötigen (das heißt sudo), dies zu tun.

1

Wenn Sie direkt auf Port 80 ausgeführt werden, benötigen Sie root-Berechtigungen, die Sie nicht wirklich ausführen möchten Es ist als root und deescaling zu einem normalen Benutzer möglich, aber nicht wirklich ideal, wie Sie vielleicht feststellen, dass ein Programmierfehler zu irgendeinem Zeitpunkt vergisst, privcs zu deeskalieren, und Sie keine Fehler davon sehen werden.In vielen Fällen möchte/muss ich keinen Load Balancer ausführen, um mehrere Kerne zu verwenden, vor allem, wenn ich AWS Single Core T1- oder T2-Instance-Typen verwende, die ich einfach skalieren kann, wenn ich sie benötige sie - daher der beste Rat, den ich habe seen ist, einfach die Möglichkeit, Linux-Kernel zu verwenden Port-Forwarding zu tun, Mapping-Port 80 auf Port 3000, wie dieser

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \ 
          --dport 80 -j REDIRECT --to-port 3000 

Nizza und einfach nichts anderes zu tun - und Super effizient und gleichzeitig keine zusätzlichen Prozesse bei der Bearbeitung der Anfragen.