L’applicazione Terminale web permette di accedere alla riga di comando del container in cui è in esecuzione il processo web dell’applicazione. È possibile utilizzare il terminale web per eseguire script e leggere file. È utile per il debug, il monitoraggio delle prestazioni o l’esecuzione manuale di script ad hoc.

Per accedere al terminale web, è necessario:

  • Avere almeno una distribuzione dell’applicazione andata a buon fine.
  • Avere un’applicazione corretta in esecuzione. Se ci sono errori o l’applicazione è ferma, il terminale web non sarà disponibile.
  • Aggiungere almeno un indirizzo IP valido all’elenco dei permessi.

Al momento, l’unico processo a cui è possibile accedere attraverso il terminale web è il processo web. I processi in background o i cron job non sono disponibili.

Terminale Web con un Dockerfile

Se l’applicazione è stata creata con un Dockerfile, è necessario assicurarsi che nel container sia installato Bash. Nella maggior parte dei casi, l’immagine di base (ad esempio Ubuntu) include un pacchetto di shell e funzionerà di default. In alcuni container più semplici, il pacchetto shell potrebbe non essere incluso e sarà necessario aggiungerlo. L’immagine di base determina il modo in cui aggiungere il pacchetto della shell:

  • Alpine: apk add bash
  • Ubuntu/Debian: apt install bash
  • Fedora: dnf install bash

Impostare l’Autenticazione

Gli indirizzi IP aggiunti alla allowlist devono essere univoci. Se si prova ad aggiungere un indirizzo IP già presente nella allowlist, si riceverà un errore e non si potrà aggiungere l’indirizzo IP duplicato.

Aggiungere l’Indirizzo IP

La prima volta che si accede alla pagina del Terminale web per l’applicazione in MyKinsta, bisogna fare clic su Set up authentication per aggiungere gli indirizzi IP alla lista dei permessi. Per vedere l’indirizzo da cui ci si sta connettendo, si può utilizzare uno strumento come Test your IPv6.

Inserire il primo indirizzo IP che si vuole autorizzare. Per aggiungere altri indirizzi IP, basta fare clic su Aggiungi un altro. Una volta inseriti tutti gli indirizzi IP che da autorizzare, fare clic su Imposta Autenticazione.

Add IP addresses to the IP allowlist to set up web terminal authentication.
Aggiungere gli indirizzi IP alla lista degli IP autorizzati per impostare l’autenticazione del terminale web.

Se in futuro sarà necessario aggiungere altri indirizzi IP, basterà fare clic su Aggiungi indirizzo IP nella sezione allowlist della pagina del Terminale web.

Eliminare un Indirizzo IP

Per rimuovere un indirizzo IP dalla allowlist, basta cliccare sull’icona Elimina (cestino) accanto all’indirizzo IP da rimuovere e cliccare poi su Elimina indirizzo IP per confermare l’eliminazione.

Avviare e Aprire il Terminale Web

Per aprire il terminale web, bisogna prima connettersi, il che comporta l’installazione di un pod del terminale web. Fare clic su Avvia terminale web per avviare la connessione. Durante l’avvio della connessione, le opzioni della pagina del terminale web saranno disabilitate.

Le opzioni della pagina del terminale web sono disabilitate durante l'avvio della connessione al terminale web.
Le opzioni della pagina del terminale web sono disabilitate durante l’avvio della connessione al terminale web.

Una volta completata l’implementazione del pod del terminale web, sopra la allowlist appare la scritta Il Terminale web è in esecuzione. Fare clic su Apri terminale web per aprire il terminale web in una nuova scheda del browser.

Apri il terminale web.
Apri il terminale web.

Durante il caricamento del terminale web, potrebbe apparire la pagina Avvio terminale web. Una volta caricato il terminale, sarà possibile eseguire i comandi come un normale terminale. I comandi disponibili dipendono dagli eseguibili presenti nell’applicazione.

Nome Utente del Terminale

Se l’applicazione è stata creata con un Nixpack (Usa Nixpack per impostare l’immagine del container nel passaggio Ambiente di Build), il nome utente nel terminale sarà solitamente “root”. Kinsta offre Nixpacks, un progetto open-source gestito da Railway, come una delle opzioni per determinare automaticamente il linguaggio e creare un container per l’applicazione in base al repository.

Se l’applicazione è stata creata con un Buildpack (Usa Buildpacks per impostare l’immagine del container nel passaggio Ambiente di Build), il nome utente nel terminale può essere “heroku”. Kinsta offre Buildpacks, un progetto open-source gestito da Heroku, come una delle opzioni per determinare automaticamente il linguaggio e creare un container per l’applicazione in base al repository. Questo può essere trasferito nel terminale web.

Se l’applicazione è stata creata con un Dockerfile (Usa Dockerfile per impostare l’immagine del container nella fase di Creazione dell’ambiente), il nome utente nel terminale sarà solitamente “root”, ma dipende da come è configurato il Dockerfile.

Arrestare e Chiudere il Terminale Web

