Не удалось запустить приложение "appname" (порт 8080 недоступен) в приложении open shift node
Я написал сервер w630 для восстановления в кофе, и я не могу заставить его работать.
При развертывании я получаю следующую ошибку:
Ожидается, что порт приложения (8080) станет доступен...
после чего я получаю следующую ошибку
Приложение "appname" не удалось запустить (порт 8080 недоступен)
Если проблема с coffeescript является проблемой, есть работа вокруг нее. Я не хотел бы возвращаться к js.
Код моего сервера:
restify = require 'restify'
Bunyan = require 'bunyan'
server = restify.createServer
name: 'APPNAME'
version: '0.0.1'
log: Bunyan.createLogger
name: 'api'
serializers:
req: ()->
return "bad"
# Usercontroller.access calls a function to process the request
server.post '/user/access', UserController.access
server = create.createServer()
server.listen server_port, ->
console.log "Http server listening on #{server_port}"
require('./document')(server.router.mounts, 'restify')
return
Ответы
Ответ 1
Самый первый шаг, который вам нужно проверить, - посмотреть журнал в ~/app-root/logs/nodejs.log
В моем случае не было проблем с пакетом или любым видом доступа. Единственная информация, которую я получил в журнале:
Ошибка: прослушивание EACCES в errnoException (net.js: 905: 11) на Server._listen2 (net.js: 1024: 19)
Если вы не можете найти каких-либо причин, кроме передней консоли, сообщите, что он не может получить доступ к 8080, а затем убедитесь, что вы указали IP-адрес ADDRESS вместе с номером PORT.
Вот как я его исправил.
var express = require('express');
var app = express();
var http = require('http');
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");
http.createServer(app).listen(app.get('port') ,app.get('ip'), function () {
console.log("✔ Express server listening at %s:%d ", app.get('ip'),app.get('port'));
server();
});
Как указано, приложение app.get('ip') очень важно при прослушивании. В противном случае функция openshift не может запустить ваше приложение.
ОБНОВЛЕНО:
Как попасть в каталог журнала:
- SSH в вашу экипировку с командой rhc ssh
- После входа в систему введите
cd $OPENSHIFT_LOG_DIR
Там у вас есть файлы журналов, хранящиеся в среде Openshift.
Ответ 2
Это может быть по ряду причин. Если nodejs не запускается правильно, PaaS, похоже, пытается его запустить. Это либо создает столкновение для порта, либо ошибка не имеет ничего общего с самой проблемой. В моем случае отсутствовала зависимость.
Лучший способ решить вашу проблему - ssh в контейнере приложения и посмотреть файл журнала: tail -f ~/app-root/logs/nodejs.log
Ответ 3
решил проблему, установив мое имя пользователя и пароль mongo db
Ответ 4
Я получил ту же ошибку, и это связано с веткой, на которую я указывал на github.
Мастер был моей главной ветвью (сначала созданной), и когда я указал на то, что она была построена, но я бы получил ошибку, если бы указал на любую другую ветвь.
Ответ 5
Node App on Openshift - это двухэтапный процесс:
-
Создайте запись в package.json для запуска вашего сервера (точка входа в приложение):
"scripts": {
"start": "node server.js"
},
"main": "server.js"
-
Используйте переменные среды OPENHIFT для получения IP и PORT:
process.env.OPENSHIFT_NODEJS_PORT
process.env.OPENSHIFT_NODEJS_IP
Подробнее:
OpenShift: "Не удалось выполнить запуск управления" в приложении node
Ответ 6
rhc app create ... --from-code ...
и получение 8080 недоступно?
.
Так же, как объяснил Михай в своем , (port 8080 not available)
не обязательно должен быть связан с тем, как вы настраиваете свои порты - отсюда это может произойти, даже если вы 'правильно использовать process.env.OPENSHIFT_NODEJS_PORT
и process.env.OPENSHIFT_NODEJS_IP
.
Совет, чтобы посмотреть на ~/app-root/logs/nodejs.log
, помогает много, но что, если ошибка происходит на rhc app create ... --from-code ...
? Приложение не будет создано, поэтому вы не можете ssh и посмотрите nodejs.log
.
Попробуйте нажать приложение в ограниченной версии - закомментируйте как можно больше кода.
Для меня это сработало, чтобы начать только с экспресс-приложения, инициализирующего и прослушивающего. Затем, когда у меня было создано приложение openshift, я по-разному раскомментировал код, нажав и проверив файл nodejs.log
.
Таким образом, я обнаружил, что мое имя mongoDb было "APPNAME_"+process.env.NODE_ENV
, а openshift создала базу данных mongoDb, называемую только APPNAME
.
Извините, что не ответил напрямую на вопрос, но 8080 not available
, похоже, вызван различными настройками, возможно, это поможет кому-то.
Ответ 7
Если вы используете экспресс: app.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);
Или:
var port = process.env.OPENSHIFT_NODEJS_PORT;
var ip = process.env.OPENSHIFT_NODEJS_IP;
app.listen(port, ip);
Ответ 8
В моем случае я получаю следующую ошибку, отмеченную с помощью rhc ssh
как было предложено выше.
Unhandled rejection Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
Я избавлюсь от своей проблемы, установив
mongo_url = process.env.OPENSHIFT_MONGODB_DB_URL;
to mongoose uri.I пытался с последующим, но
mongo_url = "mongodb://admin:[email protected]$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/mydbname"
это не работает.
Надеюсь, это поможет кому-то.
Ответ 9
Лучший способ решить эту проблему - проверка вашей папки журналов. SSH на ваш сервер, найдите файл nodejs.log
, вы можете использовать cat nodejs.log
для просмотра его содержимого.
Причина может быть:
- Синтаксическая ошибка в других файлах
- Отсутствует переменная окружения порта
- Отсутствует переменная среды IP (эти 2 последних из них указаны в других ответах)
Даже если он говорит, что "Порт 8080 недоступен", ошибка может быть в файле, который не может быть выполнен должным образом, поэтому вы должны проверить последние изменения или просто проверить непосредственно журнал и найти, где ошибка.