Come controllare la versione di un'applicazione Web in esecuzione? [duplicare]

2

Sto sviluppando un'applicazione web in PHP e JS. Fino a poco tempo fa il software è stato sviluppato e non viene utilizzato dai client, quindi potrei semplicemente modificare i file di script direttamente. Dopo che l'applicazione è stata rilasciata, ho appena copiato l'applicazione in una cartella beta in cui avrei potuto apportare modifiche. Dopo aver testato le modifiche, ho selezionato manualmente i file modificati e li ho copiati nel sistema di rilascio.

Beh, penso davvero che ci debba essere un approccio migliore al mio problema, che non includa la copia manuale dei file dalla versione beta alla release. Ho usato git per progetti per collaborare con altre persone, ma quelle erano sempre applicazioni non web, che non erano in esecuzione, mentre le cambiavo. La collaborazione non è così importante, perché sto lavorando da solo, almeno a medio termine. Ci sono approcci per usare git oder qualcos'altro per lavorare con le applicazioni web?

Come IDE sto usando Netbeans, che è sincronizzato con il server.

Modifica: attualmente il codice produttivo si trova nella cartella htdocs del server web. Una copia di tutto il materiale è in htdocs / dev. Apporto modifiche al codice in dev tramite Netbeans, senza alcun plug-in per il controllo della versione, ma sincronizza i file del progetto tramite sftp con i file in dev. Dopo aver cambiato sono in grado di testare le modifiche usando example.org/beta. Se tutto va bene, copio i file modificati nel sistema produttivo.

    
posta dboth 30.03.2015 - 02:55
fonte

3 risposte

5

Se, mentre scrivete, modificate direttamente i file sul server tramite SFTP, l'unica opzione (per quanto posso vedere) è installare git sul server, effettuare il login tramite SSH ed eseguire tutte le operazioni git localmente. Dovresti creare un repository sul server, aggiungere tutti i tuoi file e poi eseguire il commit regolarmente. In questo caso la directory di lavoro sarebbe la directory in cui risiedono tutti i file JS e PHP.

Tuttavia, non consiglierei questo approccio, in quanto ha alcuni problemi. Tra gli altri, è necessario il login SSH sul server, il repository git deve trovarsi sul server e se i file dell'applicazione sono distribuiti su più directory, diventa difficile mettere tutto in un unico repository.

Quello che vorrei raccomandare è: Sviluppa localmente, quindi distribuisci sul server.

Ciò significa che installi PHP, webserver, ecc. in locale, quindi tieni il codice sulla tua workstation e fai la maggior parte del tuo sviluppo lì. Quindi puoi anche usare git localmente per la versione del tuo codice.

Una volta che una funzione è pronta, si distribuisce il codice sull'host Web di produzione, per renderlo attivo (o su un'installazione di prova per il test finale). Questo ti dà molta più flessibilità durante lo sviluppo (più facile usare vari strumenti, come git, non c'è bisogno di un costante accesso al server, meno rischi di rovinare il server durante lo sviluppo ecc.).

Per fare ciò, è necessario

  • un'installazione locale di PHP e tutte le altre infrastrutture necessarie e
  • una sorta di sistema di implementazione.

Le installazioni locali di PHP sono prontamente disponibili (si veda ad esempio la domanda server PHP sul computer locale? ).

Per la distribuzione, esistono molti sistemi esistenti e esistono specifiche soluzioni di implementazione per PHP. Potresti anche iniziare con un semplice script che trasferisce tutto al server e li rende attivi (riavvia tutti i servizi come richiesto, cancella le cache ecc.) E poi continua da lì.

    
risposta data 30.03.2015 - 13:33
fonte
1

SVN / GIT o qualsiasi versione di controllo dovrebbe funzionare. Tranne che per un'applicazione molto specifica, l'applicazione web è raramente in diretta (nel senso fisicamente caricato in memoria) e presumo che la tua applicazione non si riscriva da sola (altrimenti hai il rischio di riscrivere la spinta che hai appena fatto). Quindi se si preme il file la prossima chiamata sul webserver / php caricherà il nuovo codice (eccetto se si ha un sistema cache ovviamente) e si avvierà il nuovo codice.

Quindi Git spinge le tue modifiche, rimuovi la cache e dovresti essere a posto.

Nel caso in cui tu abbia un'applicazione che viene caricata simultaneamente in memoria e non usi la cache, dovresti usare una chiamata ciclica per controllare un file di flag. Quando premi una mod, premi anche la bandiera. Fai in modo che il tuo soft effettui un atterraggio morbido (nessuna nuova connessione, attendi fino a quando tutti i vecchi collegamenti non si esauriscono), fai il mod, cancella il flag e poi riavvia la modalità normale (accettando la connessione). In un primo momento, fai un controllo molto (qualcosa come ogni minuto, almeno ogni ora), poi quando stabilizzi il tuo ciclo di sviluppo puoi spendere il conto (qualcosa come una volta al giorno, una volta alla settimana)

    
risposta data 30.03.2015 - 11:57
fonte
0

La mia risposta a Quale sistema di controllo della versione può gestire tutti gli aspetti? può aiutare. Fondamentalmente, è necessario taggare la versione rilasciata in modo che un processo automatico possa verificarlo. Ho usato cron per verificare e applicare le modifiche su base periodica.

    
risposta data 30.03.2015 - 15:08
fonte

Leggi altre domande sui tag