Come posso aggiornare il mio sito senza costringere gli utenti ad aspettare?


8

I tempi di inattività sono scomodi per gli utenti e attualmente devono attendere ogni volta che il motore di un sito viene aggiornato. Inoltre, quando si utilizzano script standardizzati, esiste il rischio che una modifica delle impostazioni non funzioni come previsto (anche se sono stati testati su un sito di gestione temporanea).

Come posso mantenere più versioni di un sito su un server e passare da una all'altra senza causare tempi di inattività (ad es. Con un file htaccess)?

Risposte:


6

Sei su una macchina Linux / BSD? In tal caso, puoi facilmente utilizzare i collegamenti simbolici per raggiungere questo obiettivo.

Crea la versione 1 del sito qui:

/var/www/www.example.org.v1

Creare un collegamento simbolico che punta a questa directory

cd /var/www
ln -s www.example.com.v1 www.example.com

Questo dovrebbe darti un elenco di directory ( ls -la) che assomiglia a questo:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

Imposta il tuo server web da usare /var/www/www.example.comcome root del documento. Non dovrai mai cambiare questo; tutto il reindirizzamento verrà effettuato a livello di filesystem.

Ora, quando si desidera scambiare la versione 2 del sito, è sufficiente inserire la nuova versione in:

/var/www/www.example.org.v2

E aggiorna il link simbolico per puntare a questa versione:

ln -sfh www.example.com.v2 www.example.com

In questo modo l'output della directory apparirà così:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

Come puoi vedere, il link simbolico www.example.com ora punta alla versione 2 del tuo sito. Questa è un'operazione atomica e non dovrebbe causare tempi di inattività relativi ai file non disponibili.

Naturalmente, è ancora necessaria una notevole complessità per garantire che le strutture del database siano aggiornate, che siano disponibili tutte le risorse statiche (e collegate alla versione corretta), ecc., Ma almeno questo si occupa di assicurarsi che tutte le risorse giuste per il il nuovo sito è immediatamente disponibile.

Windows Vista e Server 2008 supportano anche collegamenti simbolici utilizzando il mklinkcomando, anche se non ho alcuna esperienza diretta con essi.


7

Puoi usare host virtuali in apache per avere 2 versioni del codice in 2 URL diversi. Un esempio comunemente usato è:

test.example.com -> /var/www/version1.2

www.esempio.it -> /var/www/version1.1

entrambi si trovano sullo stesso server, ma forse solo uno è accessibile al mondo. Una volta che sei soddisfatto del funzionamento di test.example.com, puoi semplicemente cambiare il punto in cui puntano nella tua configurazione di apache e ... presto. Nuovo sito, nuovo codice. Supponendo che non ci fossero modifiche allo schema del database, questo dovrebbe funzionare. Quindi dopo aver apportato la modifica sarà:

test.example.com -> / var / www / newtestversion

www.esempio.it -> /var/www/version1.2

Ecco un esempio di direttiva di configurazione apache per un host virtuale:

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

Per ulteriori informazioni su come eseguire questa operazione, consultare la documentazione dell'host virtuale di apache

Non sono sicuro di come farlo in IIS, ma immagino che ci sia anche un modo.

Se qualcosa va storto, ripristina l'host virtuale sull'originale e il tuo vecchio sito è tornato ... nessun problema. Devi riavviare apache per rendere effettive queste modifiche, ma in genere è una cosa molto veloce da fare.



0

Cosa suggerirei:

  • Prova localmente su un server di sviluppo prima di caricare eventuali modifiche. Non apportare le modifiche su un server attivo fino a quando non si è ragionevolmente sicuri che funzioni sul server di prova.
  • Eseguire la manutenzione nel minor tempo di traffico intenso. Per la maggior parte dei siti Web, ciò avverrà nelle prime ore del mattino durante i fine settimana. Se i fine settimana non sono un'opzione, fallo durante il periodo meno trafficato durante la settimana.
  • Avvisa i tuoi utenti della manutenzione programmata in anticipo.

Esiste un modo per impostare più versioni e passare facilmente da una all'altra?
Gelatina

Non l'ho mai fatto prima, ma immagino che potresti farlo attraverso una configurazione multi-server o server virtuale. Se è quello che stai cercando, potrebbe finire per essere una domanda migliore per ServerFault.
Virtuosi Media,

@Simon: Sì, usa WampServer e installa i vari moduli per diverse versioni di Apache, PHP e MySQL per abbinare il server live - wampserver.com/en
DisgruntledGoat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.