Ciò che hai fatto può essere pericoloso, ma sei stato in grado di cavartela perché il pubblico di destinazione del sito era così piccolo e comprensivo. La migliore analogia a cui riesco a pensare è camminare su un filo alto senza rete. Potresti essere bravo, ma basta una brutta caduta per terminare la tua carriera (almeno con quel cliente). Per lo meno si desidera separare il proprio ambiente di sviluppo dal proprio ambiente distribuito.
Definitivamente fare un backup del tuo sito prima di iniziare. Se non lo hai già, ti consiglio vivamente qualche forma di controllo della versione. È un modo efficace per eseguire backup a grana fine e mantenere la versione corretta del software laddove necessario. Per il tuo ambiente particolare, potresti voler guardare Mercurial o Git (controllo della versione distribuita). Il vantaggio è che è possibile importare il codice esistente sul server e quindi estrarne una copia su un'altra macchina in cui iniziare a lavorare. Una volta terminate le modifiche, è possibile reinserire tali modifiche sul server. Quando aggiorni il repository sul server, tutto è aggiornato. Se hai bisogno di tornare indietro nel tempo, usa lo strumento per ottenere una versione precedente.
Devi eseguire il backup del database e ripristinarlo nel tuo ambiente di sviluppo. Idealmente inizierai con un nuovo database e aggiungerai solo quelle funzionalità di cui hai bisogno, ma in questo caso sono abbastanza sicuro che potresti non avere gli script correnti per configurare correttamente un database iniziale. Configura il tuo ambiente di sviluppo locale per lavorare con la tua copia locale del database. Dovrai creare i dati di test se questo non è un miglioramento insignificante, e in questo modo i tuoi utenti non ti urleranno per aver creato i dati falsi.
Mentre lavori, esegui spesso commit nel tuo repository locale, ma non spingere sul server finché non completi l'operazione non banale. Ciò rende più facile sperimentare, ma se non ti piace il modo in cui è andato il tuo esperimento, puoi ripristinare il punto che hai fatto senza dover ripetere tutto. Una volta che sei soddisfatto di tutto, puoi inviarlo al server e aggiornare lì il repository locale.
La linea di fondo è che una volta che hai effettuato questa separazione, puoi aggiungere un test separato o un'istanza di anteprima dell'applicazione a volontà in modo che le persone possano interagire senza rovinare l'installazione di produzione.