Подтвердить что ты не робот

Не удалось запустить приложение "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
4b9b3361

Ответ 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 недоступен", ошибка может быть в файле, который не может быть выполнен должным образом, поэтому вы должны проверить последние изменения или просто проверить непосредственно журнал и найти, где ошибка.