2010-08-17 9 views
8

Recentemente ho ottenuto progetti che funzionano su Struts e mi aspetto che JSP venga avanti.Come si eseguono Apache (httpd) e Tomcat insieme?

Dopo aver cercato su Google la domanda, sono stato condotto a blog di persone che hanno cercato di fare lo stesso. Quei blog non erano esattamente una procedura graduale di come l'hanno fatto, ma più come un riferimento nel caso in cui lo dovesse fare lo stesso in futuro. In alcuni casi, l'autore non ha detto esattamente se il suo ha avuto successo nel suo tentativo di eseguire entrambi i suddetti servizi insieme.

Sfortunatamente, non riesco a seguire le loro "istruzioni" in quanto ho un sacco di progetti PHP configurati (upload directory, classpaths ecc ...) per funzionare sul mio server di test e non ho il lusso del tempo per riconfigurarli tutti nel caso in cui mi incasino con il server httpd. E per l'onestà, non ho provato un singolo passo nel farli funzionare insieme per la stessa ragione di essere titubanti nell'aggiornare i file di configurazione.

Non sono sicuro che ciò accresca la complessità, ma sto eseguendo entrambi i servizi tramite xampp (con Tomcat che è un componente aggiuntivo xampp) a fini di portabilità.

So che posso interrompere il servizio Apache ogni volta che lavoro su JSP ma hey questo è un'opportunità per provare qualcosa di nuovo e non riesco a lasciarlo scivolare. Inoltre, sarebbe davvero conveniente che entrambi i servizi si avviino automaticamente all'avvio, il che aumenterebbe davvero la mia produttività di in quanto non dovrò passare manualmente tra i servizi quando necessario.

Spero che ci sia qualcuno su SO che ha guidato la stessa barca.

edit: Tomcat versione 6.0.20 è Httpd versione è 2.2.14

+0

E 'una cosa molto comune per fare questo, io sono un po' sorpreso che hai avuto un momento difficile trovare istruzioni. Vorrei ricordare le istruzioni che ho seguito quando l'ho fatto io stesso. –

+0

ah sì, credo che ci siano un sacco di discussioni in corso, ma le politiche internet aziendali bloccano le bacheche. Grazie a Dio SO non è considerato un forum pubblico hehe – lock

risposta

7
  • Hanno Tomcat in ascolto su una porta diversa dalla 80
  • Seguire una guida per configurare mod_proxy a reindirizzare le richieste per una determinata posizione a Tomcat, ad esempio this one.

Se stai solo testando, salta il secondo passaggio e accedi al server tramite una porta diversa per Tomcat.

modifica: Vedere anche http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html sull'impostazione di mod_proxy_ajp.

+0

Suggerisci etichettatura 'STEP 1' e' STEP 2 (opzionale) '. E spiegando che in una alternativa il sito appare unificato (passaggi 1 e 2). E l'altro frammentato (passaggio 1), con diversi numeri di porta nella barra degli indirizzi del browser. (Supponendo che tutto sia corretto naturalmente, è come la mia quarta ipotesi fino ad ora.) –

1

Hai trascurato di menzionare quale versione di Tomcat stai utilizzando e non hai nemmeno menzionato se effettivamente hai guardato la documentazione di Tomcat per rispondere alla domanda.

Suggerirei di iniziare da qui: http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html e controllare la configurazione di mod_jk.

+0

Nota che il metodo mod_jk (2?) È ampiamente considerato deprecato nelle moderne versioni di Apache che vengono fornite con mod_proxy_ajp. – Borealid

+0

Apache 2.2.14 per httpd e Tomcat 6.0.20 :) ha modificato anche la domanda nel caso in cui – lock

+1

mod_jk2 sia stato eliminato da tempo. il collegamento alla documentazione che ho fornito era la documentazione più aggiornata sul sito Web di tomcat ... che è mod_jk1.2.30 (rilasciato nel febbraio di quest'anno) .... difficilmente deprecato e funziona con tutte le versioni di Apache . – user334583

0

Se si desidera utilizzare apache/ httpd per soddisfare la richiesta da PHP, così come qualsiasi altro server in esecuzione sulla porta diversa diciamo Tomcat sulla porta 8080 è possibile utilizzare apache/httpd di agire come un "proxy" e mappare un URL che sarà servito da un altro server. Questo viene fatto usando la configurazione ProxyPassProxyPassReverse.

Ad esempio: Se si desidera http://localhost/php di essere serviti da PHP e http://localhost/tomcat di essere serviti da Tomcat allora si dovrà fare seguenti cambiamenti nella httpd.config/apache.config [apache2.config a seconda della versione di Apache utilizza]:

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
# Uncomment these to proxy FTP or HTTPS 
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
#LoadModule proxy_connect_module modules/mod_proxy_connect.so 

<VirtualHost *:80> 
# Your domain name 
# ServerName Domain_NAME_HERE 

ProxyPreserveHost On 

ProxyPass /tomcat http://localhost:8080/ 
ProxyPassReverse /tomcat http://localhost:8080/ 

# The location of the HTML files, and access control information 
DocumentRoot /var/www 
<Directory /var/www> 
    Options -Indexes 
    Order allow,deny 
    Allow from all 
</Directory> 

</VirtualHost> 

Nel caso in cui si esegue il httpdcentos e si può ottenere l'errore Apache Mod_proxy '[Error] (13)Permission Denied', quindi seguire this collegamento che dice eseguire il seguente comando:

/usr/sbin/setsebool -P httpd_can_network_connect 1 

Vorrei raccomandarvi di leggere mod_proxy.

Rif: Redhat mod_proxy configuration