В этом уроке я покажу вам, как настроить Raspberry Pi 4 в качестве сервера разработки (или тестирования). Вы можете использовать это как место, чтобы протолкнуть ваш код и проверить его в веб-браузере. Для демонстрации я буду использовать приложение React, но с помощью нескольких модификаций вы сможете с его помощью собрать практически все.
Для этого проекта я использую Canakit Raspberry Pi 4 Complete Kit . Это дает вам все необходимое для работы, включая чехол, блок питания и SD-карту.
Зачем беспокоиться?
Надежная среда разработки важна. Вам нужно место, где вы можете посмотреть на свое приложение, чтобы убедиться, что оно работает нормально. Много раз люди делают это на своей локальной машине. Лучше тестировать на отдельной машине, чем вы работаете. Таким образом, вы можете поймать такие вещи, как зависимости и изменения конфигурации.
Этот сервер разработки / тестирования имеет следующие преимущества:
- Конфигурация и среда, которая соответствует производственной (если у вас есть хост Linux)
- Создайте код на любом компьютере и отправьте его в централизованное место
- Непрерывная интеграция — нажмите и обновите в своем браузере
В идеале вы можете настроить рабочий процесс, который выглядит следующим образом:
- Разработайте свой код локально и передайте его.
- Нажимайте на разработку и тестируйте ее
- Утвердить изменения, запустить
Это обеспечивает отличный рабочий процесс, в котором вы можете вносить изменения и редактировать, фиксировать, затем нажимать их и обновлять свой браузер. Затем вы можете разработать свой код с любой машины в сети, в которой есть git. Как только вы будете удовлетворены изменениями, вы можете скопировать артефакты в производство. Фактически, вы можете интегрировать производственные процессы в этот рабочий процесс, чтобы сделать все это автоматически.
Настройка Pi в качестве сервера
Для этого проекта я использую полный набор Canakit Raspberry Pi . Он поставляется со всем, что вам нужно. Я не буду настраивать это в этой статье, но должен отметить, что я использую образ сервера Ubuntu для этого проекта и рекомендую вам сделать то же самое.
Я использовал свой Pinebook Pro для записи изображения на карту, но вы можете сделать это в Windows или на Mac, если вам нужно.
Вот хорошее руководство по настройке одного из этих наборов.
Мы настроим это как сервер разработки / тестирования и будем использовать GIT для связи с ним. Итак, вот что мы будем делать:
- Настройте Git для публикации
- Установить Nginx
- Установить NPM
- Создайте развертывание из репозитория на своем компьютере на веб-сервере Raspberry Pi за один шаг.
Когда мы закончим, мы можем изменить наше приложение React и отправить изменения в Pi, чтобы просмотреть их как веб-страницу.
1. Настройте Git для публикации
Для начала нам нужно установить Git.
sudo apt install git
Теперь нам нужно добавить git shell в / etc / shells
which git-shell
и мы добавим этот вывод в / etc / shells
Теперь мы хотим настроить пользователя git, у которого нет классных разрешений, которые есть у вашей учетной записи.
sudo adduser --disabled-password git
Переключиться на пользователя git
sudo su git
перейти на дом пользователей git
cd ~
создайте каталог для файлов ssh:
mkdir ~/.ssh && chmod 700 ~/.ssh
Затем мы создадим наш файл author_keys
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
Теперь вы можете добавить открытые ключи любой машины, к которой вы хотите получить доступ к серверу, добавив их в:
/home/git/.ssh/authorized_keys
Тогда мы установим оболочку пользователей git на git-shell
sudo chsh git -s $(which git-shell)
Создайте папку для наших файлов www, которые мы будем обслуживать позже:
mkdir ~/www
2. Создайте нашу папку проекта
Это удаленный репозиторий, настроенный таким образом, что мы можем работать над проектом на любой другой машине, а затем отправить его на Raspberry Pi.
cd ~
mkdir /home/git/react-hello-world.git
Теперь давайте начнем:
cd react-hello-world.git && git init --bare
Давайте вернемся к нашей машине и протестируем ее.
На компьютере разработчика введите:
git clone git@[your IP address]:react-hello-world .
Вы должны быть в состоянии клонировать его на свой локальный компьютер.
Если это сработает, мы вернемся к Raspberry Pi.
3. Установите Nginx
Расположение: на Raspberry Pi
Далее мы установим Nginx на наш Raspberry pi и используем его для обслуживания веб-страниц.
В этом уроке мы настроим его для одного проекта, поэтому будем использовать один каталог www. Однако, если у вас есть несколько проектов, вы хотите разбить их на папки.
sudo apt install nginx
Это установит Nginx.
Вам может понадобиться добавить исключение брандмауэра в UFW. Вы можете получить список доступных профилей, набрав:
sudo ufw app list
Вы можете добавить исключение с помощью:
sudo ufw allow 'Nginx HTTP'
Теперь, когда вы откроете IP-адрес в веб-браузере, вы увидите страницу приветствия Nginx.
Теперь у вас есть сервер Nginx, запущенный и работающий.
4. Настройте Nginx
Расположение: на Raspberry Pi
Далее мы изменим конфиг Nginx.
Сделайте копию конфигурации по умолчанию в вашей домашней папке в качестве резервной копии:
sudo cp /etc/Nginx/sites-available/default ~
Отредактируйте файл conf и добавьте в папку www, которую мы создали ранее.
sudo vim /etc/Nginx/sites-available/default
Найдите «root» и измените значение по умолчанию на нашу папку www:
Затем сохраните файл и перезагрузите Nginx.
sudo systemctl reload Nginx
Теперь вы обслуживаете файлы из папки www вместо git. Здесь мы публикуем файлы после фиксации.
Давайте вернемся к нашей машине разработчика.
5. Настройте наш реактивный проект
Расположение: на вашем компьютере разработчика
Мы создадим проект React и развернем его на нашем Pi. Итак, давайте настроим это.
Сначала мы удалим репо, который мы клонировали ранее.
rm -rf react-hello-world/
И мы будем использовать React CLI для создания приложения с таким же именем.
npx create-react-app react-hello-world
Теперь мы создали базовый проект React. Затем инициализируйте его как репозиторий git.
git init
Мы добавим наши существующие файлы и зафиксируем их.
git add .
git commit -m "Our first commit"
Мы установим пульт на наш Raspberry Pi. Мы установили это, поэтому, когда мы передадим его на удаленный компьютер, файлы перейдут на наш Raspberry Pi.
git remote add origin git@[Your IP Address]:
react-hello-world.git
И мы подтолкнем его к Raspberry Pi:
git push --set-upstream origin master
Если вы зайдете в Pi, вы увидите репозиторий в вашей папке activ-hello-world.git:
Теперь, когда у нас есть эта настройка, мы должны настроить Pi для создания вашего приложения React.
6. Настройте сервер для сборки
Расположение: на Raspberry Pi
У нас настроен удаленный репозиторий git и установлен Nginx, но нам нужно связать все это вместе. Нам нужно построить наше приложение.
Теперь нам нужно установить Node и NPM на Raspberry Pi, чтобы начать.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
Вы можете проверить, что они установлены, введя:
node --version
npm --version
Теперь у нас есть узел и работает.
7. Настройка Реакция на сборку
Расположение: на Raspberry Pi
Давайте создадим наше приложение React на Raspberry Pi, просто чтобы протестировать его.
Проверьте репо на месте:
cd ~ && git clone react-hello-world.git/ test
Затем мы установим активные и реактивные скрипты (-g делает их глобальными)
npm install react -g
npm install react-scripts -g
Если мы бежим:
npm run-scripts build
Мы можем видеть это построено правильно.
Как только мы узнаем, что можем создать приложение React вручную, мы можем его автоматизировать.
8. Связывая все вместе
Расположение: на Raspberry Pi
Теперь нам нужно скопировать эти файлы в нашу папку www. Мы хотим делать это автоматически каждый раз, когда отправляемся в git-репо.
Убедитесь, что вы находитесь в своей удаленной папке git на Raspberry Pi (для меня это /home/git/react-hello-world.git/)
И создайте новый файл:
vim hooks/post-receive
Добавьте это в файл:
Простой текст
1
#!/bin/bash
2
unset GIT_INDEX_FILE
3
echo "Publishing our React App"
4
git --work-tree /home/git/build --git-dir=/home/git/react-hello-world.git checkout -f
5
cd /home/git/build
6
npm run-script build
7
cp -r /home/git/build/build/* /home/git/www
Используйте для этого собственные имена папок. Я создал папку / home / git / build, и его задача — хранить исходные файлы и создавать их.
Этот файл создает ловушку пост-получения в git, поэтому после нажатия на удаленный доступ эти действия будут выполнены.
- Проверяет репо в папку сборки
- Запускает скрипт сборки
- копирует артефакты в нашу папку www.
Есть несколько разных способов сделать это, но это простой способ собрать и поместить приложение в папку www.
Вы можете создать приложение локально и просто зафиксировать / выдвинуть артефакты. Я строю его на «сервере» (наша Raspberry Pi). Это лучший способ сделать это, потому что вы можете сопоставить Raspberry Pi с вашим рабочим сервером и только переместить исходный код для автоматической сборки. Вам не нужно беспокоиться об изменении конфигурации на компьютере разработчика, которого не будет на рабочем компьютере. Это обеспечивает некоторую последовательность.
Вы также можете запустить тесты здесь, если хотите.
Как только вы закончите добавлять эти изменения, пометьте файл как исполняемый.
chmod +x hooks/post-receive
9. Тестирование вашей интеграции
Расположение: ваш местный компьютер и Raspberry Pi
Теперь пришло время проверить все это. В вашем приложении React откройте App.js и внесите какие-то изменения.
Добавьте это и передайте это.
Простой текст
xxxxxxxxxx
1
git add .
2
git commit "small change"
3
git push origin master
Вы увидите вывод с вашего пульта:
Теперь вы готовы проверить это в веб-браузере!
Вот чего мы ждали!
Там мой сайт React во всей красе.
Теперь я могу обновить это приложение:
- Вносить изменения
- совершение
- Толкать к мастеру
Все в считанные секунды, я вижу результаты своих изменений. Легко и просто. Вы можете легко расширить это, поэтому отправьте сюда, сделайте выборочную проверку, а затем отправьте на промежуточный или производственный сервер. Возможности безграничны.
10. Начните разработку!
I created this tutorial with a React app as an example, but it could just as easily be Angular, Vue, Golang, Python, PHP, or whatever. The concepts are the same. I hope this will speed up your workflow and give you a nice place to spot check and test your application before pushing it live.
It’s not exactly an enterprise solution, but it’s a cheap alternative to an actual server.
Here’s how I have it set up:
I used my Pinebook Pro as a development machine for this article. What you’re looking at here is a fully capable development setup for ~$300. I could easily develop tons of apps and push them to production with this setup. Thanks to ARM processors and the tireless work of innovators such as the Raspberry Pi Foundation and the Pine64 Project.