Использование Raspberry Pi 4 для размещения реагирующего веб-приложения

У меня есть несколько общих вопросов о том, как настроить мое веб-приложение на Raspberry Pi.

Я создал приложение React на своем локальном ПК, оно использует API узла/экспресса, который я собрал, что, в свою очередь, выполняет базовый CRUD в моей базе данных MYSQL. Я хотел бы сделать все это доступным из любой точки Интернета с помощью Raspberry Pi. Мне удалось перенести и API, и БД на Raspberry Pi, и он работает правильно. Я не думаю, что внешний интерфейс React будет проблемой, но у меня в голове остаются следующие вопросы:

  • Какова общая архитектура для чего-то подобного?

  • Как мне открыть внешний интерфейс, чтобы он был доступен через Интернет?

  • Будет ли достаточно их всех на одной машине, чтобы они могли общаться друг с другом, когда она работает?

  • Понадобится ли мне другое приложение node для обслуживания фактического веб-сайта? (уже использую одно для API)

  • Каковы большие риски безопасности с чем-то вроде этого? Мне кажется, что размещать что-то из моей домашней сети и делать это доступным по всему миру может быть опасно. Чего мне следует остерегаться?

Это немного больше, чем это, но вы захотите включить переадресацию портов на своем маршрутизаторе и получить статический IP-адрес. Я настоятельно рекомендую этот видео. Кроме того, самым вежливым образом этот вопрос можно было бы немного улучшить, поскольку вы должны предоставить нам минимальный воспроизводимый код. Лучшие вопросы имеют конкретные ответы. Есть все это. Хорошая работа, чтобы зайти так далеко с технологическим стеком!

geekTechnique 12.05.2022 18:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Моей первой рекомендацией будет Докер, но я понимаю, если вам просто нужен сервер. Я думаю, что в этом случае лучше всего использовать что-то вроде Next.js, чтобы объединить приложение API и приложение React и получить рендеринг на стороне сервера в качестве бонуса (так что вам даже не обязательно нужен API; вы можете вызвать серверные функции в вашем приложении с помощью getServerSideProps). Затем вы можете использовать Nginx в качестве обратного прокси-сервера для доступа к серверу Next.js. См. здесь, чтобы узнать, как настроить Nginx на Raspberry Pi, и здесь, чтобы узнать, как настроить его для Next.js.

Если вы не хотите использовать Next.js (уже создали приложение или по другим причинам), стоит отметить, что create-react-app или что-то еще, что вы используете, вероятно, генерирует статические файлы для обслуживания, и в этом случае вы можете просто настроить Nginx, а затем скопируйте папку сборки в статическую папку Nginx (см. здесь). Если вы предоставляете доступ только к внешнему интерфейсу, вам не нужно ничего делать для предоставления доступа к экспресс-серверу, но если вы хотите открыть экспресс-сервер, вы можете узнать больше об этом здесь (используя экспресс вместо HTTP). ).

Если вы полностью настроены на использование Raspberry Pi, то все в порядке. Если вы решите использовать Next.js или даже просто React, вы также можете разместить свой сайт на Версель или Нетлайф. Вы можете использовать их бессерверные функции в качестве конечных точек API для своего приложения (устанавливается автоматически с помощью Next.js, в противном случае читайте здесь для Vercel и здесь для Netlify).

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