Запустите Ghost в подкаталоге моего основного узла.приложения на JS

Я пытаюсь запустить Ghost в подкаталоге моего основного узла.проект js. В настоящее время он размещен на веб-сайтах azure.
Что-то вроде: http://randomurlforpost.azurewebsites.net/blog

я следовал инструкциям здесь : https://github.com/TryGhost/Ghost/wiki/Using-Ghost-as-an-NPM-module

С новым добавлением использования Ghost в качестве модуля npm мне все еще нужен Nginx или Apache?. На данный момент у меня работает мой основной сайт localhost: 3000 и экземпляр Ghost, работающий на localhost: 2368.

Я попытался сделать все виды изменений в части кода, указанной в инструкциях, однако мне это не удалось.

//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);
});

редактировать: я смог направить трафик с http-прокси однако он направляет его на localhost: 2368 / blog (которого не существует) любые идеи о том, как предотвратить это?

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' });
});

1 ответов


у меня была такая же проблема, и сначала я попытался использовать ProxyPass Apache для перенаправления /blog to port 2368 но нашли другие проблемы, делая это.

прежде чем пытаться мои предложения, вы должны отменить любые изменения, сделанные с помощью httpproxy.

что, кажется, сработало для меня, это размещение кода, который у вас есть в index.js прямо на ваш вместо того, что у вас уже есть там. Вам нужно будет добавить переменную ghost errors и переименовать parentApp на имя вашего приложения, я буду называть это yourAppName так что это ясно, но мой просто app. Так внутри app.js вы можете поместить:

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);
});

у вас, вероятно, уже есть ghost и express переменные, объявленные в приложение.js, поэтому вам не нужно будет добавлять эти строки.

блог теперь должен быть доступен по URL, указанному в config.js.