Ogni tanto ho bisogno di avere un web server con PHP sulla mia chiave USB, così ho deciso di provare con Nginx, dato che ne ho sentito parlare molto bene ed è molto, molto leggero.
La prima soluzione che ho trovato si chiamava WNMP, cioè Windows Nginx MySQL PHP, però non mi piaceva anche perché rimetteva il suo copyright su istruzioni praticamente scaricate dal wiki di Nginx, così ho deciso di fare a modo mio.
Scaricare i pacchetti
Le istruzioni che dava lui sono già praticamente le stesse del wiki e le do anch’io, perciò riconosco che sono prese dalle pagine Install e php-fcgi on Windows del wiki di nginx.org e pertanto gli autori di questi step sono gli autori delle pagine del wiki.
Create una cartella sulla vostra chiavetta: il nome non è importante, ma meglio che il percorso sia breve e non contenga spazi.
Dentro a questa cartella create la cartella www. Dopo scaricate Nginx per windows ed estrate la cartella nginx-v...
qui, quindi rinominatela in nginx
.
Pensate che in meno di 2MB avete un server web! Comunque procediamo con il tutorial: adesso scarichiamo lo Zip di PHP 5 Non Thread Safe per Windows e scompattiamo l’archivio sempre nella cartella su cui stavamo lavorando, quindi rinominiamo la cartella php-v...
in php
.
È arrivato il momento di configurare Nginx: apriamo nginx/conf/nginx.conf
con un qualsiasi editor di testo.
Dove c’è scritto listen 80
cambiate 80 con 8008: in questo modo siete sicuri di non intralciare con altri web server presenti nel sistema (esempio IIS), tuttavia non è un passo obbligatorio. Ricordate però che se è una porta diversa dalla 80 dovrete inserirla nell’indirizzo: ad esempio, con la 8008, nel browser dovrete scrivere http://localhost:8008/
.
Dalla sezione location /
, rimuovete la direttiva root: la scriveremo fuori, precisamente nella linea sopra a location /
.
Come root dobbiamo mettere un percorso assoluto (a me con uno relativo aveva dato problemi con FastCGI): per esempio il mio computer vedeva la cartella www creata precedentemente in E:PortableNginxwww: allora ho scritto
root /Portable/Nginx/www;
Torniamo quindi alla sezione location /
: alla direttiva index
aggiungiamo anche index.php
.
Quindi spostiamoci sotto: decommentiamo la sezione location ~ .php$
(cioè togliamo gli #) e facciamola diventare così:
location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Bene, Nginx è pronto, ora tocca a PHP.
Spostiamoci nella cartella php: io vi consiglio di rinominare il file php.ini-development
in php.ini
, per altre configurazioni lascio decidere a voi. Per esempio io ho abilitato qualche estensione.
In questa guida ho deciso di non usare mysql perché attualmente non ho bisogno di averlo sempre con me.
Avviare il tutto
Non mi piaceva il sistema dei file BAT, così ho inventato un’altra soluzione che rilascio in pubblico dominio poiché fatta da me.
Per avviare il tutto ho creato uno script in AutoIt che avvia PHP in FastCGI e Nginx: basta posizionarlo nella cartella principale (quella con le sottocartelle nginx, php e www) e poi avviarlo con AutoIt.
Verrà creata un’icona nella barra di sistema: per fermare tutto basta che ci cliccate col tasto destro e cliccate Exit.
Se preferite (e penso proprio di sì), ho creato un exe dello script: wnp.exe.
Il tutto è un po’ spartano, però funziona bene.
2 commenti
Ciao Piero,
bella guida, davvero fatta bene, era quello che cercavo…
Vorrei segnalarti però che il file wnp.exe non è raggiungibile,
potresti fare un check? Inoltre vorrei fare in modo che diventasse un servizio con un semplice click, hai qualche dritta?
Grazie
Andrea
Ciao, grazie per i complimenti 😀
Ho corretto il link (quando l'avevo rinominato è saltato via il punto).
Tu intendi salvare proprio tra i servizi l'avvio di tutto o solo di nginx?
E ovviamente con il servizio, a meno di non disinstallarlo ogni volta, perderesti la possibilità di farlo diventare portable, comunque se sei sicuro di volerlo fare…
Purtroppo allo stato attuale non ho dritte da darti perché windows lo uso poco…
Mi pare c'entri il comando net, comunque provo a vedere su google.
Prova a vedere se questo link può essere d'aiuto: http://support.microsoft.com/kb/251192