Apache2: Poruka "mixing * ports and non-* ports is not supported"

 Svi iz iskustva znamo da ono što nije pokvareno ne treba popravljati. Sličan način razmišljanja su usvojili mnogi sistem inženjeri kod brige za svoje poslužitelje (što zapravo nije ispravan način razmišljanja, jer poslužitelji zahtijevaju konstantnu pažnju i kad se "ne bune", ali o tome drugom prilikom). Uzmimo za primjer web servis, koji se gotovo 100% izvršava pod najpopularnijem web poslužitelju - Apacheju. Iako inačica 2.0, pa i 2.2 postoje već jako dugo, mnogi su ostavljali Apache 1.3 u produkciji jer, eto,"sve radi". No, Apache 1.3 treba zaboraviti i krenuti dalje. Pri tome treba malo "stisnuti zube" i savladati manje poteškoće na putu.

Konfiguracija se Apache web poslužitelja prelaskom na Apache 2 ponešto izmjenila, te se ponekad mogu javiti manji problemi koji se u starijim inačicama nisu javljali. Ovo može biti jer su razviljatelji Apacheja odlučili onemogućiti neke stare workaroundove, ili jednostavno očistiti sintaksu od zaostataka starih vremena.

Ponekad (obično odmah nakon nadogradnje na Apache 2) u logovima možete naći ovakvu ili sličnu poruku:

[error] VirtualHost 193.198.X.Y:0 -- mixing * ports and non-* ports 
with a NameVirtualHost address is not supported, proceeding with undefined results

Ova poruka je rezultat nepravilne konfiguracije virtualnih hostova baziranih na imenu (name-based vhosts). Primjerice:

NameVirtualHost 193.198.XXX.YYY:80

<VirtualHost www.domena.hr>
ServerName www.domena.hr
DocumentRoot /home/httpd/htdocs
ErrorLog /var/log/apache/error.log
TransferLog /var/log/apache/access.log
</VirtualHost>

Vrijednost NameVirtualHost i Virtualhost moraju biti identične, uključujući i broj porta. Apache 2 će uredno prijaviti problem, iako sam rad poslužitelja ne mora biti narušen, i svi virtualni hostovi mogu raditi bez ikakvih problema, no to ovisi o konkretnoj situaciji.

Ne ulazeći u sve moguće načine konfiguriranja Virtualnih hostova, navest ćemo primjer koji će odgovarati većini tipičnih konfiguracija na CARNetovim poslužiteljima:

NameVirtualHost 193.198.XXX.YYY:80

<VirtualHost 193.198.XXX.YYY:80>
ServerName www.domena.hr
DocumentRoot /home/httpd/htdocs
ErrorLog /var/log/apache/error.log
TransferLog /var/log/apache/access.log
</VirtualHost>

<VirtualHost 193.198.XXX.YYY:80>
ServerName studenti.domena.hr
DocumentRoot /home/httpd/htdocs
ErrorLog /var/log/apache/error.log
TransferLog /var/log/apache/access.log
</VirtualHost>

...itd

Dakle, preporučuje se rabiti IP adresa (jer ne zahtijeva DNS lookup) i eksplicitno navesti port na kojem će virtualni host slušati. Naravno, možete imati i druge vrijednosti za port, ali uvijek popraćen odgovarajućim NameVirtualHost direktivom (može ih biti više), npr. NameVirtualHost 193.198.XXX.YYY:8080.

Drugi slučaj koji se često javlja nije problem u konfiguraciji, ali se na prvi pogled tako može učiniti. Ako Vam se javi poruka:

Invalid command 'php_flag', perhaps mis-spelled or defined by a module
not included in the server configuration
invoke-rc.d: initscript apache2, action "start" failed.

Ovdje se radi o nedostatku paketa php4-cn, odnosno php5-cn. Nakon instalacije navedenog paketa, problem će nestati. Valja napomenuti da se greška može pojaviti prilikom nadogradnje sa Apacheja 1.3, a da problema zapravo nema. To se događa jer se kod nadogradnje događa nekoliko restarta i postoji mogućnost da u tom trenutku PHP još nije aktivan. Jednostavnim pregledom logova, odnosno provjerom vaših PHP stranica možete vidjeti da li sve radi, te tu poruku o greški zanemariti.

 

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet