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.