drupal su server nginx/apache

17 contenuti / 0 new
Ultimo contenuto
drupal su server nginx/apache

ciao a tutti ho bisogno di sapere se è possibile e come possibilmente perchi puo aiutarmi, installare drupal su un server che al momento contiene altri siti fatti in python/django e come web server usa nginx.
Quello che vorrei fare è creare altri vhost sul server dedicato e tramite un reverse proxy di nginx installare apache su un vhost e quindi successivamente drupal. ovviamente la mia è tutta teoria dovuta alla lettura delle varie documentazioni ma non so se è fattibile realmente la cosa. che mi dite?

secondo me nginx supporta tranquillamente Drupal senza bisogno di fare da proxy verso un apache installato appositamente.

Ovviamente, .htaccess non è supportato, quindi la configurazione deve prevedere un po' di sbattimento per supportare i CleanUrl. Se parti da questa pagina http://drupal.org/node/110224 secondo me ci cavi i piedi

Ah dimenticavo: tutte le particolarità che necessitano di integrazione di PHP in Apache (tipo lo stato di avanzamento dell'upload e altre storielle del genere) non funzioneranno con nginx (ma non funzionano con nessun FastCGI, solo con mod_php) Dovresti però guadagnarci in velocità

Angelo Turetta

grazie aturetta per la risposta. per capirci meglio quindi:
1. drupal dovrebbe andare con nginx senza apache ma quale sarebbe il "sostituto" di htaccess in nginx per configurarlo al meglio?
2. mod_php per nginx non esiste giusto?
3. per quanto riguarda la velocità lo immaginavo :)

1. in quel documento che ho linkato prima trovi tutto, completo del rewrite
2. esatto. Si usa FastCGI, che è comunque disponibile anche per Apache e è l'unico modo supportato per avere PHP >=5.3 su Windows, quindi non è che sia una particolarità di nginx
3. dimenticavo di dire che serve anche meno memoria, quindi in media su un server virtuale con poca RAM è meglio la configurazione nginx.

Mi raccomando leggi tutta la pagina, perché ci sono un sacco di correzioni nei commenti. Anzi, parti da qui: http://wiki.nginx.org/Drupal che raccoglie una configurazione completa, poi magari leggiti tutto l'andirivieni di commenti.

Angelo Turetta

si ma nell'ultimo link si parla di far partire drupal con solo nginx e senza apache, io dovrei usare nginx e reindirizzare un ip verso apache/drupal

perché dovresti?
Drupal girerà su un'altra macchina o è la stessa?

se è la stessa non c'è bisogno di apache. Se invece lo devi mettere per forza, allora non ti serve a niente preoccuparti per l'accoppiata Drupal/nginx (visto che Drupal girerebbe sotto apache, su nginx non c'è niente da configurare eccetto il proxy)

Angelo Turetta

interessante argomento :)

Visto che ho sempre usato apache almeno con drupal vorrei usarlo sotto apache visto che potrei avere problemi con alcune funzionalità di php tipo lo stato di avanzamento dell'upload e altre storielle del genere come mi hai detto tu.
A questo punto dovrei usare nginx come reverse proxy solamente giusto? basta solo settare il suo proxy e passare "la palla" a apache? :)

up

esatto

Angelo Turetta

visto a quanto pare siamo in piu di uno con mi sembra di capire con lo stesso problema, dove posso reperire info su come settare nginx reverse proxy e configurare apache per drupal?

ok allora aggiorno il topic. Installato nginx e configurato per funzonare come r.proxy e dopo ho installato apache.
ho configurato nginx (virtualhost) cosi:

server {
listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
root /var/www/public_html/Drupal;
index index index.php;
#
location / {
include /etc/nginx/proxy.conf;
proxy_pass http://127.0.0.1:8080;
}
}

mentre apache (virtualhost) cosi':

ServerAdmin webmaster@localhost
DocumentRoot /var/www/public_html/Drupal

Options FollowSymLinks
AllowOverride None

......................

il problema è che drupal è accessibile direttamnete da apache senza il reverse proxy di nginx. Infatti digitando 127.0.0.1:8000 mi da una pagina bianca, usando invece la porta 8080 mi parte apache direttamnte senza passare per nginx. non capisco!

Certo, sulla porta 8080 risponde apache, ce l'hai messo tu.

La configurazione di nginx che hai messo non è corretta, non ti serve né rootindex. Non ho idea di cosa ci sia in quell'include, quindi non saprei cosa altro ci può essere di sbagliato. Io proverei qualcosa tipo questo: http://wiki.nginx.org/LikeApache

Però, posso capire perché ti serve questo doppio salto (nginx+apache)?

Angelo Turetta

ok ti rispondo per punti:

1. pensavo di fare il salto nginx/apache perchè apache sembra sia ottimale con drupal, usando fastcgi come gia detto sul forum se non ricordo male potrei avere problemi con alcune funzionalità di php tipo lo stato di avanzamento dell'upload. Quindi ho pensato di usare nginx per gli altri servizi gia esistenti e creare un virtualhost solo per apache in modo dedicato per drupal.

2. io vorrei arrivare a questo:
127.0.0.1:80 ->nginx in un virtual host creato apposta e funziona gia.
127.0.0.1:8000 -> nginx fa da reverse proxy a apache e quindi drupal.

a questo punto se io metto in ascolto nginx sulla porta 8000 e tramite un proxy_pass faccio un reverse proxy alla porta 8080 non dovrebbe funzionare? Invece no, infatti digitando:
127.0.0.1:8000 mi da una pagina di errore 502 Bad Gateway
mentre digitando 127.0.0.1:8080 passa direttamente ad apache perchè giustamente apache è messo in ascolto su quella porta.

Ecco invece proxy.conf:

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;

aggiorno dopo vari tentativi apache parte ma drupal ancora no.
in pratica con:
127.0.0.1:8080 parte apache/drupal e va bene
con
127.0.0.1:9000 parte apache ma non drupal almenochè non digito
127.0.0.1:9000/install.php che mi parte anche drupal ma appena clicco su un qualsiasi link mi visualizza di nuovo la pagina di errore riportandomi a 127.0.0.1

è un problema di settaggio del htaccess di drupal?

Conviene usare Nginx (ovviamente con memcache e APC o simili) solo per i siti con un certo numero di visite.
Potete tranquillamente usare Apache con il classico mod_php out of the box "sotto" Nginx, disattivando molti delle funzionalià di Apache (mor_rewrite che si può implementrare tramite il .conf di Ngnix, ssl, status ecc) cosi risparmi anche un'pò di RAM.
Usando mod_fastcgi, mod_cgid risparmi molta RAM se questo è lo scopo finale.

Invece per avanzamento dei upload c'è questo modulo: FileField Nginx Progress

asdomar wrote:
a questo punto se io metto in ascolto nginx sulla porta 8000 e tramite un proxy_pass faccio un reverse proxy alla porta 8080 non dovrebbe funzionare? Invece no, infatti digitando:
127.0.0.1:8000 mi da una pagina di errore 502 Bad Gateway
Dovresti postare anche .conf di Apache con Nginx. Comunque 502 sta semplicemente dicento che Apache non riponde alla 8080.