Sobes.tech
Middle

Kako teče proces deploy-a aplikacije?

sobes.tech АИ

Одговор од АИ

Automatizovani proces implementacije uključuje sledeće korake:

  1. Preuzimanje najnovije verzije koda: Obično se koristi sistem kontrole verzija (npr. Git) za preuzimanje poslednjih izmena iz repozitorijuma.

    # Primer Git komande za preuzimanje najnovijih izmena
    git pull origin main
    
  2. Instalacija zavisnosti: Ako projekat koristi menadžer zavisnosti (npr. Composer), pokreće se komanda za instalaciju ili ažuriranje biblioteka.

    // Primer Composer komande
    composer install --no-dev --optimize-autoloader
    
  3. Izgradnja frontenda (ako je primenjivo): Ako se koristi bundler za frontend (npr. Webpack, Gulp), pokreće se komanda za izgradnju statičkih resursa.

    # Primer NPM komande za izgradnju
    npm run build
    
  4. Migracije baze podataka: Izvršavaju se skripte za prilagođavanje strukture baze podataka trenutnoj verziji aplikacije.

    # Primer komande za izvršenje migracija
    php artisan migrate --force # Laravel
    
  5. Čišćenje i zagrejavanje keša: Brišu se kešovi framework-a i podataka, a zatim se vrši predgrejanje ako je potrebno.

    // Primer komandi za čišćenje keša
    php artisan cache:clear # Laravel
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
    
  6. Kreiranje simboličkih linkova i podešavanje prava pristupa: Konfigurišu se potrebni simbolički linkovi i prava pristupa fajlovima i direktorijumima.

    # Primer komande za podešavanje prava
    chmod -R 755 storage
    
  7. Prebacivanje aktivne verzije: Ako se koristi pristup "nultog vremena zastoja" (npr. kreiranjem simboličkog linka current na novu verziju), vrši se prebacivanje.

  8. Ponovno pokretanje servisa (ako je potrebno): Ako aplikacija zahteva restart web servera ili radnika reda, izvršava se odgovarajuća komanda.

    # Primer komande za reload PHP-FPM
    sudo systemctl reload php-fpm.service
    

Ovaj proces se obično automatizuje pomoću skripti ili specijalizovanih alata za deployment (npr. Capistrano, Deployer, GitLab CI/CD, Jenkins).