Restart di php-fpm con capistrano dopo un deploy

Reading Time: 2 minutesAggiungi ai preferiti

Vediamo come è possibile fare il restart di php-fpm con capistrano dopo un deploy.

Alcuni si saranno certamente trovati nella necessità di fare il restart di php-fpm dopo aver completato il deploy della propria applicazione con Capistrano.

Infatti, a deploy completato, le nuove modificate non risultano completamemte recepite da php (non parliamo qui delle cause), rendendo necessario un riavvio di php-fpm.

Questo riavvio può essere fatto riavviando, appunto, il servizio direttamente nel server (/etc/init.d/php7.X-fpm restart), ma è necessario effettuare il login via ssh sul server a deploy completato.

L’utilità sarebbe automatizzare, insieme al deploy, anche il riavvio di php-fpm, così da demandare alla procedura di deploy stessa questa attività ed avere, a processo completato, certamente il sito funzionante con le nuove modifiche.

Vediamo quindi come sia possibile demandare a Capistrano il restart di php-fpm, in modo che lo esegua al termine della procedura di deploy.

 

Passo 1

Dobbiamo creare un task che si occupi del restart di php-fpm.

In lib/capistrano/tasks creiamo in file .rake, io l’ho chiamato restart_php_fpm.rake, e al suo interno scriviamo le istruzioni

namespace :deploy do
    desc "Restart php-fpm service"
    task :restart_php_fpm do
        on roles(:web) do
            execute :sudo, "/usr/bin/systemctl restart php7.X-fpm.service"
            puts "fatto"
        end
    end
end

dove execute definisce il comando e, se volete, puts stampa a video un messaggio.

 

Passo 2

Dobbiamo inserire il task nella procedura di deploy.

Aggiungiamo in config/deploy/production.rb la chiamata al nostro task

after :deploy, 'deploy:restart_php_fpm'

Nell’esempio sopra a Capistrano viene detto di eseguire il task dopo il deploy con l’istruzione “after :deploy”.

 

Passo 3

Affinchè Capistrano possa fare il restart di php-fpm è necessario che l’utente che si collega al server abbia i permessi per effettuare il restart perchè è questo utente che, alla prova dei fatti, si occupa di fare il restart del servizio.

Dato che sicuramente non stiamo parlando dell’utente root, dovremo abilitare l’utente che fa il deploy come sudoers, aggiungendolo in /etc/sudoers.d

Supponendo che il nostro utente sia web1, creiamo il file /etc/sudoers.d/web1 con il seguente contenuto

web1 ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart php7.X-fpm.service

 

Imp. php7.X-fpm va sostituito con la versione corretta di php-fpm.

 

 

wallaceer

Recent Posts

Esclusione di prodotti da una regola a catalogo in Magento 2

Reading Time: < 1 minute Esclusione di una serie di prodotti selezionati tramite l'apposito menù…

1 anno ago

Traduzione di testo con googletranslate

Reading Time: < 1 minute Nel video che vedete di seguito, a titolo di esempio,…

2 anni ago

Manifesto per lo Sviluppo Agile di Software

"Stiamo scoprendo modi migliori di creare software,sviluppandolo e aiutando gli altri a fare lo stesso.Grazie…

2 anni ago

Security patch for Shopware 6

Shopware ha rilasciato una security patch in grado di colmare alcune lacune di sicurezza per…

2 anni ago

E-commerce ed omnicanalità

Il tema e-commerce ed omnicanalità ha sostituito l'ormai obsoleta multicanalità, vediamo di cosa si tratta.…

3 anni ago

Adobe Commerce 2.4.3 e patch di sicurezza

Ieri 10 Agosto 2021 Adobe ha rilasciato Adobe Commerce versione 2.4.3 e le patch di…

3 anni ago