Запустите 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.