Деплой React + Express (Клиент + Сервер) на хостинг/облако
У меня приложение, две папки client (React) и server (Express), локально запускаю всё через терминал (сервер npm run dev, клиент npm client), всё работает как задумывалось. Попробовал залить всё это дело на облачный сервер, через ssh подключился и также в двух терминалах запустил, всё работает. Возник вопрос, как мне всё это дело задеплоить так, чтобы мне не приходилось постоянно в терминале в ручную запускать клиент + сервер через npm.
Ответы (1 шт):
Можно использоваьть pm2, подходит для многих задач.
Для установки на Windows: npm install -g pm2,
на Unix-подобных системах: sudo npm install -g pm2.
С помощью команды pm2 init simple или вручную создается конфигурационный файл ecosystem.config.js, где задаются настройки и указываются пути к серверу и клиенту:
module.exports = {
apps: [
{
name: "server",
script: "./server/index.js", // путь к файлу с серверным кодом
watch: true, // автоматический перезапуск при изменениях файлов
env: {
NODE_ENV: "production",
},
},
{
name: "client",
script: "npm",
args: "run client", // команда для запуска клиентской части (npm run client)
cwd: "./client", // путь к папке с клиентским кодом
watch: true, // автоматический перезапуск при изменениях файлов
env: {
NODE_ENV: "production",
},
},
],
};
Далее, в package.json, назначается команда для запуска приложения с помощью pm2: "start": "pm2 start ecosystem.config.js". После этого, вводя npm start, pm2 будет запускать приложение с заданными параметрами.
Документация по pm2