2014-12-16 2 views
8

Во-первых, простите, что я не понял пример смартмании Joyent. Для этого сценария я запускаю бесплатный экземпляр smartmachine для уровня dev для NodeJS.Запустите блог Ghost как подпапку веб-сайта, запущенного на узле http-server

Я бегу вебсайт на [path]/server/public/ в файловой системе через http-server и я хочу, чтобы одновременно запустить Ghost блог на [path]/server/public/blog/, как на порту возможно 80.

ли это? Как я могу это сделать?

ответ

7

Настройка тонкую оболочку с помощью экспресс может быть хорошим решением (как Павел рекомендует), но может быть беспорядок, если вы закончите с большим приложением с множеством «diferennt services».

Вместо этого используйте вместо прокси-сервера (например, NGINX) все мои сервисы.

С помощью этого решения, если служба не работает, остальное нет, поскольку они развязаны.

Вы можете прослушивать порт 80 и прокси-сервер внутри каждой службы: порт.

Что-то вроде:

0.0.0.0:80 ---> Proxy 
        └──path:/ ─── localhost:3000 (Main Web) 
        └──path: /blog ─── localhost:4000 (Ghost) 
        ... 
3

Если ваш другой сайт является express сайтом, проще всего включить ваше приложение-призрак в том же исходном дереве (возможно, в подпапке). Экспресс-приложения могут быть установлены в качестве промежуточного слоя для других приложений экспресс, так что вы могли бы добавить маршрут на ваш основной сайт, как:

var ghost = require('./path/to/ghost'); 
app.use('/blog', ghost); 
+0

Экспресс - это то, что я могу изучить, но он кажется более сложным, чем http-server. Можете ли вы предложить решение моего вопроса как есть? – jsejcksn

+0

Как передать переменную окружения Node с помощью промежуточного программного обеспечения? Например: 'NODE_ENV = производственный узел index.js;' – jsejcksn

+0

Вы можете прочитать их из process.env.NODE_ENV (или независимо от переменной) и можете установить их одинаково. – Paul

2

Предполагая, что вы следовали «Установка из Zip (быстрый & лучше для блоггеров)» от https://github.com/tryghost/Ghost и вы служите статического контента из/общественности/с HTTP-сервером.

Мое решение использовать сервер Express, привидения служить ваше содержание:

Скачать Ghost.zip и распаковать в [path]/server/

Откройте файл config.js Призрачный и изменить URL в развитии от http://localhost:2368 к http://localhost:2368/blog/

Теперь откройте открыть index.js файл в том же каталоге и добавьте следующие строки:

parentApp.use(express.static(__dirname + '/public'));

после: parentApp = express();

где '/ общественность' это каталог, содержащий статический контент.

Теперь, если вы идете: http://localhost:2368 вы найдете ваш сайт и ваш блог будет http://localhost:2368/blog/

Для изменения производства, необходимо внести соответствующие изменения и начать с NODE_ENV=production npm start. Чтобы перейти на порт 80, вам нужно будет только изменить порт внутри config.js, и это будет обслуживать как ваш сайт, так и блог на 80. Это, очевидно, даст вам проблему с недостаточным разрешением, и есть тонна учебников, которые показывают, как настроить Node.js на порту 80, так что следуйте этому.

+0

Спасибо за предложение использовать Express, но, как я прокомментировал Павлу, я ищу прямой ответ на мой вопрос. Я спрашиваю, можно ли использовать «http-server» и одновременно запускать блог Ghost. И если да, то как? – jsejcksn

+0

Можете ли вы запустить два двоичных файла на одном и том же порту? Конечно нет. Ghost уже использует Express, так что одно дополнение к строке также будет служить вашему контенту. Экспресс, очевидно, более мощный и сложный. Во всяком случае, если вы не хотите использовать Express и хотите делать то, что делает http-сервер, вы можете добавить следующее в index.js Ghost http://stackoverflow.com/questions/7268033/basic-static-file-server кол-nodejs. –