Запустить Ghost blog как подпапку сайта на узле http-сервера

Во-первых, прости мое непонимание экземпляра Joyent's smartmachine. Для этого сценария я запускаю бесплатный экземпляр NodeJS для smart-машины уровня разработчика.

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

Это возможно? Как бы я это сделал?

3 ответа

Решение

Настройка тонкой обертки с использованием Express может быть хорошим решением (как рекомендует Пол), но может привести к путанице, если вы закончите с большим приложением с большим количеством "разных сервисов".

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

При таком решении в случае сбоя службы остальные нет, так как они разъединены.

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

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

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

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

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

Предполагая, что вы выполнили "Установить из zip (самый быстрый и лучший для блоггеров)" с https://github.com/tryghost/Ghost и вы обслуживаете статический контент с / public / с http-сервера.

Мое решение состоит в том, чтобы использовать сервер Ghost Express для обслуживания вашего контента:

Скачайте Ghost.zip и распакуйте в [path]/server/

Откройте файл config.js вашего Ghost и измените URL в процессе разработки с http://localhost:2368/ на http://localhost:2368/blog/

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

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

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

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

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

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

Другие вопросы по тегам