2013-06-28 18 views
21

Desidero spostare tutti i miei siti su GitHub per tutti gli ovvi vantaggi. Non sono un grande fan della linea di comando, quindi mi piace GitHub perché mi permette di evitare di toccare tutto ciò. Configurare un repository su GitHub e quindi sincronizzarlo con il mio computer è abbastanza facile. Devo essere in grado di passare automaticamente da GitHub al webserver, anche se quando aggiorno qualcosa localmente al ramo principale, sincronizzandolo con GitHub, esso viene reso disponibile sul sito. Dal cercare su Google il soggetto sembra che la maggior parte delle tecniche richieda la riga di comando o sembra piuttosto complessa. Voglio farlo con circa 15-20 siti (molti dei quali sono ospitati su server diversi da client diversi). Voglio trovare un'opzione che rientra nelle mie competenze e non richiede 2-3 ore per sito. Qualcuno sa del modo migliore e più semplice per configurarlo?Trasferimento da GitHub a un server Web

+5

Il primo passo sarebbe imparare a utilizzare la riga di comando. Ti stai dirigendo verso uno schema abbastanza elaborato, e senza usare la linea di comando non andrai molto lontano. Inoltre, fai attenzione, probabilmente ci sono alcuni file che non inserirai in github (le immagini e i documenti potrebbero non richiedere il controllo del codice sorgente), così come i database da distribuire, e non sarà fatto come per magia ... Penso che cosa dovresti cercare è uno strumento di distribuzione –

+0

Sia che si utilizzi OSX, si può considerare questo flusso di lavoro piuttosto conveniente basato sulla GUI (lo uso anche per alcune cose di WordPress): http://eppz.eu/blog/push-git-to-ftp/ – Geri

+0

Si consiglia di esaminare l'uso di un PAAS come https://www.heroku.com/ che supporta la distribuzione tramite una semplice pressione, ad esempio 'git push heroku master' –

risposta

8

La parte che è complesso è il webhook on GitHub

Ogni repository GitHub ha la possibilità di comunicare con un server web ogni volta che il repository è spinto a.

Ciò significa che il tuo sito web deve avere un processo che ascolta quei messaggi JSON inviati da GitHub al ricevimento di un commit.

Potete vedere più esempi di quegli ascoltatori, come questo webhook-deployer, con un'auto.php (per un server php):

<?php 

// Prevent accidental XSS 
header("Content-type: text/plain"); 

// Run the script 
if ($_POST['payload']) { 
    shell_exec("./pull.sh"); 
} 

Quel progetto GitHub raccomanda una chiave SSH senza passphrase, che sono d'accordo al primo (per provarlo).
Tuttavia, in particolare per i progetti privati, è consigliabile eseguire un ssh-agent e gestire una passphrase della chiave ssh protetta.
Come Janos comments:

  • Se il repository GitHub è pubblico, allora egli non ha nemmeno bisogno di uno.
  • Se il repository è privato, allora ne ha bisogno, ma questo non dovrebbe essere preso così alla leggera. Se possibile, dovrebbe usare un agente chiave.
    Se ciò è troppo complicato, potrebbe utilizzare una chiave SSH dedicata senza passphrase solo per questa distribuzione e tale chiave non dovrebbe mai lasciare il PC di distribuzione.
+1

Perché si incoraggiano le chiavi SSH senza passphrase? Se il repository GitHub è pubblico, non ne ha nemmeno bisogno. Se il repository è privato, allora ne ha bisogno, ma non dovrebbe essere preso così alla leggera. Se possibile, dovrebbe usare un agente chiave. Se ciò è troppo complicato, potrebbe utilizzare una chiave SSH dedicata senza passphrase solo per questa distribuzione e tale chiave non dovrebbe mai lasciare il PC di distribuzione. – janos

+0

@janos ottimi punti. Ho modificato la risposta e incluso i tuoi punti in essa, per maggiore visibilità. – VonC

5

So che questo biglietto è vecchio, ma per coloro che trovano questo in qualche modo, cassa dploy.io. Si tratta di un servizio in hosting realizzato appositamente per la distribuzione del repository da GitHub/Bitbucket al server. Supporta i comandi SFTP/FTP/S3/Heroku/SSH e altro ancora.

Disclaimer: io lavoro su dploy.io

2

Si potrebbe voler dare un'occhiata a questo script PHP:
https://github.com/JohannesHoppe/easy-git-deploy
(Fa un git clone, git pull, git push per voi)

Da diversi anni gestisco tutte le mie installazioni wordpress con quella sceneggiatura.

Suggerimento:: Se si utilizza un ambiente di hosting condiviso, i limiti di script potrebbero interrompere la prima esecuzione.In tal caso, il login tramite SSH e fare il primo clone manualmente:

git clone 'https://user:[email protected]//github.com/user/repo.git' 

qui si può anche confermare manualmente l'impronta digitale chiave SSH.

Secondo suggerimento: È necessario proteggere la directory con un file .htaccess/.htpasswd.

Problemi correlati