Mysql
 sql >> Database >  >> RDS >> Mysql

Laravel 5:esegui migrazioni su ambiente server, non locale

Non puoi eseguire alcun comando remoto sul tuo artisan locale . Tutto ciò che esegui lì funzionerà solo localmente (anche se imposti ENV variabile).

Impostazione del ENV variabile serve solo a dire all'applicazione di comportarsi come se fosse in quell'ambiente. Ma non dice all'artigiano di utilizzare l'ambiente di produzione remoto.

Se desideri eseguire comandi sul tuo server di produzione, ti suggerisco di esaminare Envoy . È un progetto completamente autonomo (e non deve essere utilizzato solo con i progetti Laravel) ed è specifico per la distribuzione.

È fondamentalmente un sottile involucro attorno all'SSH nel tuo server remoto e quindi all'esecuzione dei comandi. Un esempio Envoy.blade.php il file sui miei siti potrebbe assomigliare a questo:

@servers(['web' => '[email protected]'])

@task('deploy')
    cd ~/src

    php artisan down
    git pull origin master

    composer install --no-dev --no-progress --prefer-dist
    php artisan migrate --force --no-interaction
    php artisan optimize
    php artisan up
@endtask

Questo SSH viene inserito, mette l'applicazione in modalità di manutenzione, estrae il nuovo codice, esegue le varie impostazioni del "nuovo codice" come l'installazione del compositore, la migrazione, ecc. e quindi estrae l'applicazione dalla modalità di manutenzione.