# Eseguire Artisan e altri comandi su un sito

> Esegui un comando una tantum come php artisan migrate nella directory live di un sito, con il suo utente e la sua versione PHP, e conservane l'output.

La pagina **Comandi** di un sito esegue un singolo comando, una volta, nella directory live del sito, come `php artisan migrate --force`, `php artisan cache:clear` o `composer dump-autoload`. Non ti servono un terminale né SSH: scrivi il comando, clicchi su **Esegui** e leggi l'output quando ha finito.

Ogni comando che esegui resta nella **Cronologia** con il suo output e il suo stato, così vedi cosa è stato eseguito, da chi, e puoi eseguirlo di nuovo.

![La pagina Comandi di un sito con un campo per il comando e la cronologia dei comandi precedenti con il loro stato](https://ops.vimonto.com/docs-media/it/site-commands.webp?v=161e760d "Eseguire comandi su un sito")

## Eseguire un comando

1. Apri il sito e clicca su **Comandi** nella sua barra laterale.
2. In **Esegui un comando**, scrivi il comando. Per i siti Laravel e Statamic il campo inizia con `php artisan `.
3. Clicca su **Esegui**.

Il comando gira come attività in background, e la sua voce si apre nella **Cronologia** sotto, con l'output man mano che arriva. Puoi lasciare la pagina: il comando continua sul server, e puoi seguirlo anche nella pagina [attività](https://ops.vimonto.com/docs/it/organization/activity).

## Dove e come gira un comando?

- **Nella directory live**: la release attualmente online, `current/` nella directory del sito, o la root del monorepo al suo interno, per esempio `/home/vimonto/shop.example.com/current`. La pagina mostra il percorso esatto sotto il campo. Un sito mai deployato non ha ancora una directory live; il comando fallisce allora con un messaggio che lo dice.
- **Con l'utente del sito**: l'utente di sistema del server, o l'utente proprio di un [sito isolato](https://ops.vimonto.com/docs/it/sites/site-settings#isolamento-del-sito). La descrizione della pagina indica l'utente.
- **Con la versione PHP del sito**: per i siti PHP, `php` e `composer` usano la versione PHP impostata nelle **Impostazioni** del sito (la pagina mostra quale), quindi `php artisan` usa lo stesso PHP del sito.
- **Una riga**: un comando è una riga di al massimo 2.000 caratteri. Per eseguirne di più, concatenali con `&&`, per esempio `php artisan down && php artisan migrate --force && php artisan up`.

Un comando che termina con un errore segna la sua voce come non riuscita, con l'errore sopra l'output.

I comandi non sono interattivi: mentre girano non si può scrivere nulla. Un comando che fa una domanda, come `php artisan migrate` in produzione senza `--force`, resta fermo lì. Aggiungi l'opzione che risponde alla domanda, oppure usa il [terminale](https://ops.vimonto.com/docs/it/servers/terminal) per tutto ciò che è interattivo.

## Leggere l'output ed eseguire di nuovo un comando

La **Cronologia** elenca gli ultimi 50 comandi del sito, dal più recente, con chi li ha eseguiti, quando e il loro stato (**In coda**, in esecuzione, finito o non riuscito). I comandi più vecchi e il loro output vengono rimossi.

- Clicca su un comando per mostrare o nascondere il suo output.
- Clicca su **Usa di nuovo** per rimettere il comando nel campo. Controllalo o modificalo e clicca su **Esegui**.

## Chi può eseguire comandi?

Ogni membro può vedere la cronologia e l'output. Eseguire un comando e **Usa di nuovo** richiedono il permesso di gestire i siti (proprietario, amministratore, manager e sviluppatore), e il sito e il suo server devono essere attivi. Vedi [membri e ruoli](https://ops.vimonto.com/docs/it/organization/members-and-roles).

Ogni comando eseguito viene registrato nel [registro di audit](https://ops.vimonto.com/docs/it/organization/audit-log), con chi l'ha eseguito.

Un sito su un [load balancer](https://ops.vimonto.com/docs/it/sites/load-balancing) non ha la pagina **Comandi**: non ha codice proprio. Esegui i comandi sui siti dei suoi app server.

## Domande frequenti

### Come eseguo le migrazioni dopo un deploy?

Per ogni deploy, metti `$VIMONTO_PHP artisan migrate --force` nello [script di deploy](https://ops.vimonto.com/docs/it/sites/deployments#modifica-lo-script-di-deploy). Per una migrazione una tantum, esegui qui `php artisan migrate --force`.

### Posso eseguire un comando come root?

No. I comandi girano con l'utente del sito. Per lavorare come root usa il [terminale](https://ops.vimonto.com/docs/it/servers/terminal) o una [ricetta](https://ops.vimonto.com/docs/it/more/recipes).

### Posso eseguire qualcosa che resta in esecuzione, come un queue worker?

Non qui: un comando deve terminare. I processi che restano in esecuzione vanno in [queue e scheduler](https://ops.vimonto.com/docs/it/sites/queues-and-scheduler), dove vengono tenuti attivi e riavviati.
