Qualche tempo fa mi è successa una cosa strana.
Stavo cercando di installare apache su una macchina con Windows XP SP 2 normalissimo.
Chi ha già provato ad installare apache su Windows lo saprà sicuramente, è di una facilità veramente estrema.
Stranamente apache si installa ma all’avvio da problemi ad andare in Bind sulla porta 80.
Incuriosito dal fatto apro il prompt dei comandi e do netstat -na
Misteriosamente sul PC di mia moglie trovo la porta 80 e 443 occupate… che strano… cosa se ne farà mia moglie di un server web?!
Indaga indaga non trovo nulla (peccato che windows non supporta il netstat -nap che visualizza anche il programma che occupa la porta corrispondente (forse non so io su Winzozz come si trova questa info…)), che sembri essere un server web.
A questo punto inizio a chiudere tutte le varie applicazioni e vedere se man mano si libera la porta 80… alla fine arrivo a chiudere Skype e per magia si liberano sia la 80 che la 443!
Morale, praticamente Skype se non trova prima apache o un server web e quindi vede libere le porte 80 e 443 le va ad occupare probabilmente per utilizzarle qualora qualche firewall blocchi l’utilizzo della sua porta di default.
Per evitare il problema o si installa apache prima di Skype oppure si deseleziona dalla seguente schermata:

