Einrichten einer Knoten-Anwendung auf OpenShift und ich kann nicht herausfinden, warum es nicht starten kann, alles, was es immer wieder kommt ist mit diesem Port 8080 wird verwendet.Starten der Knoten-Anwendung auf OpenShift
Ich habe dafür gesorgt, dass der Server sowohl den Port als auch die IP überwacht, die von den env-Variablen kommen.
Ich habe eine andere Anwendung, die funktioniert und der Code ist im Grunde das gleiche, ich habe auf beiden Gängen 'cat/etc/services | überprüft grep 8080 'und beide melden 2 Instanzen von Webcache.
#!/usr/bin/env node
"use strict";
/**
* Module dependencies.
*/
var app = require('../app'),
debug = require('debug')('landbou:server'),
http = require('http'),
fs = require('fs'),
models = require("../models");
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || process.env.NODE_PORT || '5000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
models.sequelize.sync().then(function() {
if (process.env.NODE_ENV === 'production') {
server.listen(port, process.env.NODE_IP);
} else {
server.listen(port);
}
server.on('error', onError)
.on('listening', onListening);
});
if (!fs.existsSync('www')) {
fs.mkdirSync('www');
}
if (!fs.existsSync('www/uploads')) {
fs.mkdirSync('www/uploads');
}
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;
debug('Listening on ' + bind);
}
Diejenigen, die Umgebungsvariablen Ausgabe von printenv sind. Ich kann jeden Port manuell fest codieren und es startet fehlerfrei, verbindet beide zu mongo und mysql, in dem Moment, in dem es auf Port 8080 läuft, stirbt es. – RemeJuan
Openshift unterstützt kein manuelles Port-Setup. 8080 in der Vorlage wird verwendet, wenn das Projekt auf dem lokalen Computer ausgeführt wird. Versuchen Sie es mit process.env.OPENSHIFT_NODEJS_PORT wie in der offiziellen Vorlage – wtrocki
process.env.NODE_PORT = process.env.OPENSHIFT_NODEJS_PORT = 8080. 8080 ist der Standard-Port von Openshift, deshalb müssen Sie auch die Adresse binden. – RemeJuan