Деплой React + Express (Клиент + Сервер) на хостинг/облако

У меня приложение, две папки client (React) и server (Express), локально запускаю всё через терминал (сервер npm run dev, клиент npm client), всё работает как задумывалось. Попробовал залить всё это дело на облачный сервер, через ssh подключился и также в двух терминалах запустил, всё работает. Возник вопрос, как мне всё это дело задеплоить так, чтобы мне не приходилось постоянно в терминале в ручную запускать клиент + сервер через npm.


Ответы (1 шт):

Автор решения: Anatoly

Можно использоваьть 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

→ Ссылка