Wie man nicht mit localhost, sondern die IP des Servers statt?

Fand ich diese Knoten-Anwendung auf dieses tutorial und wollte es benutzen, aber es ist konfiguriert als "localhost". Da die Anwendung ausgeführt wird, auf dem Amazon Linux EC2, es gibt keine desktop (lokalen) Zugriff auf (vielleicht gibt es software zu installieren, zu aktivieren, den desktop-Modus, aber ich habe nicht dass).

Ich würde gerne zum ausführen der Anwendung auf dem server, nicht auf localhost, sondern auf dem server Elastic IP-Adresse, die werde ich hinzufügen, um eine Gehostete Zone für meine domain chatxs.com.

Ich würde gerne die app hören für alle Anfragen, die in dieser IP, die wiederum, wird in den domain-Namen des DNS.

Hier der code, das tutorial kommt mit, das einzige, was ich geändert habe ist die .html-Dateien in den Ordner sichten (styling, Ausrichtung und text, keine änderungen im code der app, nur die html):

app.js

//This is the main file of our chat app. It initializes a new 
//express.js instance, requires the config and routes files
//and listens on a port. Start the application by running
//'node app.js' in your terminal

var express = require('express'),
    app = express();

//This is needed if the app is run on heroku:

var port = process.env.PORT || 8080;

//Initialize a new socket.io object. It is bound to 
//the express app, which allows them to coexist.

var io = require('socket.io').listen(app.listen(port));
//Require the configuration and the routes files, and pass
//the app and io as arguments to the returned functions.

require('./config')(app, io);
require('./routes')(app, io);

console.log('Your application is running on http://localhost:' + port);

config.js

//This file handles the configuration of the app.
//It is required by app.js

var express = require('express');

module.exports = function(app, io){

//Set .html as the default template extension
app.set('view engine', 'html');

//Initialize the ejs template engine
app.engine('html', require('ejs').renderFile);

//Tell express where it can find the templates
app.set('views', __dirname + '/views');

//Make the files in the public folder available to the world
app.use(express.static(__dirname + '/public'));

};

routes.js es war zu groß, um Sie zu formatieren hier.

Und schließlich

Paket.json

{
"name": "NodeChatSystem",
"version": "0.0.1",
"description": "Realtime chat system for Tutorialzine.com",
"main": "app.js",
"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
  "node",
  "chat",
  "system"
],
"author": "Nikolay Anastasov",
"license": "MIT",
"dependencies": {
  "ejs": "^1.0.0",
  "express": "^4.8.2",
  "gravatar": "~1.0.6",
  "socket.io": "^1.0.6"
  }
}

Oben ist im Grunde, was in dem tutorial .zip-Datei.

  • Nur stellen Sie Ihre Anwendung auf dem server zu 52.19.7.59 (d.h. setzen Sie den code auf diesem server, und führen Sie die Anwendung). Wenn Sie auf diese IP-Adresse + den port, den Sie angeben, Sie werden schlagen, die Anwendung.
  • Es sollte nur funktionieren, wenn Sie diese auf AWS. Wenn Sie nicht getan haben, stellen Sie sicher, dass Sie ermöglichen, den Zugang für eingehenden Datenverkehr am port in Frage, die in der AWS-Konsole.
  • vielen Dank für die schnelle Rückmeldung. Ich bin in Verlegenheit, diese Fragen, aber wie stellen Sie es bereit, ich bin verwirrt, mit diesen Sachen, aber ich will es wirklich läuft. Ich verstehen nur html css so weit 🙁
  • wenn Sie auf der Suche zum bereitstellen und ausführen node.js auf einer EC2-server, dieser link adndevblog.typepad.com/cloud_and_mobile/2014/12/... sollte dir helfen. Zusammen mit der Antwort von MattHouser Sie sollten in der Lage zu führen Sie die nodejs-app
  • Ich tatsächlich verwendet das tutorial zum einrichten des Servers, alles, was ich Tat danach ist, einfach zu Bearbeiten, tutorial html und laden Sie Sie hoch. Dann lief ich "npm install" und sobald es gemacht wurde "Knoten app.js"
  • Hast du ändern in app.js die Zeile var io = require('socket.io").listen(app.listen(port)); zu var io = require('socket.io").listen(app.listen(port, "0.0.0.0")); und führen Sie dann den Knoten
  • yup, das ist die einzige Zeile die ich geändert habe (+ html-Code) und es lief, produziert Fehler wie in meinem Kommentar zu Matt
  • Vielleicht hilft: serverfault.com/questions/355382/...
  • Hier ist eine große Gesamt-tutorial zum einrichten eines node.js web-server auf EC2: youtube.com/watch?v=WxhFq64FQzA
  • ok, ich bin immer irgendwo, änderte ich die ip verwendet, um den Privaten Server IP und ich habe geladen bis es auf port 8080, aber immer wenn ich es ändern zu 80 es gibt noch Fehler. Es ist möglich, auf die es hier 52.19.7.59:8080, aber keine styles oder Funktionalität funktioniert
  • Auf port 80, wird die Fehlermeldung EACCESS? Wenn dem so ist, das ist, weil Sie das nicht Ihrem server als root an. Das video oben bietet Möglichkeiten, was zu tun.
  • Da Sie nicht zeigen Sie Ihre Routen code, es gibt nicht viel können wir tun, um zu helfen, warum stylesheets und anderen Ressourcen nicht laden. Ich vermute, dass entweder die Dateien nicht in das richtige sub-Verzeichnis auf Ihrem server oder die Routen sind nicht korrekt deklariert. Ich würde vorschlagen, nicht mit "../somefile", die als Pfade. Verwenden Sie einfach "/somefile" oder "/somepath/somefile", und verwalten Sie Ihre Routen dementsprechend. Sie wirklich nicht wollen, stylesheet Pfade zu verlassen, auf dem Pfad der Seite, Sie sind in. Sie wollen, dass Sie absolut auf Ihrem server.
  • damnit, ich wusste es war irgendwas mit sudo in der Rückseite von meinem Kopf. sudo löst die meisten von dem Zeug, danke für den Tipp! nun, ich habe, um herauszufinden, wie man den Stil und die Funktionalität geht :/
  • okay ich werde schauen Sie sich um und verknüpfen, vielen Dank für die Hilfe 🙂
  • OK, wusste ich nicht, dass die express.static() Linien sind bereits in Ihrer Frage auf config.js. Wenn diese nicht funktionieren, dann ist etwas nicht-übereinstimmung zwischen dem tatsächlichen Speicherort der statischen Dateien in Ihrem Datei-system (relativ zu Ihrem app-Verzeichnis) und die Wege, die Sie in den HTML-Code. Ich vermute, das ist ein Thema, wo man sagt express.static() Blick in die __dirname/public Verzeichnis, aber dann sind Sie Anfrage /public/somefile was bedeutet express.static ist auf der Suche nach __dirname/public/public/somefile.
  • Aber, die express.static() Zeug regelmäßig verwirrt mich und manchmal bekomme ich nur unconfused tatsächlich ein Schritt durch eine VORGEGEBENE Anforderung, um zu sehen, was es tatsächlich ist zu suchen, zu verstehen, was es denkt, ich habe gesagt, es zu tun. In jedem Fall, haben Sie wahrscheinlich eine Pfad-mismatch zwischen dem Pfad in den HTML-Code, wie Sie konfiguriert haben express.static() und wo Sie die Dateien in Ihre server.

Schreibe einen Kommentar