Raspberry PI - 2 🍒
Începuturile cu Raspberry PI 4 sunt relativ ușoare. Este Linux, deci se găsesc o mulțime de tutoriale pe net. Știu, fix de încă unul este nevoie.
Raspberry PI Imager poate fi folosit pentru crearea unui SD card sau SSD cu un sistem de operare bazat pe Linux, numai bun de pus pe Raspberry PI 4.
Cel mai important: de activat SSH și setat accesul (de exemplu prin user/parolă)

Se conectează SSD-ul scris la Raspberry PI, se pune undeva unde va fi uitat (dar are acces la WiFI sau cablu LAN) și se pornește.
Să văd că merge
Bine, bine, nu e nevoie să mă conectez la Raspberry PI și să văd UI-ul ca să știu că e pornit și merge. Dar parcă nu pare la fel dacă merge doar din SSH.
(A more complete instruction set for accessing the remote desktop of PI: https://iotdesignpro.com/projects/setup-raspberry-pi-remote-desktop-using-tightvnc)
Primul lucru după boot, conectare cu SSH de pe alt computer pe Raspberry PI.
ssh PIHOSTNAME -l PIUSER
ℹ️ Evident, PIHOSTNAME se referă la numele de host pentru Raspberry PI, iar PIUSER se referă la userul setat pentru acces pe Raspberry PI.
Apoi actualizare de pachete și instalarea unui server VNC
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install tightvncserver
Configurarea serverului de pe Raspberry PI
vncserver
- setare parolă
Pe computerul principal, o instalare de TightVNC, și apoi conectarea cu TightVNC Viewer la PIHOSTNAME:5901
Un website simplu, cu server
Cheie SSH pentru git
Git ar trebui să fie preinstalat. La fel și utilitarul ssh-keygen. Cu execuția lui, pot să-mi creez o cheie de SSH pe care să o pun și pe contul personal de github și să mă identific față de server.
ssh-keygen
Dar trebuie să o uploadez în contul personal. Fie pornesc un browser și fac un login în conexiunea de VNC. Fie îmi aduc cheia local
scp PIUSER@PIHOSTNAME:/home/PIUSER/.ssh/id_rsa.pub c:/temp/gheo/id_rsa
Fișierul local îl pot deschide ulterior (de pe computerul principal) și copia apoi cheia în cheile de profil pentru github
Mediul de lucru
Hai să facem un site cu rust, că e simplu și e la modă. Rust se instalează facil cu instrucțiunile oficiale
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
⚠️ Necesită și o reconectare la sesiunea de SSH.
Primul web server
Un web server simplu cu pagini statice. Făcut după niște tutoriale.
cd ~/work/
git clone <git@github.com>:dezGusty/gse.git
cd gse
cargo build --release
Test 1 (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:14240) Aplicația gse ar trebui să fie configurată să ruleze pe portul 14240 din oficiu.
Sub-config 1 (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/gse
cp -r /home/PIUSER/work/gse/target/release/* /home/PIUSER/work/deploy/gse/
Primul web server, ca serviciu
Bazat pe exemplul de aici: https://www.shellhacks.com/systemd-service-file-example/
sudo touch /etc/systemd/system/gse-web.service
sudo chmod 664 /etc/systemd/system/gse-web.service
sudo nano /etc/systemd/system/gse-web.service
De setat conținutul configurării serviciului (presupun existența directorului deploy)
[Unit]
Description=Exemplu gse web service
After=network.target
[Service]
Type=simple
User=PIUSER
ExecStart=/home/PIUSER/work/deploy/gse/gse
Restart=always
RestartSec=2
TimeoutStartSec=0
WorkingDirectory=/home/PIUSER/work/gse
[Install]
WantedBy=multi-user.target
Se reîncarcă lista de servicii/daemons. Se activează serviciul pentru a porni odată cu Raspberry-ul.
sudo systemctl daemon-reload
sudo systemctl enable gse-web
sudo systemctl start gse-web
Se poate verifica starea serviciului cu
systemctl status gse-web
Dacă este nevoie de modificări se poate reporni cu.
sudo systemctl restart gse-web
Ce a vrut să spună autorul
Am făcut o aplicație web.