Як створити власний dev-сервер Python за допомогою Raspberry Pi

Якщо говорити простими словами, Raspberry Pi - це супердешевий (40 доларів) комп’ютер на базі Linux. Це воно. Серйозно.

Він може робити все, що ви можете собі уявити, як звичайний комп’ютер Linux, наприклад, переглядати Інтернет, писати код, редагувати документи та підключатись до пристроїв вводу-виводу, таких як флеш-накопичувач, миша, клавіатура тощо. Цей підручник буде зосереджений на навчитися створювати власний dev-сервер Python за допомогою Raspberry Pi.

Крок 0. Визначте мету

Перш ніж розпочати, важливо зрозуміти, що саме ми намагаємось побудувати. Наприкінці підручника ви зможете запустити базовий веб-сайт (за допомогою Flask) з Raspberry Pi у вашій локальній домашній мережі.

Мета цього підручника - продемонструвати, як Pi можна використовувати як dev-сервер, точніше, прикладом буде розміщення простого веб-сайту (за допомогою Flask).

Крок 1. Сформулюйте припущення

Ось деякі припущення, які зробить цей підручник:

  1. У вас вже є Raspberry Pi, налаштований на ОС Raspbian. Ось корисний посібник з налаштування, якщо він вам потрібен.
  2. Pi підключений до домашнього Wi-Fi (і що ви знаєте IP-адресу Pi).
  3. Вам не знадобиться екран вперед. припускаючи, що пункти 1 і 2 повні.

Ми будемо використовувати код VS із віддаленим розширенням VSCode для віддаленого створення та редагування файлів на Pi. Я обов’язково рекомендую використовувати ці два, щоб продовжити. Крім того, це значно полегшить роботу з віддаленими файлами, тому це плюс.

Крок 2. Знайдіть IP-адресу Pi

Спочатку підключіть Pi до джерела живлення та переконайтеся, що він правильно завантажився та підключений до WiFi / Ethernet (в основному, він повинен мати підключення до Інтернету).

