Реагировать на AWS EC2? - PullRequest
1 голос
/ 08 марта 2020

Я не могу поверить, насколько это тривиально, но я не могу найти примеров, когда это не является частью большой сборки, которая только добавляет дополнительную сложность.

Я собираю smalli sh веб-сайт и пока я на нем, также нашел время, чтобы поиграть с некоторыми AWS сервисами.

У меня есть интерфейс React без бэкэнда, и я ' Я запускаю его на экземпляре EC2. Прежде чем все начнут сходить с ума, говоря, что это то, что мне нужно, это излишне, я знаю, что могу использовать Amplify или S3 , но, как я уже сказал, у меня есть игра с чем-то более сложным, поскольку проект будет расти далее.


Что я хочу сделать ...

Запустить мой React-интерфейс на EC2 с некоторым управлением пакетами ( например, навсегда или PM2 и т. д. c), чтобы он работал, когда я закрываю свой терминал.


Где я нахожусь ...

На мой понимая, мне нужно установить Node, чтобы обслуживать мой интерфейс React (... но я не думаю, что это правильно?).

Итак, я:

  • Установленный узел & NPM
  • Клонирован мой репозиторий
  • Установлены входные зависимости
  • Создана производственная сборка с npm run build
  • Загрузился интерфейс с npm start
  • Наблюдал, как мой великолепный сайт заполняет мой браузер: эмоциональный:

Моя проблема ...

Даже ты h это работает, я не думаю, что это правильно, и у меня есть проблема.

1) Я создаю папку сборки для обслуживания файлов stati c, но все равно запускаю npm start, который является разработчиком build <- ??? </p>

2) Когда я пытаюсь добавить Forever или PM2, он больше не работает, так как на сайте невозможно достичь


  • Так что я делаю не так?

  • Нужно ли даже, чтобы Node запускал только интерфейс?

  • Где должна находиться папка React build go?

  • Как мне обслуживать файлы?

  • Как мне обеспечить его работу?


Как я уже сказал, это кажется таким тривиальным, но примеры, которые я нахожу, также подключают базу данных, загружают вещи и подключают другие вещи, которые мне сейчас не нужны, и документация на них не распространяется.

Извиняюсь за все вопросы, но это спасает возвращение в комментариях.

Спасибо всем:)

Ответы [ 2 ]

1 голос
/ 08 марта 2020

С использованием интерфейса * stati c Я полагаю, что вы можете использовать узел, я бы, вероятно, не решил использовать узел для сайта c.

Другой вариант - установить веб-сервер на ваш экземпляр EC2, например NGINX или Apache. Быстрый поиск в Google даст вам много помощи здесь - что-то вроде "nginx stati c website ".

Поскольку вы не используете приложение для узла, PM2 не действительно имеет смысл. Если у вас когда-либо запущен серверный узел, вы можете настроить NGINX в качестве HTTP-прокси для вашего приложения узла .

0 голосов
/ 09 марта 2020

Хорошо! После небольшого поворота я сумел сделать то, что хотел.

По сути, я сделал следующее:

1) Создал файл Node для обслуживания файлов stati c из папки build React

2) Установленный узел & Навсегда на EC2

3) клонировал мое репо

4) запустите файл моего Node-сервера с forever


Вот как ...

  • Создайте файл Node-сервера в root вашего проекта React для обслуживания внешнего интерфейса ( Я назвал его сервером. js)
const express = require('express');
const path = require('path');
const app = express();
const port = 3000;

app.use(express.static(path.join(__dirname, 'build')));

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen(port, () => console.log(`Running on port ${port}`));
  • Раскрутите экземпляр Ubuntu EC2 по умолчанию с группами безопасности для:

    • S SH - порт 20
    • HTTP - порт 80
    • HTTPS - порт 443
    • Пользовательский - порт 3000
  • S SH в экземпляре

  • Установить узел. Это шаги, которые я использовал со страниц AWS ' здесь

    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    • . ~/.nvm/nvm.sh
    • nvm install node
    • node -e "console.log('Running Node.js ' + process.version)"
  • Установка навсегда

    • npm install -g forever
  • Клонировать репо

    • git clone my-repo.git
  • Перейти во вновь созданный каталог

    • cd my-new-directory
  • Установить зависимости проекта

    • npm i
  • Создание рабочей версии проекта React

    • npm run build
  • Запустите файл сервера Node, который мы создали ранее

    • forever start server.js

Теперь ваш сайт должен быть запущен, а Node обслуживает готовую сборку из папки build React =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...