Il flag che segnala di utilizzare anche le porte 80 e 443 se vi è qualche problema con la porta per la ricezione delle chiamate in ingresso.
Il problema si è verificato con Windows XP, sono comunque ragionevolmente convinto che la stessa cosa possa tranquillamente accadere anche sotto Linux…
Ciao a tutti, Maxgrante
info[AT]massimo-caselli[DOT]com
Ciao a tutti,
dopo dieci mesi di eccellente hosting fornito da www.serverplan.com mi accingo a migrare il dominio su www.hostdeck.com che promette fuoco e fiamme! 
Nelle prossime ore potrebbero esserci alcuni problemi.
Scusatemi per il disagio dovuto alla volontà di migliorare ulteriormente il sito web e la sua fruibilità .
Ciao. Maxgrante
info[AT]massimo-caselli.com
Ciao a tutti,
dopo svariato tempo di silenzio causato da impegni di lavoro torno riproponendo, in attesa di nuovi contenuti, un articolo che scrissi tempo fa su Openskills.
L’articolo originale lo trovate qua:
http://openskills.info/infobox.php?ID=1050
L’application server Tomcat puà essere utilizzato sia in modalità stand-alone che insieme ad apache, il quale funge da front-end pubblico per l’erogazione delle pagine e del servizio, ma che si avvale in background di Tomcat per quanto concerne l’esecuzione di servlet e pagine JSP.
La comunicazione tramite web server e servlet container viene gestita dal connector JK di cui parleremo successivamente.
I requirement per ottenere un ambiente come quello che vogliamo creare sono i seguenti:
– apache 2.0.x
- Tomcat 4.1.x
- Tomcat Web Server Connectors JK 1.2
- JDK 1.4.x
INSTALLAZIONE JVM
Prima di tutto bisogna installare la Java Virtual Machine sulla propria Linux Box, per fare cià bisogna scaricare da http://java.sun.com/j2se/1.4.2/download.html il JDK SE 1.4.x in formato bin per Linux.
Una volta scaricato il pacchetto binario lo si installa in /usr/local (questa è solo una mia preferenza personale).
Successivamente si deve impostare la variabile di ambiente $JAVA_HOME. Il comando è:
JAVA_HOME=/usr/local/j2sdk1.4.2_04
export JAVA_HOME
Fatto questo si puà testare il corretto funzionamento eseguendo:
echo $JAVA_HOME
Il risultato ottenuto dovrebbe essere:
/usr/local//usr/local/j2sdk1.4.2_04
INSTALLAZIONE apache
A questo punto dobbiamo procedere con la compilazione del server web apache, nel nostro caso tramite sorgenti di apache 2.0.49.
cp -p httpd-2.0.49.tar.gz /usr/local/src/
cd /usr/local/src
tar xvzf httpd-2.0.49.tar.gz
Ora possiamo procedere alla compilazione di Apache:
cd /usr/local/src/httpd-2.0.49
./configure –prefix=/usr/local/apache –enable-ssl –enable-so ; make ; make install
INSTALLAZIONE DI TOMCAT
Prima di tutto dobbiamo creare l’utente tomcat in modo tale da far girare l’application server senza i permessi di root (pericolosissimo per la sicurezza del sistema).
groupadd tomcat
useradd -g tomcat -c “Tomcat User” -d /usr/local/tomcat tomcat
passwd tomcat
La password è a vostra discrezione…
Notare che viene scelta come home directory dell’utente /usr/local/tomcat
Dopo aver scaricato Tomcat 4.1.30 in formato binario possiamo procedere all’installazione:
cp -p tomcat-4.1.30.tar.gz /usr/local/
cd /usr/local
tar xvzf tomcat-4.1.30.tar.gz
Verrà creata la cartella /usr/local/jakarta-tomcat-4.1.30 contenente i binary dell’application server Tomcat.
Per una gestione più snella e semplice andiamo ad applicare un link simbolico:
ln -s /usr/local/jakarta-tomcat-4.1.30 /usr/local/tomcat
Fatto questo dobbiamo sistemare i permessi sulla cartella e sul link simbolico, ovvero assegnare come owner della cartella e dei files l’utente tomcat, se non lo facessimo l’utente tomcat non avrebbe la possibilità di far partire il server.
chown tomcat:tomcat /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/jakarta-tomcat-4.1.30
Ora bisogna settare come per $JAVA_HOME la variabile d’ambiente $CATALINA_HOME che non è altro che il path a tomcat.
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
Ora possiamo far partire il server tomcat, ma solo dopo aver settato la variabile d’ambiente $JAVA_HOME anche per l’utente tomcat.
Facciamo quindi partire il servizio con:
su – tomcat -c /usr/local/tomcat/bin/startup.sh
Testiamo il funzionamento di tomcat con http://localhost:8080 (la porta 8080 è il default dell’application server).
In questo momento tomcat sta funzionando da web server stand-alone e da application server.
Ovviamente essendo il nostro obiettivo quello di avere apache che fornisca l’interfaccia web e Tomcat che funga da servlet container.
Per fare cià dobbiamo installare il connector JK per apache e Tomcat.
Prima di tutto perà spegnamo tomcat:
su – tomcat -c /usr/local/tomcat/bin/shutdown.sh
Fate attenzione a scaricare il connector JK 1.2 perchè la versione 2 è differente.
Scompattiamo il connector in /usr/local/src
cd /usr/local/src
tar xvzf jakarta-tomcat-connectors-jk-1.2-src-current.tar.gz
Ora configuriamo la variabile $CONNECTOR_HOME con la cartella creata dallo scompattamento del tar.gz
CONNECTOR_HOME=/usr/local/src/jakarta-tomcat-connectors-jk-1.2.5-src
export CONNECTOR_HOME
Configuriamo e compiliamo ora il connector:
cd CONNECTOR_HOME/jk/native
./buildconf.sh
./configure –with-apxs=/usr/local/apache/bin/apxs
make
make install
Questi comandi compileranno mod_jk.so e lo copieranno in /usr/local/apache/modules.
CONFIGURIAMO apache E TOMCAT PER LAVORARE INSIEME
Andiamo ad editare il file server.xml di Tomcat e aggiungiamo questa riga dopo server
Listener className=”org.apache.ajp.tomcat4.config.ApacheConfig” modJk=”/usr/local/apache/modules/mod_jk.so” /
e dubito dopo la parte dell’host questa riga:
Listener className=”org.apache.ajp.tomcat4.config.ApacheConfig” append=”true” forwardAll=”false” modJk=”/usr/local/apache/modules/mod_jk.so” /
Infine aggiungiamo il modulo creato dal connector alla configurazione di apache (httpd.conf) al termine del file di configurazione:
Include /usr/local/tomcat/conf/auto/mod_jk.conf
Ora creiamo in CATALINA_HOME/conf/jk un file di nome workers.properties
cd $CATALINA_HOME/conf
mkdir jk
chown tomcat:tomcat jk
cd jk
vi workers.properties
Il file sarà composto da queste linee:
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
Gli diamo i permessi corretti:
chown tomcat:tomcat workers.properties
A questo punto facciamo partire apache ed il gioco è fatto.
Testiamo con: http://localhost/examples e se vengono processati i files java il lavoro è terminato.
Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com
Ciao a tutti,
oggi affrontiamo in modo molto pragmatico come realizzare una piattaforma di tipo WAMP (Windows + apache + mysql + php).
Tale soluzione è implementata in due ambiti specifici tipici:
- Macchine di sviluppatori
- Hosting provider che offrono anche supporto su Windows con possibilità di utilizzare sia php che ASP.NET (Asp non lo menziono nemmeno più…
)
Da un punto di vista di prestazioni va detto che pur essendo sia Apache che PHP che MySQL nati per l’ambiente Linux, anche sotto Windows offrono ottime prestazioni.
L’installazione che affronteremo insieme riguarda un sistema su Windows XP ma è di fatto identico per tutti i sistemi >= Windows 2000.
Per le installazioni di mysql e apache essendo davvero elementari sarà molto breve:
- mysql
Consiglio di scaricare la versione 5.0.x disponibile per il download:
http://dev.mysql.com/downloads/mysql/5.0.html
Una volta lanciato l’installer è sufficiente o far fare configurazione standard a mysql (se si è inesperti) o in alternativa eseguire la configurazione guidata da cui è possibile fare un rapido tuning di mysql in base all’utilizzo che se ne vuole fare.
- apache
Per lavorare con php in ambiente Windows consiglio l’utilizzo di apache 2.0.x.
Link per scaricare Apache: http://httpd.apache.org/download.cgi
- php
Veniamo ora all’installazione (non difficile) di php come modulo di apache su sistema WAMP
Scaricare la versione 5.1.x da php.net:
http://www.php.net/downloads.php
Non ci resta ora che seguire pochi passi per configurare PHP:
1. Scompattare il file .zip appena scaricato in c:\php (es. ovviamente la directory scelta puà essere anche c:\programmi\php etc…)
2. Copiare il file presente in c:\programmi\php php.ini-dist in c:\windows o c:\winnt (a seconda del S.O.) e rinominarlo come php.ini
3. Andare nella directory di installazione di php e copiare il file php5ts.dll (se si installa php 4 il file si chiamerà ovviamente php4ts.dll) in c:\windows\system32
4. Inserire le seguenti righe di configurazione in httpd.conf (file di configurazione di apache) dopo i vari AddModule:
LoadModule php5_module c:/programmi/php/php5apache2.dll
AddType application/x-httpd-php .php
Andate sul vostro browser e digitando http://localhost vedrete apache che vi risponde.
Potete quindi testare php creando nella document root di apache un file info.php con la chiamata a phpinfo()
NOTE SU LIBRERIE mysql
Da un po’ di versioni di php è necessario abilitare le funzioni di mysql. Cià è possibile scommentando da C:\windows\php.ini la riga con l’estensione di php_mysql.dll
Copiare libmysql.dll in C:\windows\system32
Inoltre verificate di avere in php.ini il path di dove si trovano le estensioni configurato corrtetamente
Riavviare apache.
Sperando di essere stato di aiuto a qualcuno vi saluto,
Maxgrante
info[AT]massimo-caselli[DOT]com
Ciao a tutti,
dopo i due articoli scritti su mod_rewrite di apache vorrei trattare di come molti applicativi, tra cui wordpress (il sistema di blogging che utilizzo per questo blog) gestiscono il mod_rewriting in modo più stretto tra apache e php.
Fondamentalmente anzichè applicare regole specifiche come quelle trattate nei precedenti articoli es:
RewriteEngine On
….
….
RewriteRule ^([^/]+)/servizi/service.php?lang=$1 [L]
Utilizzano queste uniche regole:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
In pratica le regole che WordPress fa inserire nel file .htaccess provvedono a fare un check se il file o la directory richiesta esiste, in tal caso apache richiede la risorsa reale e presente fisicamente, altrimenti redireziona alla index.php di wordpress.
Questa pagina di fatto si occupa, in base a come è settato l’applicativo da admin (c’è un wizard molto comodo che vi allego, forse un po’ piccola…
)

In pratica si imposta come WordPress deve trattare e gestire gli URL. A quel punto è l’applicativo stesso che si occupa di fare il parsing della variabile $_SERVER['REQUEST_URI'] (almeno credo che usino questa, al massimo ne utilizzano una simile
) e di generare on the fly i link corretti.
Questo tipo di gestione da realizzare è molto più flessibile ma anche più complicata in quanto richiede un notevole sforzo di parsing degli indirizzi. Soluzione MOLTO valida per applicativi completi e liberamente scaricabili come WordPress ma poco utile per siti web custom.
Ciao a tutti,
Max
info[AT]massimo-caselli[DOT]com