2015-01-23 6 views
6

Ich versuche, Ghost auf ein Unterverzeichnis meiner Haupt-Node.js-Projekt auszuführen. Es ist derzeit in azurblauen Websites gehostet.
Etwas wie: http://randomurlforpost.azurewebsites.net/blogFühren Ghost in einem Unterverzeichnis meiner Haupt-Node.js-Anwendung

ich die Anleitung hier gefolgt: https://github.com/TryGhost/Ghost/wiki/Using-Ghost-as-an-NPM-module

Mit dem neuen Zusatz von Ghost als npm Modul brauche ich Nginx oder Apache noch ?. Ab sofort habe ich meine Hauptseite auf localhost: 3000 und die Ghost-Instanz läuft auf localhost: 2368.

Ich habe versucht, alle Arten von Änderungen an dem Teil des Codes, der auf den Anweisungen angegeben, aber ich habe es nicht gelungen.

//app.js, is there a specific place to put this? 
 

 
var ghost = require('ghost'); 
 
ghost().then(function (ghostServer) { 
 
    ghostServer.start(); 
 
}); 
 

 
//config.js 
 
    development: { 
 
     url: 'http://localhost:3000/blog', 
 
     database: { 
 
      client: 'sqlite3', 
 
      connection: { 
 
      filename: path.join(__dirname, '/content/data/ghostdev.db') 
 
      }, 
 
      debug: false 
 
     }, 
 
     server: { 
 
      host: '127.0.0.1', 
 
      port: '2368' 
 
     }, 
 
     paths: { 
 
      contentPath: path.join(__dirname, '/content/'), 
 
     } 
 
    }, 
 
//index.js 
 
ghost().then(function (ghostServer) { 
 

 
    parentApp.use(ghostServer.config.paths.subdir,ghostServer.rootApp); 
 

 
    // Let ghost handle starting our server instance. 
 
    ghostServer.start(parentApp); 
 
}).catch(function (err) { 
 
    errors.logErrorAndExit(err, err.context, err.help); 
 
});

EDIT: Ich war in der Lage zu routen Verkehr mit http-Proxy aber es wird das Routing auf localhost: 2368/Blog (was nicht existiert) alle Ideen auf, Wie kann man das verhindern?

var httpProxy = require('http-proxy'); 
 
var blogProxy = httpProxy.createProxyServer(); 
 
var ghost  = require('ghost'); 
 
var path  = require('path'); 
 

 
// Route /blog* to Ghost 
 
router.get("/blog*", function(req, res, next){ 
 
    blogProxy.ws(req, res, { target: 'http://localhost:2368' }); 
 
});

Antwort

2

Ich habe versucht, das gleiche Problem und ein erstes Apache Proxypass mit /blog-port 2368 umleiten fand aber andere Probleme dies zu tun.

Bevor Sie meine Vorschläge ausprobieren, sollten Sie alle Änderungen rückgängig machen, die mit httpproxy vorgenommen wurden.

Was für mich funktioniert hat, ist, den Code, den Sie in index.js haben, direkt in Ihre app.js Datei zu platzieren, anstatt, was Sie bereits dort haben. Sie müssen die Geisterfehlervariable hinzufügen und parentApp in den Namen Ihrer App umbenennen, ich werde dies yourAppName nennen, damit es klar ist, aber meins ist nur app. So innen app.js können Sie setzen:

var yourAppName = express(); 
 
var ghost = require('ghost'); 
 
var ghosterrors = require('ghost/core/server/errors') 
 

 
ghost().then(function(ghostServer) { 
 
    yourAppName.use(ghostServer.config.paths.subdir, ghostServer.rootApp); 
 

 
    ghostServer.start(yourAppName); 
 
}).catch(function(err) { 
 
    errors.logErrorAndExit(err, err.context, err.help); 
 
});

Sie haben wahrscheinlich bereits die ghost und express Variablen in app.js deklariert, so dass Sie diese Zeilen nicht hinzufügen müssen.

Der Blog sollte nun unter der in config.js angegebenen URL verfügbar sein.