Installazione
Per quanto Unit sia stato prodotto dal team di Nginx, non occorre installare Nginx per usare Unit.
Installazione su Ubuntu e Simili
NOTA
Questo è soltanto descrittivo. Noi non installeremo Unit direttamente sulla macchina host, ma useremo un'immagine Docker.
Occorre conoscere l'esatta versione della release Ubuntu o della versione Ubuntu da cui la corrente distribuzione è derivata.
Su Ubuntu;
cat /etc/lsb-release
Su, p.es., Mint:
cat /etc/upstream-release/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu Jammy Jellyfish"
Le seguenti istruzioni si riferiscono quindi alla release 22.04 di Ubuntu.
Download della firma dei pacchetti:
sudo curl --output /usr/share/keyrings/nginx-keyring.gpg \
https://unit.nginx.org/keys/nginx-keyring.gpg
Editare il file di configurazione repositories:
sudo vim /etc/apt/sources.list.d/unit.list
deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit
deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit
Installare Unit:
sudo apt update
sudo apt install unit
Ricercare pacchetti d'uso di Unit con vari linguaggi:
apt search --names-only '^unit-'
Al momento Unit supporta:
- Go
- Java (varie versioni)
- Perl
- PHP
- Python 2.7 e 3.10
- Ruby
- WASM (Web Assembly)
Non si possono installare tutti i linguaggi supportati da Unit.
Per esempio, l'installazione del modulo Go include l'installazione del linguaggio Go stesso. E' un pacchetto poderoso.
Molto meglio usare immagini Docker preconfigurate con Unit e il supporto ad un linguaggio specifico.
Installazione su Docker
Dato un linguaggio di sviluppo, scarichiamo l'immagine Docker che da quel linguaggio e il supporto a Unit.
Per esempio, per il linguaggio Go:
docker pull unit:1.32.0-go1.21
Sono disponibili le seguenti immagini:
Image | Description |
---|---|
unit:1.32.0-minimal | No language modules; based on the debian:bullseye-slim image. |
unit:1.32.0-go1.21 | Single-language; based on the golang:1.21 image. |
unit:1.32.0-jsc11 | Single-language; based on the eclipse-temurin:11-jdk image. |
unit:1.32.0-node20 | Single-language; based on the node:20 image. |
unit:1.32.0-perl5.38 | Single-language; based on the perl:5.38 image. |
unit:1.32.0-php8.2 | Single-language; based on the php:8.2-cli image. |
unit:1.32.0-python3.11 | Single-language; based on the python:3.11 image. |
unit:1.32.0-ruby3.2 | Single-language; based on the ruby:3.2 image. |
unit:1.32.0-wasm | Single-language; based on the debian:bullseye-slim image. |
Partenza del Contenitore Unit
Faremo ora partire il contenitore.
Per dargli un indirizzo IP preciso occorre prima creare una rete Docker con CIDR contenente tale indirizzo:
docker network create --subnet 192.168.100.0/24 unitnet
Il lancio del contenitore è:
docker run -d --name unitgo --net unitnet --ip 192.168.100.10 \
-v /www:/www -p 8080:8080 -p 80:80 unit:1.32.0-go1.21 \
unitd --control 192.168.100.10:8080 --no-daemon
Non usiamo il comando di default del contenitore. Creerebbe un socket di controllo Unix, e potremmo accedere al server Unix solo da dentro il contenitore.
Diamo invece come comando del contenitore:
unitd --control 192.168.100.10:8080 --no-daemon
Questo crea il socket di controllo Inet 192.168.100.10:8080
, che ci permette di interagire con Unit da un altro contenitore o dalla macchina host.
L'opzione --no-daemon
lancia unit in foreground. Se non vi fosse partirebbe in background, non vi sarebbe il processo 1 del contenitore, che terminerebbe subito.
Controllo di Raggiungibilità
Pagina di Default
Apriamo un browser all'indirizzo 192.168.100.10
. Se funziona vedremo la pagina di benvenuto.
Lo stesso lo otteniamo col comando curl
, una utility che useremo sempre nell'interazione con Unit.
curl -X GET 192.168.100.10
Connessione di Controllo
Per avere una lista della configurazione corrente di Unit, ci colleghiamo alla porta di controllo:
curl -X GET 192.168.100.10:8080
L'output è una stringa JSON con la configurazione corrente.