2015-09-16 20 views
8

Tôi có một máy chủ chuyên dụng mà tôi hiện đang chạy 4 trang web PHP. Máy chủ được cấu hình với apache + nginx. Bất cứ khi nào tôi lưu trữ các trang web php tôi đặt các tập tin trên thư mục public_html và thats nó, nó bắt đầu chạy. Nhưng bây giờ tôi muốn cài đặt ứng dụng nodejs. Tôi chỉ bối rối về cách xử lý file server.js? và làm thế nào để giữ cho nó chạy? tôi nên sử dụng pm2 hoặc mãi mãi để giữ cho nó chạy mãi mãi trên máy chủ ubuntu của tôi. Ngoài ra cách chạy trang web với tên miền như example.comCách triển khai ứng dụng nodejs trên máy chủ php/apache?

Trả lời

10

Trong NodeJS, bạn có thể sử dụng thứ gì đó có sẵn như thể hiện hoặc về cơ bản cuộn máy chủ web của riêng bạn, điều này khiến cho âm thanh khó khăn thực sự đơn giản trong nút ...

var http = require("http"); 

http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
}).listen(3000); 

Mãi mãi và PM2 là nơi tốt nhất để bắt đầu nếu bạn muốn giữ dịch vụ chạy trên máy chủ của mình. Mãi mãi đã dài hơn PM2, nhưng tôi tin rằng PM2 có nhiều tính năng phong phú hơn Forever (mãi mãi là hơi đơn giản để sử dụng).

Liên quan đến apache hoặc nginx, bạn có thể sử dụng chúng để chuyển tiếp các yêu cầu lên quy trình nút của mình. http theo mặc định chạy qua cổng 80, cổng howerver 80 đã được sử dụng bởi quá trình apache của bạn. Những gì tôi đề nghị là chạy ứng dụng nodejs của bạn trên một cổng khác (ví dụ 3000) và sử dụng máy chủ web hiện tại của bạn (apache, ligtthpd, nginx vv) như một proxy ngược, tôi đã bao gồm một thiết lập ví dụ bên dưới.

Apache

<VirtualHost example.com:*> 
    ProxyPreserveHost On 

    ProxyPass /api http://localhost:3000/ 
    ProxyPassReverse /api http://localhost:3000/ 

    ServerName localhost 
</VirtualHost> 

Lighttpd

$HTTP["host"] == "example.com" { 
    server.document-root = "/var/www/example.com" 
    $HTTP["url"] =~ "(^\/api\/)" { 
     proxy.server = (
      "" => (
       (
        "host" => "127.0.0.1", 
        "port" => "3000" 
       ) 
      ) 
     ) 
    } 
} 

nginx

http { 

    ... 

    server { 

     listen 80; 
     server_name example.com; 

     ... 

     location /api { 

      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Scheme $scheme; 

      rewrite ^/api/?(.*) /$1 break; 
      proxy_pass http://localhost:3000; 
     } 

     ... 
    } 
} 

Trong các ví dụ trên bất kỳ yêu cầu đến http://example.com/api sẽ được chuyển hướng đến quy trình nút của bạn chạy trên cổng 3000.

Ý tưởng ở đây là bạn sử dụng máy chủ web để phân phát tệp tĩnh của mình (ví dụ: css) và quy trình nút của bạn để phân phát ứng dụng.

+0

OK Tôi sẽ thử ngay bây giờ – John

+0

Khi tôi thực hiện cài đặt này và khởi động lại apache, nó không khởi động. nói configtest thử nghiệm thất bại – John

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