Quando si è finito di lavorare nel terminale web, basta chiudere la scheda del browser per chiudere la connessione. La chiusura della scheda non arresta il terminale, ma se si desidera riaprirlo, bisognerà cliccare su Apri terminale web, attendere circa 30 secondi e aggiornare la nuova scheda per vedere nuovamente il terminale.

Per arrestare il terminale web, fare clic su Arresta terminale web.

Mentre il terminale è in esecuzione, non è possibile modificare la allowlist degli IP. Se si ha bisogno di modificarla, è necessario arrestare l’esecuzione del terminale, apportare le modifiche all’elenco dei permessi e riaprire il terminale.

Se la connessione al terminale web è stata creata ma non aperta, la connessione si chiuderà automaticamente dopo 24 ore.

Directory binarie di Nixpacks

Con i Nixpack, le directory binarie possono differire da quelle predefinite per il linguaggio dell’applicazione. La tabella seguente mostra le directory binarie utilizzate per alcuni dei linguaggi più comuni:

Linguaggio Directory
Node.js /nix/var/nix/profiles/default/bin/node
Ruby /nix/var/nix/profiles/default/bin/ruby
Python /nix/var/nix/profiles/default/bin/python
Java /nix/var/nix/profiles/default/bin/java
Scala Scala non ha un percorso binario predefinito specifico come altri linguaggi compilati. Quando si compila un programma Scala, viene generato un bytecode che viene eseguito sulla macchina virtuale Java (JVM).

Le classi Scala compilate sono tipicamente memorizzate in una struttura di directory che rispecchia la struttura dei pacchetti del codice. Questo è simile a come sono organizzate le classi Java. Per impostazione predefinita, quando si compila un file sorgente Scala, i file .class compilati vengono collocati nella stessa directory del codice sorgente (all’interno di una struttura di sottodirectory basata sulle dichiarazioni del pacchetto).

Se necessario, è possibile installare gli strumenti di runtime di Scala usando un Dockerfile invece di usare un Nixpack.

PHP /nix/var/nix/profiles/default/bin/php
Go Go non ha un percorso binario predefinito specifico come altri linguaggi compilati. Quando si compila un programma Go, l’eseguibile binario risultante viene solitamente collocato per impostazione predefinita nella stessa directory del codice sorgente.

Se necessario, è possibile installare gli strumenti di runtime di Go usando un Dockerfile invece di usare un Nixpack.

Directory binarie dei Buildpack

Quando si aggiunge un’applicazione in MyKinsta utilizzando i Buildpack, le directory binarie possono differire da quelle predefinite per il linguaggio dell’applicazione. La tabella seguente mostra le directory binarie utilizzate per ogni linguaggio del buildpack:

Linguaggio Directory
Node.js /layers/heroku_nodejs-engine/dist/bin/node
Ruby /usr/bin/ruby
Python /usr/bin/python
Java /layers/heroku_jvm/openjdk/bin/java
Scala Scala non ha un percorso binario predefinito specifico come altri linguaggi compilati. Quando si compila un programma Scala, viene generato un bytecode che viene eseguito sulla Java Virtual Machine (JVM).

Le classi Scala compilate sono tipicamente memorizzate in una struttura di directory che rispecchia la struttura dei pacchetti del codice. Questo è simile a come sono organizzate le classi Java. Per impostazione predefinita, quando si compila un file sorgente Scala, i file .class compilati saranno collocati nella stessa directory del codice sorgente (all’interno di una struttura di sottodirectory basata sulle dichiarazioni del package).

Se necessario, è possibile installare gli strumenti di runtime di Scala utilizzando un Dockerfile anziché un buildpack.

PHP /workspace/.heroku/php/bin/
Go Go non ha un percorso binario predefinito specifico come altri linguaggi compilati. Quando si compila un programma Go, l’eseguibile binario risultante viene solitamente collocato nella stessa directory del codice sorgente, per impostazione predefinita.

Se necessario, è possibile installare gli strumenti di runtime di Go utilizzando un Dockerfile anziché un buildpack.

Risoluzione dei problemi

  • Se all’apertura del terminale web viene visualizzata una pagina Error 1016 – Origin DNS al posto della schermata del terminale, ciò è dovuto a un leggero ritardo nella propagazione del DNS. Attendere 1 minuto e aggiornare la pagina finché non si vede la schermata del terminale. Se il problema persiste per più di qualche minuto, contattare il nostro team di supporto.
  • Un errore 403: Forbidden all’apertura del terminale web, significa che l’indirizzo IP non è presente nella allowlist. In questo caso è necessario arrestare il terminale web, aggiungere l’indirizzo IP e riavviare.
  • Un errore tipo ERRO[0000] exec failed indica che al container manca il pacchetto shell. Per poter eseguire il terminale web, sarà necessario aggiungere quel pacchetto al container.

    ERRO[0000] exec failed: container_linux.go:425: starting container process caused: exec: “bash”: executable file not found in $PATH
    comando terminato con codice di uscita 1

Documentazione correlata