2013-05-12 3 views
8

È possibile aggiornare Phusion Passenger a una versione più recente quando è già in esecuzione (con Nginx nel mio caso)?Aggiornamento di Phusion Passenger senza reinstallare Nginx

Ho installato Passenger 4.0.0.rc6 utilizzando passenger-install-nginx-module. La mia configurazione di Nginx ora contiene

passenger_root /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.rc6; 
passenger_ruby /usr/local/bin/ruby; 

Ora voglio passare a Passenger 4.0.2. Posso installare la gemma, ma quando corro di nuovo passenger-install-nginx-module, tenta di ricompilare e reinstallare Nginx. (Ho pensato che sarebbe stato così intelligente da notare v'è già un Nginx installato nel percorso a specificare utilizzando --prefix)

Ho provato a cambiare manualmente passenger_root nella nuova posizione gemma passeggeri ma l'ottengo il seguente errore nel Nginx log degli errori:

2013/05/12 12:30:13 [alert] 14298#0: Unable to start the Phusion Passenger watchdog because its executable (/usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.2/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable. (-1: Unknown error) 

A quanto pare il PassengerWatchdog è costruito durante l'esecuzione passenger-install-nginx-module. Non voglio copiare oltre PassengerWatchdog dal vecchio gioiello perché qualcosa potrebbe essere cambiato.

Quindi ... qual è il modo corretto di aggiornare Passenger senza ricompilare e reinstallare Nginx (o Apache)?

+1

Sei sicuro che tenta di reinstallare Nginx? È normale che il plugin debba essere ricompilato dopo un aggiornamento. Non penso che questo influenzi l'intero server. – Wukerplank

risposta

17

@ Il commento di Wukerplank mi ha messo sulla strada giusta. Ho controllato l'uscita quando si esegue nuovamente passenger-install-nginx-module e dice:

Nginx doesn't support loadable modules such as some other web servers do, 
so in order to install Nginx with Passenger support, it must be recompiled. 

Do you want this installer to download, compile and install Nginx for you? 

1. Yes: download, compile and install Nginx for me. (recommended) 
    The easiest way to get started. A stock Nginx 1.4.1 with Passenger 
    support, but with no other additional third party modules, will be 
    installed for you to a directory of your choice. 

2. No: I want to customize my Nginx installation. (for advanced users) 
    Choose this if you want to compile Nginx with more third party modules 
    besides Passenger, or if you need to pass additional options to Nginx's 
    'configure' script. This installer will 1) ask you for the location of 
    the Nginx source code, 2) run the 'configure' script according to your 
    instructions, and 3) run 'make install'. 

Whichever you choose, if you already have an existing Nginx configuration file, 
then it will be preserved. 

La parte importante è che Nginx deve essere ricompilato per funzionare con passeggero e che le configurazioni Nginx esistenti vengono conservati.

Quindi il modo giusto per l'aggiornamento del passeggero è di

  1. installare il nuovo gioiello passeggeri
  2. eseguire passenger-install-nginx-module con esattamente gli stessi parametri come la prima volta (in modo dalla stessa versione Nginx e moduli sono compilati, è installato nella stessa directory, ecc.)
  3. prima dell'installazione, controllare che sia scritto "Benvenuto nell'installazione del modulo Nginx di Phusion Passenger, v4.0.2." con la nuova versione in cima (4.0.2 nel mio caso)
  4. dopo aver installato Nginx, modificare passenger_root nel proprio conf Nginx (percorso/su/nginx/conf/nginx.conf) in modo che punti alla nuova versione della gemma (basta sostituire il vecchio numero di versione con il nuovo)
  5. Restart Nginx
  6. Profit
5

non è possibile aggiornare senza ricompilare Nginx. Le istruzioni complete per l'aggiornamento sono disponibili in the Phusion Passenger for Nginx manual. Dal manuale:

Nginx è diverso da altri server Web in quanto non supporta i moduli caricabili. L'unico modo per estendere Nginx è ricompilarlo interamente dal sorgente. Poiché Phusion Passenger è costituito da alcuni eseguibili esterni più un modulo Nginx, è necessario ricompilare Nginx quando si installa Phusion Passenger per la prima volta, ma anche durante l'aggiornamento di Nginx stesso o durante l'aggiornamento della versione di Phusion Passenger.

Ricompilare Nginx e gli eseguibili di Phusion Passenger è ciò che faremo in questo passaggio. La buona notizia è che Phusion Passenger fornisce uno strumento per rendere questo più facile per te.

Se è già stato installato Nginx in precedenza, ma senza il supporto di Phusion Passenger, è necessario prima disinstallarlo. Non è necessario, perché è anche possibile installare un altro Nginx con supporto Phusion Passenger, in parallelo al Nginx esistente. Raccomandiamo semplicemente di disinstallare l'esistente al fine di evitare la confusione dell'utente, ma la scelta è vostra.

Se in precedenza Nginx è stato installato con il supporto di Phusion Passenger e si sta eseguendo l'aggiornamento, non è necessario disinstallare prima il Nginx esistente. Invece lo sovrascriveremo in questo passaggio. Ma è importante ricompilare Nginx con i parametri di configurazione che hai usato l'ultima volta.

+1

Grazie per la risposta, @Hongli. Ho accettato la mia risposta in quanto ho incluso i passaggi specifici che dovevo prendere per reinstallare Nginx con Passenger. –