как развернуть приложение nodejs api и vuejs на одном сервере - PullRequest
0 голосов
/ 17 сентября 2018

Я разработал веб-приложения nit rest api и vuejs, я пытаюсь развернуть оба проекта на одном сервере aws, на котором работает ubuntu.Оба приложения имеют разные порты, домен, я пытаюсь настроить api.example.com для api и example.com для приложения vue.Я могу запустить оба приложения один раз после запуска команды в SSH, но они нужны мне, чтобы они выполнялись вечно.То, что я сделал,

  1. Развертывание в приложения отдельно
  2. Приложения могут получать доступ через порты

Мне нужен доступ к ним

  1. api.example.com
  2. example.com

что нужно сделать, любые изменения файла хоста.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я нашел другой способ развернуть приложение vue и express / nodejs на одном сервере без использования PM.Это то, что я сделал

  1. Создайте свой код Vue, используя команду npm run build.Это создаст папку dist, в которой должны быть файл index.html и папка static.
  2. Скопируйте папку dist в хранилище кода вашего сервера.В моем случае я создал папку public и переместил папку dist в public.
  3. В app.js файле прямо перед строкой module.exports=app, скопируйте следующие строки кода

    //These 2 lines make sure that vue and express app are coming from the same server. app.use('/static', express.static(path.join(__dirname,"../public/dist/static/"))); app.get('/', function(req,res) { res.sendFile('index.html', { root: path.join(__dirname, '../public/dist/') }); });

Первая строка: убедитесь, что папка /static доступна, а вторая строка будет содержать файл index.html при запуске сервера узла.Маршрутизация между компонентами будет заботиться vue.

0 голосов
/ 17 сентября 2018

Вот так мы запускаем наш интерфейс VueJS UI и ExpressJS REST API с одного и того же сервера.

Мы управляем нашими услугами с PM2 .

VueJS (среда разработки, вы можете добавить те же настройки в производство)

В package.json добавить "start": "HOST='0.0.0.0' PORT=80 npm run dev",, где 80 - это порт, который VueJS прослушивает, в массив "scripts": {..}.Затем, после установки PM2, (для dev) мы можем запустить VueJS с cd /location/of/vue/root; sudo pm2 start npm run dev --name Vue -- start.(Убедитесь, что Apache не работает).

Обратите внимание, что установка HOST на 0.0.0.0 важна.Не устанавливайте для него значение LocalHost или IP-адрес сервера, иначе вы можете столкнуться с проблемами.

ExpressJS

В поле /location/of/express/app.js добавьте это аналогично нижней частиfile: app.listen(process.env.PORT || 8081), где 8081 - это порт, который должен прослушивать REST API.Затем я могу запустить его с sudo pm2 start /location/of/express/app.js --name Express

. На этом этапе VueJS должен быть доступен на www.example.com (подразумевается порт 80), а REST API будет доступен на www.example.com:8081..

Если вы хотите, чтобы api.example.com/ указывал на API, вам нужно убедиться, что ваш DNS указывает субдомен «api» на нужный порт, или вам, возможно, придется добавитьпорт в URL, как указано выше.

Кроме того, вы можете легко следить за журналами через PM2, а также pm2 logs APPNAME --lines 100.

...