2013-07-11 9 views
7

पर node.js express.js कैसे प्राप्त करूं नमस्ते मैं उबंटू 12.04.2 पर पोर्ट 80 पर अपना नोड.जेएस वेबसर्वर चलाने की कोशिश कर रहा हूं। यह मशीन एक क्लीन इंस्टॉल है और केवल एक चीज जिसे मैंने इंस्टॉल किया है, openssh-server nodejs और स्क्रीन है। जब मैं पोर्ट 80 पर नोड webservice चलाता हूं, तो मैं ब्राउज़र पर नेविगेट कर सकता हूं और लोकलहोस्ट में टाइप कर सकता हूं और मैं अपनी साइट देखूंगा। हालांकि जब मैं एक अलग मशीन से साइट तक पहुंचने का प्रयास करता हूं तो मुझे समय समाप्त हो जाता है। हालांकि मैं मशीन एसएसएच और पिंग कर सकते हैं। मैं उबंटू कैसे स्थापित कर सकता हूं ताकि मेरा node.js एप्लिकेशन मेरी वेबसाइट परोस रहा हो। यह साइट ठीक काम करती है जब मैं इसे अपने लैपटॉप (विंडोज 7) पर होस्ट करता हूं और एक अलग लैपटॉप साइट को मेरे आईपी पते से एक्सेस करता है।मैं पोर्ट 80

मैं अपाचे या nginx चलाने के लिए नहीं चाहता। क्या इसे करने का कोई तरीका है?

//---ExpressJS 
    console.log('Initializing Express...'); 
    var express = require('express'); 
    var app = express(); 

    //---Middleware: Allows cross-domain requests (CORS) 
    var allowCrossDomain = function(req, res, next){ 
     res.header('Access-Control-Allow-Origin', '*'); 
     res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
     res.header('Access-Control-Allow-Headers', 'Content-Type'); 
     next(); 
    } 

    ///---MemoryStore 
    //var MemoryStore = express.session.MemoryStore; 

    //---App config 
    app.configure(function() { 
     var pub_dir = __dirname + '/public'; 
     app.set('views', __dirname + '/views'); 
     app.set('view engine', 'jade'); 
     app.set("trust proxy", true); 
     app.use(express.favicon(__dirname+'/favicon.ico')); 
     app.use(express.compress()); 
     app.use(express.bodyParser()); 
     app.use(express.cookieParser()); 
     app.use(express.session({secret: 'cogswell'})); 
     app.use(express.methodOverride()); 
     app.use(allowCrossDomain); 
     app.use(app.router); 
     app.use(express.static(__dirname)); 
    }); 

    //---Start listening 
    var port = 80; 
    app.listen(port); 
    console.log('Webservice started on port: '+port); 

अद्यतन: नेटवर्क एक बड़े पैमाने पर फ़ायरवॉल

उत्तर

10

आप रूट के रूप में चला रहे हैं है? या कम से कम पोर्ट 80 का उपयोग करने की अनुमति है? लिनक्स सिस्टम पर आपको पोर्ट 1024 या उससे नीचे का उपयोग करने के लिए विशेष उपयोगकर्ता विशेषाधिकारों की आवश्यकता है। sudo node ...

+0

हाँ मैं चल रहा हूं sudo node webservice.js – Jareddlc

+0

आदर्श रूप से, आप अपने सर्वर को रूट उपयोगकर्ता के रूप में नहीं चलाना चाहते हैं, बल्कि एक विशेषाधिकार प्राप्त उपयोगकर्ता चाहते हैं ताकि यदि कोई सुरक्षा उल्लंघन हो (जैसे एक अनचाहे इंजेक्शन) तो उल्लंघन किया गया उपयोगकर्ता नहीं मेजबान पर जड़ नहीं है। –

0

का उपयोग कर रूट के रूप में चलाने का प्रयास करें आप किसी अन्य कंप्यूटर से एक्सेस करने का प्रयास कर रहे हैं? यदि ऐसा है तो locahost के बजाय 0.0.0.0 को संबोधित करने के लिए बाध्य करें।

0.0.0.0 पर एक आवेदन बाध्यकारी का अर्थ है कि इसे कंप्यूटर के बाहर से सुलभ किया जाना चाहिए (यानी सभी इंटरफेस पर बाध्य)। जबकि localhost पर बाध्यकारी सेवा को स्थानीय रूप से सुलभ होने के लिए प्रतिबंधित करता है।

पुष्टि करने के लिए कि आपके आवेदन आंतरिक रूप से काम करता है की कोशिश:

wget -O - http://127.0.0.1/ 

... वेब सर्वर चल रहा है एक ही कंप्यूटर पर।

+0

क्या आप विस्तृत कर सकते हैं? 'netstat -an | grep "LISTEN" ' 'टीसीपी 0 0 0.0.0.0:80 0.0.0.0:* LISTEN' – Jareddlc

+0

आह लगता है कि यह पहले से ही' 0.0.0.0' तक सीमित है। तो क्या आपने आंतरिक रूप से साइट तक पहुंचने का प्रयास किया? यदि ऐसा है तो शायद आपके पास फ़ायरवॉल समस्या है। 'Sudo iptables -L -v -n' टाइप करने का प्रयास करें - क्या आपके पास फ़ायरवॉल सक्रिय है? –

+0

मैंने बस एसएसएच के माध्यम से उस wget कमांड को किया और मुझे HTML सामग्री – Jareddlc

संबंधित मुद्दे