Tutorial Apache per principianti
Che cos’è Apache?
Apache è un notevole pezzo di software applicativo. È l’applicazione Web Server più utilizzata al mondo con una quota superiore al 50% nel mercato dei server Web commerciali. Apache è l’applicazione Web Server più utilizzata nei sistemi operativi Unix-like, ma può essere utilizzata su quasi tutte le piattaforme come Windows, OS X, OS/2, ecc. La parola, Apache, è stata presa dal nome della tribù dei nativi americani ‘Apache’, famosa per le sue abilità nella guerra e nella strategia.
È un’applicazione web server modulare basata su processi che crea un nuovo thread ad ogni connessione simultanea. Supporta una serie di funzionalità; molte di esse sono compilate come moduli separati ed estendono le sue funzionalità di base e possono fornire tutto, dal supporto del linguaggio di programmazione lato server al meccanismo di autenticazione. L’hosting virtuale è una di queste funzionalità che consente a un singolo server Web Apache di servire un numero di siti Web diversi.
Come installare Apache
Esistono numerosi modi per installare il pacchetto o l’applicazione. Ci sono arruolati di seguito –
- Una delle caratteristiche di questa applicazione web open source è che chiunque può fare installer secondo il proprio ambiente. Questo ha permesso a vari vendor come Debian, Red Hat, FreeBSD, Suse ecc. per personalizzare la posizione del file e la configurazione di Apache tenendo conto di altre applicazioni installate e del sistema operativo di base.
- Oltre a installarlo da un programma di installazione basato sul fornitore, c’è sempre la possibilità di costruirlo e installarlo dal codice sorgente. L’installazione di Apache dal file sorgente è indipendente dalla piattaforma & funziona per tutti i sistemi operativi.
Il server web apache è un’applicazione modulare in cui l’amministratore può scegliere la funzionalità richiesta e installare diversi moduli secondo il suo requisito.
Tutti i moduli possono essere compilati come oggetti condivisi dinamici (DSO è un file oggetto che può essere condiviso da più app durante l’esecuzione) che esiste separatamente dal file apache principale. L’approccio DSO è altamente raccomandato, rende molto semplice il compito di aggiungere/rimuovere/aggiornare i moduli dalla configurazione dei server.
Installa Apache: Piattaforma Linux
Su sistemi basati su Red Hat o rpm
Se stai usando una distribuzione Linux basata su rpm (RedHat Package Manager è un’utilità per l’installazione di applicazioni su sistemi Linux), ad esempio Red Hat, Fedora, CentOS, Suse, è possibile installare questa applicazione da uno specifico gestore di pacchetti fornitore o direttamente la costruzione del file rpm dal tarball sorgente disponibile.
È possibile installare Apache tramite il gestore di pacchetti predefinito disponibile su tutte le distribuzioni basate su Red Hat come CentOS, Red Hat e Fedora.
# yum install httpd
Il tarball sorgente apache può essere convertito in un file rpm usando il seguente comando.
# rpmbuild -tb httpd-2.4.x.tar.bz2
È obbligatorio avere il pacchetto-devel installato sul server per la creazione .file rpm dalla sorgente.
Una volta convertito il file sorgente in un programma di installazione rpm, è possibile utilizzare il seguente comando per installare Apache.
# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Dopo l’installazione il server non si avvia automaticamente, per avviare il servizio, è necessario utilizzare uno dei seguenti comandi su Fedora, CentOS o Red Hat.
# /usr/sbin/apachectl start# service httpd start# /etc/init.d/httpd start
Installa Apache dal sorgente
L’installazione di apache dal sorgente richiede che il pacchetto –devel sia installato sul server. .Puoi trovare l’ultima versione disponibile di Apache, puoi scaricarla qui . Una volta scaricato il file sorgente, spostalo nella cartella /usr/local/src.
cd /usr/local/src gzip -d httpd-2.2.26.tar.gz tar xvf httpd-2.2.26.tar httpd-2.2.26
Per vedere tutte le opzioni di configurazione disponibili per Apache, è possibile utilizzare .opzione / configure-help. L’opzione di configurazione più comune è-prefix={install directory name}.
./configure --help./configure –prefix=/usr/local/apache –enable-so make make install
L’esempio precedente mostra la compilazione di Apache all’interno della directory/usr/local / apache con la funzionalità DSO. L’opzione-enable-so, può caricare i moduli richiesti su apache in fase di esecuzione tramite il meccanismo DSO piuttosto che richiedere una ricompilazione.
Una volta completata l’installazione, è possibile sfogliare la pagina predefinita dei server Web con il browser preferito. Se il firewall è abilitato sul server, è necessario fare un’eccezione per la porta 80 sul firewall del sistema operativo. È possibile utilizzare il seguente comando per aprire la porta 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
servizio iptables save
È possibile visualizzare la schermata di benvenuto di default di Apache2 sfogliando l’indirizzo IP del server.
Che cos’è l’host virtuale?
Un server web Apache può ospitare più siti web sullo STESSO server. Non è necessario macchina server separato e software Apache per ogni sito web. Ciò può essere ottenuto utilizzando il concetto di host virtuale o VHost.
Qualsiasi dominio che si desidera ospitare sul server Web avrà una voce separata nel file di configurazione di Apache.
Tipi di Apache Virtualhost
- Host virtuale basato sul nome
- Host virtuale basato su indirizzi o IP e.
Host virtuale basato sul nome
L’hosting virtuale basato sul nome viene utilizzato per ospitare più siti virtuali su un singolo indirizzo IP.
Per configurare l’hosting virtuale basato sul nome, è necessario impostare l’indirizzo IP su cui si riceveranno le richieste Apache per tutti i siti web desiderati. Puoi farlo con la direttiva NameVirutalHost all’interno della configurazione di Apache, ad esempio httpd.conf / apache2.file conf.
Esempio di host virtuale Apache:
NameVirtualHost *:80<VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
È possibile aggiungere il maggior numero di host virtuali, secondo il vostro requisito. È possibile controllare i file di configurazione web con:
#httpd –tSyntax OK
Se il file di configurazione ha una sintassi errata, genererà un errore
# httpd -tSyntax error on line 978 of /etc/httpd/conf/httpd.conf:Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Host virtuale basato su IP
Per configurare l’hosting virtuale basato su IP, è necessario più di un indirizzo IP configurato sul server. Quindi, il numero di vhost apache dipenderà danumero di indirizzo IP configurato sul tuo server. Se il server dispone di 10 indirizzi IP, è possibile creare 10 host virtuali basati su IP.
Nel diagramma sopra due siti web example1.com e example2.com sono stati assegnati diversi IP e utilizzano hosting virtuale basato su IP.
Listen 192.168.0.100:80<VirtualHost 192.168.10.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.10.109:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
Di cosa Apache ha bisogno per eseguire il file Php?
L’esecuzione di file Php su Apache richiede mod_php abilitato sul tuo server. Permette ad Apache di interpretare .File Php. Ha gestori Php che interpretano il codice Php in apache e inviano HTML al tuo server web.
Se mod_php è abilitato sul tuo server, avrai un file chiamato php.conf in / etc / httpd / conf.d / directory. Puoi anche controllarlo con:
httpd -M | grep "php5_module"
L’output sarà simile a:
Php gestori di Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_phpis la più antica PHP gestore, si rende PHP parte di apache e non chiamare qualsiasi processo PHP esterno. Questo modulo è installato di default in ogni repository di distribuzione Linux, quindi abilitare / disabilitare questo modulo è molto semplice.
Se si utilizza FastCGI come gestore PHP, è possibile impostare più versioni di PHP da utilizzare da diversi account sul server.
FastCGI cioè mod_fastcgi è un’estensione di mod_fcgid, dove come mod_fcgid è un’alternativa ad alte prestazioni di CGI cioè mod_cgi . Avvia un numero sufficiente di istanze di CGI per gestire le richieste Web simultanee. Utilizza anche suexec per supportare diversi utenti con le proprie istanze di PHP e migliora la sicurezza web.
L’esecuzione di file ruby su Apache richiede che mod_ruby sia abilitato. Apache può anche gestire i file ruby tramite FastCGI. È possibile utilizzare più versioni di ruby con l’aiuto di mod_fcgid cioè FastCGI.
Puoi anche installare apache passenger e configurare Apache per usarlo per servire pagine ruby.
(Phusion Passenger noto anche come “passeggero” è una libera modulo server web che è stato progettato per l’integrazione con Apache e Nginx )
Procedura per installare mod_ruby del server
cd /tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1makemake install
Come eseguire Rubino con Apache
Dobbiamo aggiungere il mod_ruby modulo per la configurazione di Apache, cioè /etc/httpd/conf.d / rubino.conf e aggiungere la seguente riga.
LoadModule ruby_module modules / mod_ruby.quindi
Se si desidera abilitare o disabilitare questi moduli, è necessario modificare il file di configurazione di Apache e commentare o rimuovere il commento di questi moduli, se il server web è già compilato con questi moduli.
Come Proteggere il Server Web Apache
la Protezione del server web è molto importante, significa permettere ad altri di vedere solo l’informazione & protezione dei dati e la limitazione dell’accesso.
Queste sono cose comuni che migliorano la sicurezza dei server Web Apache.
1) Nascondere la versione di Apache e le informazioni sul sistema operativo:
Apache visualizza la sua versione e il nome del sistema operativo in errori come mostrato nello screenshot qui sotto.
Un hacker può utilizzare queste informazioni per lanciare un attacco utilizzando le vulnerabilità disponibili pubblicamente nella particolare versione del server o del sistema operativo.
Per evitare che Apache webserverfromdisplaying queste informazioni, dobbiamo modificare
“firma del server” opzione disponibile nel file di configurazione di Apache. Per impostazione predefinita, è “on”, dobbiamo impostarlo”off”.
vim /etc/httpd/conf/httpd.conf
ServerSignature OffServerTokens Prod
Abbiamo anche impostato “ServerTokens Prod” che dice al server web di restituire solo apache e sopprimere la versione maggiore e minore del sistema operativo
Dopo aver modificato il file di configurazione, è necessario riavviare / ricaricare il server web apache per renderlo efficace.
service httpd restart
2) Disabilitare l’Elenco Directory
Se la directory root del documento non dispone di un file di indice, per impostazione predefinita, il server web apache mostra tutto il contenuto della directory principale del documento.
Questa funzione potrebbe essere disattivata per una directory specifica tramite “options directive” disponibile nel file di configurazione di Apache.
<Directory /var/www/html> Options -Indexes</Directory>
3) Disabilitare i moduli non necessari
è buona norma disabilitare tutti i moduli non necessari che non sono in uso. Puoi vedere l’elenco dei moduli abilitati disponibili nel tuo file di configurazione apache-
#httpd –Mperl_module (shared)php5_module (shared)proxy_ajp_module (shared)python_module (shared)ssl_module (shared)
Molti dei moduli elencati possono essere disabilitati come mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, poiché sono difficilmente utilizzati da qualsiasi server web di produzione.
vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules/mod_auth_digest.so
Una volta commentato il modulo, salvare il file.
Riavvia i servizi Apache con il seguente comando.
/etc/init.d/httpd restart
4) Limitare l’accesso ai file al di fuori della directory root web
Se si desidera assicurarsi che i file che si trovano al di fuori della directory root web non siano accessibili, è necessario assicurarsi che la directory sia limitata con “Consenti” e “Nega opzione” nel file di configurazione del server Web.
<Directory/>Options NoneAllowOverride NoneOrder deny,allowDeny from all</Directory>
Una volta che si limita l’accesso al di fuori del web root directoy, non sarà in grado di accedere a qualsiasi file che si trova su qualsiasi altra cartella sul server web, si otterrà 404 codice di ritorno.
5) Utilizzando mod_evasive per confutare l’attacco DoS
Se si desidera proteggere il server web da Dos (cioè Denial of Service) è necessario abilitare il modulo mod_evasive. Si tratta di un modulo di terze parti che rileva attacco Dos e impedisce l’attacco di fare tanto danno come farebbe se lasciato per eseguire il suo corso. Potrebbe essere scaricato qui.
Scarica il file sopra
6) Utilizzando mod_security per migliorare la sicurezza apache
Questo modulo funziona come un firewall per Apache e consente di monitorare il traffico in tempo reale. Inoltre impedisce al server web di attacchi di forza bruta. Il modulo mod_security potrebbe essere installato con il gestore di pacchetti predefinito della distribuzione.
7) Limitare la dimensione della richiesta
Apache non ha alcuna restrizione sulla dimensione totale della richiesta http che potrebbe portare ad un attacco DoS. È possibile limitare la dimensione della richiesta di una direttiva Apache “LimitRequestBody” con il tag directory. Il valore potrebbe essere impostato qualsiasi cosa da 0 a 2 GB (cioè 2147483647 byte) secondo il vostro requisito.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000</Directory>
Apache Log Format
Apache logs forniscono informazioni dettagliate che aiutano a rilevare problemi comuni con il server.
Per creare i log di accesso, mod_log_configmodule deve essere abilitato.
Tre direttive disponibili nel file di configurazione di apache, ad esempio
- TransferLog: Creazione di un file di registro.
- LogFormat: specifica di un formato personalizzato.
- CustomLog: creazione e formattazione di un file di registro.
La direttiva TransferLog è disponibile nel file di configurazione di Apache e ruota i file di registro degli host virtuali secondo i parametri impostati.
<VirtualHost www.example.com> ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined</VirtualHost>
Due tipi di Apache Log Format
- Common Log Format
- Combined Log Format.
È possibile abilitarli modificando il file di configurazione di Apache, ad esempio apache2.conf (Debian / ubuntu) o httpd.conf (sistemi basati su rpm) file
Common Log Format
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common
Common Log generato da Apache
client denied by server configuration: /export/home/live/ap/htdocs/test
Combinato Formato di Log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined
Qui
- %h è l’host remoto
- %l è l’identità dell’utente, determinata da identd
- %u è il nome utente determinato da autenticazione HTTP
- %t è il tempo in cui il server terminata l’elaborazione della richiesta.
- %r è la riga di richiesta dal client. (“GET / HTTP / 1.0”)
- %>s è il codice di stato inviato dal server al client (500, 404 ecc.)
- %b è la dimensione della risposta al client (in byte)
- Referer è la pagina collegata a questo URL.
- User-agent è la stringa di identificazione del browser.
Log combinato generato da Apache:
199.187.122.91 - - "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Log personalizzato crea file di log separati per ogni host virtuale sul server. Deve essere specificato nella sezione host virtuale del file di configurazione.
Puoi vedere sotto la configurazione dell’host virtuale menzionata, il log generato sarà personalizzato per quell’host virtuale e il formato verrà combinato.
Configura il tuo primo Web Sever di produzione
1. Per avere un server Web di produzione in esecuzione, è necessario un nodo dedicato (istanza fisica/virtuale o cloud) che esegua Linux/Unix, Windows, macOS ecc.
2. Il server Web deve avere una connessione di rete diretta e un indirizzo staticIP configurato su di esso.
3. Ha bisogno di avere tutti i moduli necessari per l’esecuzione di pagine web. Se un server web elabora pagine PHP, deve avere il modulo PHP abilitato.
- Ha anche bisogno di avere una buona applicazione Antivirus configurato e in esecuzione per proteggere il server Web da attacchi di malware o virus. È inoltre necessario meccanismo per aggiornare l’applicazione antivirus/anti malware configurato su base regolare, senza alcun intervento manuale, al fine di ottenere il massimo beneficio da loro.
- Se hai centinaia di domini da ospitare sul tuo server web, devi implementare limitazioni sulla quota del file system per ogni dominio, numero di database che ogni dominio può creare, numero di account di posta elettronica per dominio, ecc.
- Se il tuo server web è stato configurato per servizi di hosting condiviso, gli utenti sul tuo server web devono essere limitati. Un utente di hosting condiviso dovrebbe avere meno privilegi utente in modo da non danneggiare i file importanti & rompere l’intero server. Apache non fornisce tali funzionalità e ha bisogno di diverse applicazioni di terze parti, la personalizzazione del sistema operativo per raggiungere questo obiettivo.
- Se si aggiunge un nuovo dominio sul server web, è necessario modificare centinaia di file di configurazione per abilitare tutte le funzionalità per il dominio aggiunto.
- Se uno dei domini ospitati richiede impostazioni PHP diverse rispetto al resto dei domini, l’implementazione di questo in core Apache web server è molto complessa e richiede la personalizzazione del server Web in larga misura.
- Un server Web di produzione ha bisogno di un firewall per bloccare il traffico indesiderato che potrebbe causare un carico elevato sul server. L’implementazione delle regole IPTABLE con la riga di comando è molto complessa. Ha bisogno di competenze dell’ambiente Linux/Unix di base per scrivere regole firewall efficaci per bloccare il traffico indesiderato. IPTABLE è basato sul modulo netfilter; è un firewall a livello di sistema operativo che consente a un amministratore di creare regole per il traffico in entrata/uscita sul server.
- Un server web di produzione richiede diverse applicazioni come e-mail, FTP per il caricamento di file, Domain Name System per i domini parcheggiati. La gestione di tutte queste applicazioni su un sistema Linux/Unix richiede esperienza sulle rispettive tecnologie.
Quindi, si può dire che la gestione di un server web per più domini è un’attività molto complessa e richiede la modifica di centinaia di file di configurazione, personalizzando ogni applicazione per soddisfare il risultato desiderato. La risoluzione dei problemi di qualsiasi configurazione miss sarà molto difficile per i principianti.
La soluzione che utilizza Cpanel o software simile
Cpanel fornisce un modo grafico di gestire il server web. Ha lo scopo di fornire servizi di hosting di massa che è facile da usare e configurare. cPanel ha ridotto le barriere tecniche all’ingresso nella gestione di hosting e server web. Rende compito complesso più facile, fornisce molte interfacce web utili e facili da usare che eseguono compiti comuni di amministrazione del sistema necessari per far funzionare un server web.
cPanel compila la propria versione del software.
Se devi ricompilare il tuo server web, ad esempio apache sulla normale piattaforma Linux, devi selezionare/cercare manualmente il modulo richiesto. cPanel fornisce funzionalità Easyapache che è un metodo di compilazione server Web basato su script.
Non solo fornisce servizi web, ma anche posta, DNS, FTP e molti altri servizi necessari per l’applicazione web.
Un compito che ha bisogno di esperienza su core Linux / Unix basato hosting come l’installazione di SSLs, ricompilando Apache con diversi moduli PHP, l’aggiornamento di sicurezza Web, la configurazione di regole efficaci IPTABLE, l’aggiunta di utenti ftp, la creazione di account di posta per ogni dominio, la scansione del documento root con antivirus e la creazione di database
Fornisce molti script che correggono, installano e risolvono le attività amministrative comuni.
Fornisce una funzionalità di backup e ripristino eliminando la necessità di copiare manualmente i file nella memoria di backup. Se si esegue il backup del dominio, cPanel creerà un file tar che conterrà cartella principale del documento, account e-mail e mail, account ftp, database, record DNS e altre applicazioni.
Fornisce anche una solida documentazione, e ha una grande comunità di utenti in cui è possibile discutere e ottenere la soluzione dei propri problemi.
Quindi, si può dire che cPanel è una migliore applicazione per la gestione del server web con le caratteristiche richieste. Ti fornisce un’interfaccia facile da usare per la gestione del tuo dominio e un meccanismo per evitare la complessità della gestione del server Web principale.
Ci sono molti prodotti concorrenti a cPanel come Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel ecc.