2012-12-02 34 views
11

Tôi đang cài đặt Meteor (framework) trên dụ (vi) AWS EC2 của tôi và theo các hướng dẫn và sau khi tạo một dự án thử nghiệm Tôi chạy meteor trên thư mục đó đem lại cho tôi sự mong đợiLàm thế nào để kiểm soát nơi Meteor chạy

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

Running on: http://localhost:3000/ 

Nhưng tôi không thể điều hướng đến máy chủ cục bộ của máy chủ trong trình duyệt của mình để xem dự án ví dụ về hello world. Có cách nào tôi có thể làm cho công việc sao băng trên một cái gì đó như:

http://mydomain.com/meteortest/ 

hoặc

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

Tôi vừa bắt đầu sử dụng EC2 và chưa thực hiện bất kỳ công việc máy chủ nào trước một tuần trước. Tôi chắc chắn là một n00b. –

+0

Bạn đang phát triển hoặc triển khai cho máy chủ này? –

+0

@TomColeman Đang phát triển. –

Trả lời

11

Cách mà Meteor đặt URL ROOT là bằng cách sử dụng một biến môi trường được gọi là ROOT_URL:

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

Vì vậy, bạn có thể chạy dụ Meteor của bạn như vậy: ROOT_URL = "http://mydomain.com Tuy nhiên, nếu bạn muốn có thể hiện sao băng được phục vụ từ một thư mục (như http://mydomain.com/meteortest), bạn sẽ phải sử dụng nginx để chuyển tiếp cổng (xem ví dụ của Tyr) nhưng thay thế dòng:

location/{ 

với:

location /meteortest { 

và thay đổi ROOT_URL của bạn một cách thích hợp. Nếu bạn vẫn không thể truy cập miền của mình từ bên ngoài, có thể bạn chưa đặt nhóm bảo mật của mình cho EC2. Bạn phải mở cổng 80. Thông tin thêm về cách thực hiện việc này có thể ở đây: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-network-security.html

+1

Điều này đặc biệt hữu ích nếu bạn muốn kiểm tra bất kỳ gói tài khoản nào * của localhost (hoặc nếu bạn có một miền trỏ vào địa chỉ IP của môi trường làm việc của bạn như tôi). – mmmeff

7

Bạn có thể thiết lập nginx để cổng proxy 3000 đến tên miền của bạn. Một cái gì đó như:

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; 
    } 
} 

Vui lòng xem http://wiki.nginx.org/HttpProxyModule để biết thêm thông tin.

Tuy nhiên, chạy sao băng trên cổng 3000 là môi trường phát triển. Nếu bạn muốn sử dụng nó trong sản xuất, hãy chạy "gói sao băng", và sau đó làm theo README bên trong tarball được tạo ra.

4

Tôi nghĩ rằng vấn đề là cổng 3000 có thể bị chặn bởi tường lửa của amazon. Bạn có thể xem xét việc mở nó lên, thử giải pháp của Tyr hoặc thử chạy sao băng với

meteor --port 80 

Bạn có thể cần quyền root (tức là sudo) để thực hiện việc này.

1

Chạy trực tiếp trên cổng 80 sẽ yêu cầu quyền ưu tiên, bạn không thực sự muốn máy chủ web của mình chạy - bắt đầu nó như là gốc và deescalating cho một người dùng thường xuyên là có thể, nhưng không thực sự lý tưởng là tốt, như bạn có thể thấy rằng một lỗi lập trình tại một số thời gian quên deescalate privs và bạn sẽ không thấy bất kỳ lỗi nào từ đó.Trong nhiều trường hợp, tôi không thực sự muốn/cần chạy bộ cân bằng tải để sử dụng nhiều lõi, đặc biệt nếu tôi chạy trên các loại cá thể đơn lõi t1 hoặc t2 AWS, mà tôi chỉ cần mở rộng khi tôi cần họ - vì thế những lời khuyên tốt nhất mà tôi có seen chỉ đơn giản là sử dụng khả năng hạt nhân Linux để làm cổng chuyển tiếp, lập bản đồ cổng 80 đến cổng 3000, như thế này

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

Nice và dễ dàng và không có gì khác để làm - và siêu hiệu quả cùng một lúc như không có quy trình bổ sung nào có liên quan đến việc phục vụ các yêu cầu.

Các vấn đề liên quan