Ми використовуватимемо ssh для підключення та спілкування з Pi. Щоб зробити це віддалено за допомогою ноутбука, потрібно знати його IP-адресу. Це можна легко отримати за допомогою порталу адміністратора вашого провайдера (зазвичай доступний за адресою //192.168.0.1. Зверніть увагу, що це може бути різним для різних провайдерів.)

Зазвичай вам слід підключити Pi до адреси, яка може виглядати приблизно так, як "192.168.0.12" Знову ж, для різних людей це буде по-різному. Тому, будь ласка, використовуйте IP-адресу, яку ви знайшли для свого Pi на порталі адміністратора. Надалі цей підручник використовуватиме 192.168.0.12 як IP-адресу Pi.

Крок 3. Підключіться до Pi за допомогою ssh

Відкрийте VS Code та його вбудоване вікно терміналу на вашому ноутбуці. Підключіться до Pi з IP-адресою 192.188.0.12, використовуючи таку команду ssh:

ssh -R 52698: localhost: 52698 [email protected]

Наведена вище команда встановить двосторонній канал зв'язку між вашим ноутбуком та Pi. Якщо ви вперше підключаєтесь до Pi, використовуйте малину як пароль. Можливо, вам буде запропоновано змінити пароль за замовчуванням. Настійно рекомендуємо це робити.

Крок 4. Створіть каталог проекту

Тепер ви повинні бути в домашньому каталозі Pi. Давайте створимо каталог веб-сайту, який ми хочемо створити. Використовуйте таку команду для створення каталогу:

Веб-сайт mkdir MyFlask

За допомогою команди 'ls' переконайтеся, що ви дійсно бачите нову папку з іменем MyFlaskWebsite.

Крок 5. Встановіть колбу

Ми використаємо Flask для створення простого веб-сайту. Flask - це мікро-фреймворк на основі Python. Він використовує Jinja (механізм шаблонів на основі Python) як механізм шаблонів, що робить його дуже корисним та потужним. Використовуйте таку команду, щоб встановити колбу на Pi:

sudo apt-get install python3-flask

Крок 6. Напишіть базовий код

Тепер, коли Flask встановлено, ми можемо почати створювати файли та писати деякий код. Спочатку перейдіть до новоствореного каталогу проекту (з кроку 4), використовуючи таку команду:

cd MyFlaskWebsite

Усі файли та папки проекту будуть знаходитись у цьому каталозі "MyFlaskWebsite". Тепер створіть свій перший файл коду (app.py), використовуючи таку команду:

торкніться app.py

Під час перевірки каталогу за допомогою команди 'ls' ви зможете побачити цей нещодавно створений файл.

Тепер натисніть F1 і виберіть "Сервер віддаленого запуску". Це має дозволити вам віддалено редагувати файли на Pi за допомогою ноутбука.

Далі використовуйте таку команду, щоб розпочати редагування щойно створеного файлу app.py. Це може зайняти кілька секунд, але порожній файл повинен бути видимим у вікні праворуч вище.

rmate app.py

Введіть код, показаний на малюнку нижче. Тут ми визначили маршрут до домашньої сторінки веб-сайту, на якому повинно бути „Це мій веб-сайт колби, і це так класно”. Зверніть увагу, що встановлення для хоста 0.0.0.0 дозволяє цьому веб-сайту бути доступним для всіх пристроїв, підключених до однієї мережі.

Збережіть файл і використовуйте таку команду для запуску веб-сайту на сервері Pi:

python3 app.py

Отримавши вищезазначене повідомлення про успіх, відкрийте нове вікно браузера на будь-якому пристрої у вашій мережі та введіть IP-адресу Pi (у цьому випадку це 192.168.0.12), а потім порт, на якому працює сервер dev (5000. ) Тож повна адреса буде //192.168.0.12:5000/

Ви повинні побачити текст "Це веб-сайт моєї колби, і це круто". на веб-сторінці.

Це підтверджує, що ваш dev-сервер активний і працює на веб-сайті, який ви щойно створили.

Крок 7. Додайте більше маршрутів

На даний момент код складається лише з 1 маршруту, який є домашньою сторінкою веб-сайту. Додайте інший маршрут, ввівши наступний код. Зверніть увагу, що ви можете динамічно вносити зміни під час роботи dev-сервера. Він автоматично захопить дельту (зміна коду) і запустить оновлену версію після оновлення вікна браузера.

Щоб перевірити, чи працює новий маршрут належним чином, перейдіть до //192.168.0.12:5000/meow, і веб-сторінка повинна "MEOW" у вас.

Крок 8. Додайте структуру до свого коду

Тепер додавати більше маршрутів - це круто, але наявність усього коду лише в 1 файлі app.py - це не те, як має бути структурований веб-сайт. Зазвичай ми маємо папку з HTML-шаблонами, папку зі статичними CSS-файлами та ще одну для JS-файлів. Давайте додамо ці папки і перемістимо код у відповідні папки, щоб краще структурувати код. Використовуйте такі команди, щоб створити ці каталоги:

шаблони mkdir - статичні

За допомогою команди 'ls' перевірте, чи створені ці папки.

Тепер давайте створимо HTML-файл для домашньої сторінки. Використовуйте наступні команди для переходу до каталогу шаблонів. Потім створіть новий файл з іменем index.html і використовуйте rmate, щоб відредагувати його:

cd шаблони touch index.html rmate index.html

Напишіть базовий HTML-код для домашньої сторінки всередині index.html.

Внесіть такі зміни в app.py, щоб використовувати файл index.html. У наведеному нижче коді за замовчуванням буде здійснено пошук файлу з іменем index.html у каталозі шаблонів.

Поверніться до каталогу проекту та запустіть веб-сайт знову.

Поверніться на домашню сторінку, і ви побачите вміст, розміщений всередині index.html.

Тепер додайте трохи стилю, створивши 'main.css' всередині статичного каталогу. Як завжди, використовуйте команду 'cd', щоб змінити каталог, команду 'touch', щоб створити новий файл, і команду 'rmate', щоб відредагувати той самий файл.

Додайте трохи стилю до тегу h4. Зверніть увагу, що на даний момент у нас є тег h4 у index.html, який css повинен змінити.

Як завжди, протестуйте свої зміни, використовуючи таку команду:

python3 app.py

Зверніть увагу, як текст у тезі h4 забарвлюється відповідно до CSS.

Крок 9. Скористайтеся Jinja

Jinja у механізмі шаблонів на основі Python, який додає багато потужних функцій до веб-сторінок. Хоча цей посібник не зосереджений на вивченні Jinja, давайте просто розглянемо простий приклад того, як Jinja може бути корисним.

Давайте просто створимо список фруктів у app.py і передамо його як параметр до index.html. Тоді ми матимемо index.html відображати цей список на веб-сторінці. Внесіть такі зміни в app.py та index.html.

Оновіть свою веб-сторінку, і ви побачите список фруктів на екрані.

Це говорить про те, наскільки потужним і корисним може бути Джинджа. Для отримання додаткової інформації про Jinja зверніться до цього.

Крок 10. Наступні кроки

Тепер, коли у вас є повністю функціональний dev-сервер Python, можливостей у майбутньому практично безмежно. Ось декілька корисних наступних кроків, які ви можете розглянути для свого проекту:

  1. На даний момент Pi доступний лише через пристрої вашої особистої мережі. Щоб виставити Pi на зовнішній світ (отримати до нього доступ через будь-який пристрій за межами вашої особистої мережі), вам потрібно щось, відоме як переадресація портів. В основному, вам потрібно доменне ім’я та статична IP-адреса, яка постійно призначається Pi. Більше інформації тут і тут.
  2. Для більшості програм потрібна база даних для основних операцій CRUD. Python підтримує SQlite прямо з коробки. Дізнайтеся, як використовувати SQlite з Flask тут і тут.
  3. Ось класний стартовий набір Raspberry Pi на Amazon. Акуратне в цьому полягає в тому, що в ньому є все, що потрібно для початку, і економить ваші зусилля для самостійного пошуку окремих предметів.
  4. Оскільки ви не використовуєте екран, важливо використовувати команду вимкнення для Pi за допомогою терміналу. Це гарантує, що Pi та SD-карта не пошкоджені:
sudo shutdown -h зараз

#До наступного разу.