Raspberry PI - 3 🫐

Încă un server web cu Raspberry PI 4. Primul deservește o pagină statică. Hai să afișăm și ceva mai dinamic. Am mai scris o aplicație web folosind ChatGPT și Rust: rs-weight-tracker.

Folosește tot Rust, deși un alt crate. Include și o bază de date sqlite. Dar tot este simplă. Hai să vedem cum ar merge un deploy pe Raspberry PI 4.

Build local

Sunt necesare niște dependințe suplimentare, care trebuie instalate în prealabil la nivel de sistem:

  • sqlite3
  • diesel
apt-get install libsqlite3-dev
cargo install diesel_cli --no-default-features --features sqlite
cd ~/work/
git clone <git@github.com>:dezGusty/rs-weight-tracker.git
cd rs-weight-tracker/
cargo build --release
diesel migration run

Date extra (opțional)

Se pot importa și date suplimentare

cargo run --release --bin import_weights ./data/sample_data.json

Test 2 (Opțional)

De probă, un cargo run pentru a vedea.

cargo run

CTRL + C pentru a opri aplicația

Ok, ce se vede? Unde ? Păi hai să ne conectăm la VNC (de repornit serverul vnc dacă e nevoie)

vncserver

Și într-un browser pornit din Raspberry PI via VNC, ar trebui să meargă apelat serverul web (http://127.0.0.1:14280) Aplicația gse ar trebui să fie configurată să ruleze pe portul 14280 din oficiu.

Sub-config 2 (Opțional)

Dacă e ceva ce se actualizează mai des, cât este activ web server-ul, nu va merge recompilat codul. Pentru a permite și scenariul ăsta, ar fi bine să existe un director dedicat deploy-ului, de unde să se execute binarele.

mkdir /home/PIUSER/work/deploy
mkdir /home/PIUSER/work/deploy/rs-weight-tracker
cp -r /home/PIUSER/work/rs-weight-tracker/target/release/* /home/PIUSER/work/deploy/rs-weight-tracker/

Al 2-lea web server, ca serviciu

(tot bazat pe exemplul de aici: https://www.shellhacks.com/systemd-service-file-example/)

sudo touch /etc/systemd/system/rs-weight-tracker.service
sudo chmod 664 /etc/systemd/system/rs-weight-tracker.service
sudo nano /etc/systemd/system/rs-weight-tracker.service

De setat conținutul configurării serviciului (presupun existența directorului deploy)

[Unit]
Description=rs-weight-tracker web service
After=network.target

[Service]
Type=simple
User=PIUSER
ExecStart=/home/PIUSER/work/deploy/rs-weight-tracker/rs-weight-tracker
Restart=always
RestartSec=2
TimeoutStartSec=0
WorkingDirectory=/home/PIUSER/work/rs-weight-tracker

[Install]
WantedBy=multi-user.target
sudo systemctl enable rs-weight-tracker
sudo systemctl start rs-weight-tracker

Ce a vrut să spună autorul

Am făcut o aplicație web cu ChatGPT.
Se poate instala pe un Raspberry Pi 4.

Written on August 6, 2023