@moon_and_altair

Запустить hello world на nodejs?

Делаю на сервере код:

var n = 80;

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n'+n);
}).listen(n);
console.log('Server running at '+n);


Запускаю node file.js пишет в ответ:

Server running at 80

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1042:14)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)
    at Object.<anonymous> (/var/wwwdomen/data/www/domen.ru/file.js:7:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)


Соответственно запуская сайт я вижу Index of /

Если я делаю другой порт, например 8080:

var n = 8080;

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n'+n);
}).listen(n);
console.log('Server running at '+n);


Пишет:

Server running at 8080

и hello word запускается при заходе на любойДоменНаСервере:8080

Мне же надо определенный домен, и чтобы не надо было писать какие либо :порты.
Как же нужно правильно сделать?
PS Apache/2.2.16 (Debian)
  • Вопрос задан
  • 2815 просмотров
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
В первом варианте занят порт и он выбрасывает исключение, которые вы должны ловить где-то, но выэтого не делаете.

Чтобы завести на конкретном домене либо используйте для домена выделенный айпишник, либо проксируйте через nginx. Других решений не нашел быстрым гуглингом.

Выключайте апач и запускайте сервер на 80 порту.(либо включайте nginx и проксируйте на node)
Ответ написан
Комментировать
@vsvladimir
Как вариант в апаче можно для нужного домена перенаправлять 80 порт на нужный. Например node сервер работает на 3000 порту:

<VirtualHost node.example.com:80>   
    ServerName node.example.com  
    ProxyPreserveHost On
    ProxyPass / http://localhost:3000/
</VirtualHost>


В апаче нужно предварительно подключить модули proxy:
a2enmod proxy
a2enmod proxy_http
Ответ написан
Комментировать
deleted-fdhadzh
@deleted-fdhadzh
Ruby и JavaScript разработчик
var http = require('http'),
    host = '127.0.0.1',
    port = 8080;
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, host);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы