Nginx - Compilare e installare Nginx e i moduli base
Nginx offre diverse opzioni in fase di compilazione; compilare al meglio Nginx e scegliere solo le funzionalità che interessano possono rendere Nginx ancora più scattante.
Alcune distribuzioni Linux e di varianti BSD contengono Nginx fra i propri repository di pacchetti pronti da installare. Fate attenzione dal momento che molto spesso questi pacchetti contengono versioni datate di Nginx. Compilare Nginx dai sorgenti è sicuramente il procedimento raccomandato dal momento che si ha la possibilità di scegliere i moduli da attivare ed è un processo relativamente semplice.
Procedura di compilazione Nginx
- Scaricare il codice sorgente
- Decomprimere il sorgente con il comando
tar -xzvf nginx-0.5.30.tar.gz - Posizionarsi nella cartella appena estratta con
cd nginx-0.5.30/e lanciare il comando./configure; eventualmente scegliere i parametri di compilazione dalla lista riportata di seguito ed aggiungerli in coda al comando (es../configure --http-log-path=/dev/telegrafo) - Procedere alla compilazione e alla installazione del pacchetto con il comando
make && make install --prefix=<path>- Il percorso relativo verso il quale tutti i path di Nginx convergono; se non specificato, viene utilizzato il valore preimpostato /usr/local/nginx.--sbin-path=<path>- Il percorso per gli eseguibili Nginx; se non specificato viene utilizzato il valore preimpostato <prefix>/sbin/nginx.--conf-path=<path>- Il percorso utilizzato per la lettura dei file di configurazione di Nginx a meno che non venga specificato il parametro –c da riga di comando; se non specificato, viene utilizzato il valore predefinito <prefix>/conf/nginx.conf.--pid-path=<path>- Il percorso nel quale verrà creato il file PID; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/nginx.pid.--lock-path=<path>- Il percorso nel quale viene creato il file nginx.lock; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/nginx.lock.--error-log-path=<path>- Il percorso del file di log degli errori, se non specificato tramite il parametro “error_log” nel file nginx.conf; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/error.log.--http-log-path=<path>- Il percorso del file di log degli accessi, se non specificato tramite il parametro “access_log” nel file nginx.conf; se non specificato, viene utilizzato il valore predefinito <prefix>/logs/access.log.--user=<user>- L’utente proprietario del processo Nginx, se non altrimenti specificato nel file nginx.conf tramite il parametro “user; se non specificato, viene utilizzato il valore predefinito “nobody”.--group=<group>- Il gruppo utilizzato di default per mandare in esecuzione Nginx se non altrimenti specificato nel file di configurazione nginx.conf.--builddir=DIR– Imposta la cartella utilizzata per il build di Nginx--with-rtsig_module – Abilita il modulo rtsi--with-select_module --without-select_module– Abilita o disabilita il modulo select. Questo modulo è abilitato di default se configure non ha individuato un metodo più appropriato quale kqueue, epoll, rtsig o /dev/poll.- –with-poll_module –without-poll_module – Abilita o disabilita il modulo pool. Questo modulo è abilitato di default se configure non ha individuato un metodo più appropriato quale kqueue, epoll, rtsig o /dev/.
--with-http_ssl_module– Abilita il modulo ngx_http_ssl_module. Abilita il supporto SSL e la possibilità di gestire richieste https. Richiede OpenSSL (libssl-dev su Debian).--with-http_realip_module- Abilita ngx_http_realip_module--with-http_addition_module- Abilita ngx_http_addition_module--with-http_sub_module- Abilita ngx_http_sub_module--with-http_dav_module- Abilita ngx_http_dav_module--with-http_flv_module- Abilita ngx_http_flv_module--with-http_stub_status_module- Abilita la pagina “server status”--without-http_charset_module- Disabilita ngx_http_charset_module--without-http_gzip_module- Disabilita ngx_http_gzip_module. Richiede zlib per il suo corretto funzionamento.--without-http_ssi_module- Disabilita ngx_http_ssi_module--without-http_userid_module- Disabilita ngx_http_userid_module--without-http_access_module- Disabilita ngx_http_access_module--without-http_auth_basic_module- Disabilita ngx_http_auth_basic_module--without-http_autoindex_module- Disabilita ngx_http_autoindex_module--without-http_geo_module- Disabilita ngx_http_geo_module--without-http_map_module- Disabilita ngx_http_map_module--without-http_referer_module- Disabilita ngx_http_referer_module--without-http_rewrite_module- Disabilita ngx_http_rewrite_module. Richiede PCRE.--without-http_proxy_module- Disabilita ngx_http_proxy_module--without-http_fastcgi_module- Disabilita ngx_http_fastcgi_module--without-http_memcached_module- Disabilita ngx_http_memcached_module--without-http_limit_zone_module- Disabilita ngx_http_limit_zone_module--without-http_empty_gif_module- Disabilita ngx_http_empty_gif_module--without-http_browser_module- Disabilita ngx_http_browser_module--without-http_upstream_ip_hash_module- Disabilita ngx_http_upstream_ip_hash_module--with-http_perl_module- Abilita ngx_http_perl_module--with-perl_modules_path=PATH- Imposta il percorso dei moduli Perl--with-perl=PATH– Importa il percorso per i file binari Perl--http-client-body-temp-path=PATH– Set path to the http client request body temporary files. If not set, defaults to <prefix>/client_body_temp--http-proxy-temp-path=PATH– Imposta il percorso per il file temporanei del proxy http; se non specificato, viene impostato al valore di default <prefix>/proxy_temp--http-fastcgi-temp-path=PATH– Imposta il percorso per i file temporanei fastcgi; se non specificato, viene impostato al valore di default <prefix>/fastcgi_temp--without-http– Disabilita il server HTTP--with-mail– Abilita il modulo di proxy IMAP4/POP3/SMT--with-mail_ssl_module- Abilita ngx_mail_ssl_module--with-cc=PATH– Imposta il percorso del compilatore C--with-cpp=PATH- Imposta il percorso del preprocessore--with-cc-opt=OPTIONS– Parametri addizionali che saranno aggiunti alla variabile CFLAGS. Se si utilizza la libreria PCRE in FreeBSD, è necessario indicar--with-cc-opt="-I /usr/local/include"- Se si utilizza select() ed è necessario incrementare il numero dei descrittori dei file, deve essere specificato: –with-cc-opt=”-D FD_SETSIZE=2048″.--with-ld-opt=OPTIONS– Parametri addizionali passati al linker. Se si utilizza la libreria PCRE in FreeBSD, è necessario indicare –with-ld-opt=”-L /usr/local/lib”.--with-cpu-opt=CPU– Compilazione per una specifica CPU; i valori consentiti: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64--without-pcre- Disabilita l’utilizzo delle librerie PCRE. Disabilita anche il modulo http rewrite.--with-pcre=DIR– Imposta il percorso dei sorgenti della libreria PCRE.--with-pcre-opt=OPTIONS– Imposta opzioni addizionali per la compilazione di PCRE.--with-md5=DIR– Impostazione del percorso per i sorgenti della libreria md5.--with-md5-opt=OPTIONS– Imposta opzioni addizionali per la compilazione della libreria md5.--with-md5-asm– Utilizza il sorgente asm per la libreria md5.--with-sha1=DIR– Imposta il percorso dei sorgenti per la libreria sha1.--with-sha1-opt=OPTIONS– Imposta opzioni addizionali per la compilazione della libreria sha1.--with-sha1-asm– Utilizza il sorgente asm per la libreria sha1.--with-zlib=DIR– Imposta il percorso del sorgente della libreria zlib.--with-zlib-opt=OPTIONS– Imposta opzioni addizionali per la compilazione della libreria zlib.--with-zlib-asm=CPU– Utilizza i sorgenti assembler per la libreria zlib, ottimizzata per una specifica CPU; i parametri validi sono: pentium, pentiumpro--with-openssl=DIR– Imposta il percorso per i sorgenti della libreria OpenSSL--with-openssl-opt=OPTIONS– Imposta parametri addizionali per la compilazione della libreria OpenSSL--with-debug– Abilita il logging a livello di debug--add-module=PATH– Aggiunge i moduli sviluppati da terze parti trovati nella directory specificata dal valore del pametro PATH
-
Nel caso il comando
./configure non sia riuscito a trovare le librerie PCRE, apparirà un messaggio di questo tipo:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=path option.
Dovrà quindi essere necessario indicare la posizione delle librerie, as esempio
./configure --with-pcre=/usr/lib/pcre; se invece le librerie non sono installate sul sistema, è sufficiente scaricare il pacchetto, decomprimerlo ed infine indicare la cartella contente la libreira con il parametro --with-pcre=.
Nginx e PCRE
Nginx utilizza la libreria PCRE (Perl Compatible Regular Expressions) ed è quindi necessario che sia presenta all’interno del sistema in fase di compilazione. Se il comando ./configure non riesce a trovarla, è possibile indicare la cartella in cui sono presenti i sorgenti PCRE con il parametro --with-pcre=mia/cartella/pcre; nel caso non si trovino le librerie o siano da installare, è possibile procedere al download della libreria dal sito ufficiale, decomprimere il pacchetto in una cartella dedicata e quindi lanciare il comando ./configure --with-pcre=/usr/lib/pcre
Parametri di configurazione Nginx
A differenza di Apache, Nginx permette la scelta dei moduli da attivare esclusivamente in fase di compilazione; sempre in fase di compilazione è possibile specificare alcuni parametri che potranno essere cambiati dopo la fase di compilazione intervenendo nel file nginx.conf.
configure supporta le seguenti opzioni:
Le opzioni possono variare fra le differenti versioni; meglio dare un occhio a ./configure –help per la lista dei parametri da utilizzare per la versione in uso.
Esempio (da riportare su una sola riga):
./configure \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=../pcre-4.4 \
--with-zlib=../zlib-1.1.3
Esempio su Ubuntu / Debian con libgcrypt11-dev, libpcre3-dev e libssl-dev installati (scegliere –with-md5 OPPURE –with-sha1, ma non entrambi; su Debian e Ubuntu dovrebbero puntare a /usr/lib)
./configure --with-openssl=/usr/lib/ssl/ --with-md5=/usr/lib
Risorse esterne