2016-08-02 24 views
0

Ich versuche, einen Node 6.0 Server zusammen mit mongo 3.2 auf openshift bereitzustellen. Ich habe es geschafft, eine App mit dem Knoten DIY Patrone zu schaffen, wie es hier: http://cartreflect-claytondev.rhcloud.com/reflect?github=connyay/openshift-node-diyOpen shift node + mongodb kann nicht gestartet werden

und auch auf eine Mongo DIY Patrone hinzufügen: https://raw.githubusercontent.com/icflorescu/openshift-cartridge-mongodb/master/metadata/manifest.yml

Außerdem habe ich hinzugefügt .Openshift \ action_hooks Dateien Dieser Aufruf npm als Teil des Build-Skript installieren.

Nun zu dem seltsamen Teil, nach dem Drücken von Änderungen und Abhängigkeit zu beenden Installation bekomme ich die normale Nachricht, die Bereitstellung war erfolgreich. Allerdings gibt mein Server beim Versuch, auf ihn zuzugreifen, 503 Fehler zurück. Ich habe versucht, rhc Schwanz rufen nach unten zu verfolgen, was während der Server-Boot falsch gelaufen ist, aber alles, was ich habe ist dieses Protokoll von mongodb:

2016-08-02T10:24:41.848-0400 I STORAGE [main] Engine custom option: cache_size=256M 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] MongoDB starting : pid=263740 port=27017 dbpath=/var/lib/openshift/57a0601f0c1e66334d000014/app-root/data/.mongodb/data 64-bit host=ex-std-node712.prod.rhcloud.com 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] db version v3.2.7 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] git version: 4249c1d2b5999ebbf1fdf3bc0e0e3b3ff5c0aaf2 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] allocator: tcmalloc 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] modules: none 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] build environment: 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten]  distarch: x86_64 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten]  target_arch: x86_64 
2016-08-02T10:24:41.858-0400 I CONTROL [initandlisten] options: { net: { bindIp: "127.7.166.130", unixDomainSocket: { enabled: false } }, storage: { dbPath: "/var/lib/openshift/57a0601f0c1e66334d000014/app-root/data/.mongodb/data", engine: "wiredTiger", wiredTiger: { engineConfig: { configString: "cache_size=256M" } } }, systemLog: { logAppend: true, logRotate: "reopen", quiet: true } } 
2016-08-02T10:24:41.920-0400 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),cache_size=256M 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] **  We suggest setting it to 'never' 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 350 processes, 1024 files. Number of processes should be at least 512 : 0.5 times number of files. 
2016-08-02T10:24:42.466-0400 I CONTROL [initandlisten] 
2016-08-02T10:24:42.473-0400 I FTDC  [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/openshift/57a0601f0c1e66334d000014/app-root/data/.mongodb/data/diagnostic.data' 
2016-08-02T10:24:42.515-0400 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 
2016-08-02T10:24:42.521-0400 I NETWORK [initandlisten] waiting for connections on port 27017 

dieses Fehlerprotokoll gefolgt (scheinbar durch den Knoten geworfen konnte aber nicht als gefunden werden Datei:

> [email protected] start /var/lib/openshift/57a0601f0c1e66334d000014/app-root/runtime/repo 
> NODE_ENV=development;DEBUG=*,-not_this,-morgan;node ./bin/www 

Port 8080 is already in use 

npm ERR! Linux 2.6.32-573.26.1.el6.x86_64 
npm ERR! argv "/var/lib/openshift/57a0601f0c1e66334d000014/node-diy/bin/node/bin/node" "/var/lib/openshift/57a0601f0c1e66334d000014/node-diy/bin/node/bin/npm" "start" 
npm ERR! node v5.11.1 
npm ERR! npm v3.8.6 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] start: `NODE_ENV=development;DEBUG=*,-not_this,-morgan;node ./bin/www` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] start script 'NODE_ENV=development;DEBUG=*,-not_this,-morgan;node ./bin/www'. 
npm ERR! Make sure you have the latest version of node.js and npm installed. 
npm ERR! If you do, this is most likely a problem with the MyApp-API package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  NODE_ENV=development;DEBUG=*,-not_this,-morgan;node ./bin/www 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs MyApp-API 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls MyApp-API 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /var/lib/openshift/57a0601f0c1e66334d000014/app-root/runtime/repo/npm-debug.log 

, was ich bin hier fehlt es nicht, hier eine wirkliche Fehlermeldung zu sein scheint es sagt nur, dass mein scripts.start Skript fehlschlägt, einige vorgeschlagen, es könnte etwas mit Umgebungsvariablen sein, aber ich bin nicht?. genau sicher, die in der Lage sein könnte, Dinge wie diese zu verkomplizieren

bearbeiten

i sollte auch erwähnen, dass ich mein www app Setup eingestellt haben die Openshift Variablen zu verwenden, wenn verfügbar:

var port = normalizePort(process.env.OPENSHIFT_NODEDIY_PORT || '3000'); 
app.set('port', port); 

var ip = process.env.OPENSHIFT_NODEDIY_IP || localhost; //'192.168.1.16' 
app.set('ip', ip); 

und der Mongo-Verbindung:

var mongodb_connection_string = 'mongodb://localhost/' + db_name; 
    //take advantage of openshift env vars when available: 
    if(process.env.MONGODB_URL){ 
     mongodb_connection_string = process.env.MONGODB_URL + db_name; 
    } 

Edit 2 Ich schließlich gefunden, die Protokolldatei, die den Knoten Fehler speichern ich bekam, scheint es, dass rhc Schwanz nicht die Ful zurückgegeben l staple aber nur die wenigen letzten Zeilen. Das gesamte Protokoll enthüllte tatsächlich weitere Details zu dem Problem (siehe oben bearbeiteter Fehler)

+0

Hört Ihr Knoten die richtige Adresse und den korrekten Port an? Openshift hat einige Umgebungsvariablen, die du verwenden sollst –

+0

@MicheleRicciardi sehe meine obige Bearbeitung, hast du das gemeint? wenn ja als ja –

+0

ja das sind die env-Variablen, über die ich gesprochen habe, nennen Sie auch 'app.listen' mit dem Port und IP? –

Antwort

0

So fand ich endlich heraus, was falsch war.

Es scheint, dass das Standard-Knoten-Projekt von meinem IDE erstellt (derzeit WebStorm) konfiguriert wurde, um einen Port zu hören, unabhängig von der ip, so mein www Skript dies hatte:

var port = normalizePort(process.env.OPENSHIFT_NODEDIY_PORT || '3000'); 
app.set('port', port); 

var ip = process.env.OPENSHIFT_NODEDIY_IP || localhost; 
app.set('ip', ip); 

/** 
* Create HTTP server. 
*/ 

var server = http.createServer(app); 

/** 
* Listen on provided port, on all network interfaces. 
*/ 

server.listen(port); 

so in der letzten Zeile Sie sehen, ich höre nur Port und ignorieren Sie die IP, die letzte Zeile zu

das Problem behoben.