2013-10-08 13 views
6

Tôi đã cố gắng để triển khai một ứng dụng Node.js với OpenShift như trong liên kết này hereNode.js triển khai trong OpenShift

Tôi hiểu mã này

var http = require('http'); 

var server = http.createServer(function(req, res) { 
    res.writeHead(200); 
    res.end('Hello Http'); 
}); 
server.listen(3000); 

và không có vấn đề chạy nó tại địa phương

$ node server.js // saved as server.js 

Tuy nhiên, cách này hoạt động khi tôi cam kết ứng dụng này trong openhift? Đây là mã rất đơn giản. Tôi có một số mã tải về đó là một ứng dụng chat và client-server cần phải cấu hình để nghe trên một số cổng (Tôi đã sử dụng số cổng 3000 trong localhost của tôi).

Nó hoạt động trên số cổng 3000 trong máy chủ cục bộ nhưng làm cách nào tôi có thể làm cho nó hoạt động trong Openshift?

Trả lời

9

Bạn cần nghe trên cổng process.env.OPENSHIFT_NODEJS_PORT. Vì vậy, một cái gì đó như thế này nên làm việc:

server.listen(process.env.OPENSHIFT_NODEJS_PORT || 3000); 

Xem ở đây ví dụ: Error: listen EACCES on Openshift app

+0

Hi Nitzan, tôi đã cố gắng mã này, nhưng dường như không làm việc. Nó bây giờ nói "socket.io.js không tìm thấy". Tôi googled về nó và đã thử một số mã khác nhau nhưng không có gì có vẻ làm việc. Tất cả mọi thứ hoạt động tốt tại địa phương nhưng khi tôi tải lên cùng một mã trong openshift, nó không hoạt động. Chủ yếu, nó không tìm thấy tệp socket.io.js. Tôi không biết cách giải quyết nó. – jeewan

+0

Vấn đề ban đầu của bạn được giải quyết, bạn hiện đang phải đối mặt với một vấn đề khác. Tôi đề nghị bạn chấp nhận câu trả lời này và mở một câu hỏi mới liên quan đến "socket.io.js không tìm thấy". Đó là một vấn đề khác, và những người trong tương lai có thể tìm kiếm nó sẽ không tìm kiếm theo tiêu đề của câu hỏi này. Nó cũng sẽ cung cấp cho người khác một cơ hội để trả lời. Trong câu hỏi mới đó, bạn chắc chắn nên bao gồm cấu trúc thư mục và nhật ký có liên quan. Mô tả vấn đề tốt hơn: ai là "nó" (trong "nó bây giờ nói ...") - khách hàng? máy chủ? thứ gì khác? –

+0

Xin chào Nitzan, xin lỗi vì điều này. Tôi đã vội vàng sáng nay chỉ để trả lời câu trả lời của bạn và hoàn toàn quên chấp nhận câu trả lời của bạn. Tôi chấp nhận câu trả lời của bạn, cảm ơn bạn rất nhiều. Tôi đã tìm kiếm rất nhiều và cố gắng sống trong máy chủ Openshift để sửa chữa nó nhưng không thể giải quyết nó. Tôi sẽ nghiên cứu thêm về nó sau ngày hôm nay. Xin lỗi về điều đó, tôi chấp nhận câu trả lời của bạn và cảm ơn bạn rất nhiều vì điều này. – jeewan

2

Hey vấn đề với socket.io là bạn phải có gói NPM cài đặt cục bộ nhưng không phải trong OpenShift (phụ thuộc không nhận được đẩy). Bạn có thể đăng nhập thông qua ssh (tìm kiếm "Muốn đăng nhập vào ứng dụng của bạn?" Trong menu bên phải trong bảng điều khiển mở, theo số instructions và sử dụng kết nối ssh được cung cấp) rồi đăng nhập với thiết bị đầu cuối o Putty và truy cập:

cd app-root/repo 

hoặc

cd $OPENSHIFT_REPO_DIR 

và sau đó

npm install socket.io 

tôi đã sử dụng mà để cài đặt cầy mangut và phụ thuộc khác mà không gặp rắc rối. Ngoài ra bạn có thể sử dụng

node server.js 

từ dòng lệnh để chạy trang web;)

+1

Hoặc bạn có thể chỉnh sửa gói package.json – mcbjam

+1

Chỉ cần 'npm install' sau khi kiểm tra mã từ openshift và nó sẽ nhận các gói cần thiết (được định nghĩa trong package.json) cho bạn cục bộ – Tapirboy

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