Tutorial di Apache per principianti
Che cos'è Apache?
Apache è un notevole software applicativo. È l'applicazione server Web più utilizzata al mondo con una quota di oltre il 50% nel mercato dei server Web commerciali. Apache è l'applicazione server Web più utilizzata nei sistemi operativi simili a Unix, 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 creazione di strategie.
È un'applicazione server web modulare basata sui processi che crea un nuovo thread con ogni connessione simultanea. Supporta numerose funzionalità; molte di esse sono compilate come moduli separati ed estendono la sua funzionalità principale, e può 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 numerosi siti Web diversi.
Come installare Apache
Esistono numerosi modi per installare il pacchetto o l'applicazione. Ci sono elencati di seguito:
- Una delle caratteristiche di questo open l'applicazione Web di origine è che chiunque può creare un programma di installazione secondo il proprio ambiente. Ciò ha consentito a vari fornitori come Debian, Red Hat, FreeBSD, Suse ecc. di personalizzare la posizione dei file e la configurazione di Apache tenendo conto delle 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 crearlo e installarlo dal codice sorgente. L'installazione di Apache dal file sorgente è indipendente dalla piattaforma e 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 le proprie esigenze.
Tutti i moduli possono essere compilati come a 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 poiché rende molto semplice il compito di aggiungere/rimuovere/aggiornare i moduli dalla configurazione dei server.
Installa la piattaforma Apache:Linux
Su sistemi Red Hat o basati su RPM
Se si utilizza 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 tramite il Package Manager specifico del fornitore o creando direttamente il file RPM. dal tarball sorgente disponibile.
Puoi installare Apache tramite il Package Manager predefinito disponibile su tutte le distribuzioni basate su Red Hat come CentOs, Red Hat e Fedora.
[root@amsterdam ~]# yum install httpd
Il tarball sorgente di Apache può essere convertito in un file rpm utilizzando il seguente comando.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
È obbligatorio avere il pacchetto -devel installato sul tuo server per creare il file .rpm dal sorgente.
Dopo aver convertito il file sorgente in un programma di installazione rpm, è possibile utilizzare il seguente comando per installare Apache.
[root@amsterdam ~]# 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.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Installa Apache dal sorgente
L'installazione di Apache dal sorgente richiede l'installazione del pacchetto –devel 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.
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
Per vedere tutte le opzioni di configurazione disponibili per Apache, puoi utilizzare l'opzione ./configure –help. L'opzione di configurazione più comune è –prefix={nome directory di installazione}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
L'esempio sopra mostra la compilazione di Apache all'interno della directory /usr/local/apache con funzionalità DSO. L'opzione –enable-so può caricare i moduli richiesti su Apache in fase di esecuzione tramite il meccanismo DSO anziché richiedere una ricompilazione.
Una volta completata l'installazione, puoi navigare nella pagina predefinita del server web con il tuo browser preferito. Se il firewall è abilitato sul tuo server, devi creare un'eccezione per la porta 80 sul firewall del tuo sistema operativo. Puoi usare il seguente comando per aprire la porta 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
servizio iptables salvare
Puoi vedere l'impostazione predefinita Schermata di benvenuto di Apache2 esplorando l'indirizzo IP del tuo server.
Cos'è l'host virtuale?
Un server Web Apache può ospitare più siti Web sul file STESSO server. Non sono necessari computer server e software Apache separati per ciascun sito web. Ciò può essere ottenuto utilizzando il concetto di Host virtuale or VHost.
Qualsiasi dominio che desideri ospitare sul tuo server web avrà una voce separata nel file di configurazione di Apache.
Tipi di host virtuali Apache
- Host virtuale basato sul nome
- Host virtuale basato su indirizzo 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, devi impostare l'indirizzo IP sul quale riceverai le richieste Apache per tutti i siti web desiderati. Puoi farlo tramite la direttiva NameVirutalHost all'interno della configurazione di Apache, ad es File httpd.conf/apache2.conf.
Host virtuale Apache Esempio:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin [email protected] DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin [email protected] DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Puoi aggiungere tutti gli host virtuali, secondo le tue esigenze. Puoi controllare i tuoi file di configurazione web con:
[root@amsterdam ~]#httpd –t Syntax OK
Se il file di configurazione ha una sintassi errata, genererà un errore
[root@115 conf.d]# httpd -t Syntax 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 che più di un indirizzo IP sia configurato sul tuo server. Pertanto, il numero di vhost apache dipenderà dal numero di indirizzi IP configurati sul tuo server. Se il tuo server ha 10 indirizzi IP, puoi creare 10 host virtuali basati su IP.
Nel diagramma sopra, a due siti Web esempio1.com ed esempio2.com sono stati assegnati IP diversi e utilizzano hosting virtuale basato su IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin [email protected] DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin [email protected] DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Di cosa ha bisogno Apache per eseguire il file Php?
L'esecuzione di file Php sulle esigenze di Apache mod_php abilitato sul tuo server. Consente ad Apache di interpretare i file .Php. Dispone di 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 nella directory /etc/httpd/conf.d/. Puoi anche verificarlo con:
httpd -M | grep "php5_module"
L'output sarà simile a:
Gestori PHP in Apache
- mod_php
- CGI
- Fast CGI
- suPHP
mod_phpè il gestore PHP più vecchio, rende PHP parte di apache e non chiama alcun processo PHP esterno. Questo modulo è installato per impostazione predefinita in ogni repository di distribuzione Linux, quindi abilitare/disabilitare questo modulo è molto semplice.
Se si utilizza Fast CGI come gestore PHP, puoi impostare più versioni di PHP da utilizzare da diversi account sul tuo server.
FastCGI, ad es mod_fastcgi è un'estensione di mod_fcgid, mentre mod_fcgid è un'alternativa ad alte prestazioni di CGI, ad esempio mod_cgi . Avvia un numero sufficiente di istanze di CGI per gestire 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 file Ruby tramite FastCGI. È possibile utilizzare più versioni di Ruby con l'aiuto di mod_fcgid, ad esempio FastCGI.
Puoi anche installare Apache Passenger e configurare Apache per usarlo per servire pagine Ruby.
(Phusion Passenger noto anche come “passeggero" è un modulo server web gratuito progettato per integrarsi con Apache e Nginx)
Passaggi per installare mod_ruby sul tuo server –
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Come eseguire Ruby con Apache
Dobbiamo aggiungere il modulo mod_ruby alla configurazione di Apache, ovvero /etc/httpd/conf.d/ruby.conf, e aggiungere la seguente riga.
LoadModule ruby_module moduli/mod_ruby.so
Se desideri abilitare o disabilitare questi moduli, devi modificare il file di configurazione di Apache e commentare o decommentare questi moduli, se il server web è già compilato con questi moduli.
Come proteggere il server Web Apache
Proteggere il tuo server web è molto importante: significa consentire ad altri di vedere solo le informazioni desiderate, proteggere i tuoi dati e limitarne l'accesso.
Queste sono cose comuni che migliorano la sicurezza dei tuoi server web Apache.
1) Nascondere la versione di Apache e le informazioni sul sistema operativo:
Apache mostra la sua versione e il nome del sistema operativo in errori come mostrato nello screenshot seguente.
Un hacker può utilizzare queste informazioni per lanciare un attacco sfruttando le vulnerabilità pubblicamente disponibili nella particolare versione del server o del sistema operativo.
Per impedire al server web Apache di visualizzare queste informazioni, dobbiamo modificare
Opzione "firma del server" disponibile nel file di configurazione di Apache. Per impostazione predefinita, è "on", dobbiamo impostarlo "off".
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Abbiamo anche impostato "ServerTokens Prod" che dice al server web di restituire solo apache e di sopprimere la versione principale e secondaria del sistema operativo
Dopo aver modificato il file di configurazione, è necessario riavviare/ricaricare il server Web Apache per renderlo operativo.
service httpd restart
2) Disabilita l'elenco delle directory
Se la directory root dei documenti non dispone di un file indice, per impostazione predefinita il server Web Apache mostrerà tutto il contenuto della directory root dei documenti.
Questa funzionalità può essere disattivata per una directory specifica tramite la “direttiva opzioni” 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 file di configurazione di Apache –
[root@amsterdam ~]#httpd –M perl_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é difficilmente vengono utilizzati dai server web di produzione.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Una volta commentato il modulo, salva il file.
Riavviare i servizi Apache con il seguente comando.
/etc/init.d/httpd restart
4) Limitare l'accesso ai file al di fuori della directory principale del web
Se vuoi assicurarti che i file che si trovano all'esterno della directory root web non siano accessibili, devi assicurarti che la directory sia limitata con "Consenti" e "Opzione Nega" nel file di configurazione del tuo server web.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Una volta limitato l'accesso all'esterno della directory root web, non sarai in grado di accedere a nessun file situato in qualsiasi altra cartella sul tuo server web, otterrai il codice di ritorno 404.
5) Utilizzo di mod_evasive per confutare l'attacco DoS
Se vuoi proteggere il tuo server web dal Dos (cioè dal Denial of Service) devi abilitare il modulo mod_evasive. Si tratta di un modulo di terze parti che rileva l'attacco Dos e impedisce che l'attacco faccia tanti danni quanto farebbe se lasciato fare il suo corso. Potrebbe essere scaricato qui.
6) Utilizzo di mod_security per migliorare la sicurezza di Apache
Questo modulo funziona come un firewall per Apache e ti consente di monitorare il traffico in tempo reale. Impedisce inoltre al server Web attacchi di forza bruta. Il modulo mod_security potrebbe essere installato con il gestore pacchetti predefinito della tua distribuzione.
7) Limitare la dimensione della richiesta
Apache non prevede alcuna restrizione sulla dimensione totale della richiesta http che potrebbe portare ad un attacco DoS. Puoi limitare la dimensione della richiesta di una direttiva Apache "LimitRequestBody" con il tag directory. Il valore può essere impostato su un valore compreso tra 0 e 2 GB (ovvero 2147483647 byte) in base alle proprie esigenze.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Formato registro di Apache
I log di Apache forniscono informazioni dettagliate che aiutano a rilevare problemi comuni con il server.
Per creare log di accesso, mod_log_configmodule deve essere abilitato.
Tre direttive disponibili nel file di configurazione di Apache, ad es
- 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 dell'host virtuale in base ai parametri impostati.
<VirtualHost www.example.com> ServerAdmin [email protected] 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 formato registro Apache
- Formato registro comune
- Formato registro combinato.
Puoi abilitarli modificando il file di configurazione di Apache, ad esempio il file apache2.conf (Debian/ubuntu) o httpd.conf (sistemi basati su RPM)
Formato registro comune
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Log comune generato da Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Formato registro combinato
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Qui,
- %h è l'host remoto
- %l è l'identità dell'utente determinata da identd
- %u è il nome utente determinato dall'autenticazione HTTP
- %t è l'ora in cui il server ha terminato l'elaborazione della richiesta.
- %r è la riga di richiesta del client. (“OTTIENI/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 - - [06/Mar/2014:04:22:58 +0100] "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)"
Il registro personalizzato crea un file di registro separato per ciascun host virtuale sul tuo server. Deve essere specificato nella sezione host virtuale del file di configurazione.
Puoi vedere la configurazione dell'host virtuale menzionata di seguito, il registro generato sarà personalizzato per quell'host virtuale e il formato verrà combinato.
Configura il tuo primo Web Server di Produzione
1. Per avere un server web di produzione in esecuzione, è necessario un server web dedicato nodo (istanza fisica/virtuale o cloud) con Linux/Unix, Windows, MacOS ecc.
2. Il Web Server deve avere a connessione di rete diretta e indirizzo IP statico configurato su di esso.
3. Deve avere tutto moduli necessari per l'esecuzione delle pagine Web. Se un server web elabora pagine PHP, deve avere il modulo PHP abilitato.
- Deve anche avere un bene antivirus applicazione configurata e funzionante per proteggere il Web Server da attacchi di Malware o Virus. Hai anche bisogno di un meccanismo per update l'applicazione antivirus/antimalware configurata regolarmente senza alcun intervento manuale per trarne il massimo beneficio.
- Se hai centinaia di domini da ospitare sul tuo server web, devi implementarli limitazioni sulla quota del file system per ciascun dominio, numero di database che ciascun 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 il minimo privilegio utente in modo da non danneggiare file importanti e rompere l'intero server. Apache non fornisce alcuna funzionalità di questo tipo e necessita di diverse applicazioni di terze parti e della personalizzazione del sistema operativo per raggiungere questo obiettivo.
- Se stai aggiungendo a nuovo dominio sul tuo server web, è necessario modificare centinaia di file di configurazione per abilitare tutte le funzionalità per il dominio aggiunto.
- Se uno dei domini ospitati lo richiede diversa impostazione PHP rispetto al resto dei domini, l'implementazione di questa funzionalità nel server web Apache principale è molto complessa e richiede una notevole personalizzazione del server web.
- Un server Web di produzione necessita di a firewall per bloccare il traffico indesiderato che potrebbe causare un carico elevato sul tuo server. Implementazione IPTABLE rules con riga di comando è molto complesso. Richiede competenza nell'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 dei file, Domain Name System per domini parcheggiati. La gestione di tutte queste applicazioni su un sistema Linux/Unix richiede competenze sulle rispettive tecnologie.
Quindi, si può dire che gestire un server web per più domini è un compito molto complesso e richiede la modifica di centinaia di file di configurazione, personalizzando ogni applicazione per ottenere il risultato desiderato. La risoluzione di qualsiasi configurazione errata sarà molto difficile per i principianti.
La soluzione utilizza Cpanel o software simile
CPanel fornisce un modo grafico per gestire il tuo server web. È pensato per fornire servizi di hosting di massa facili da usare e configurare. cPanel ha ridotto le barriere tecniche all'ingresso nell'hosting e nella gestione del server web. Semplifica le attività complesse, fornisce molte interfacce web utili e facili da usare che eseguono comuni attività di amministrazione di sistema richieste per gestire un server web.
cPanel compila la propria versione del software.
Se devi ricompilare il tuo server web, ad esempio Apache, su una normale piattaforma Linux, devi selezionare/cercare manualmente il modulo richiesto. cPanel fornisce la funzionalità Easyapache che è un metodo di compilazione del server Web basato su script.
Non solo fornisce servizi web ma anche Mail, DNS, FTP e molti altri servizi richiesti per la tua applicazione web.
Un'attività che richiede competenza nell'hosting basato su Linux/Unix, come l'installazione di SSL, la ricompilazione di Apache con diversi moduli PHP, l'aggiornamento della sicurezza Web, la configurazione di regole IPTABLE efficaci, l'aggiunta di utenti FTP, la creazione di account di posta per ciascun dominio, la scansione della radice dei documenti con un antivirus e la creazione di database, sono facili da completare con cPanel.
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 nell'archivio di backup. Se stai eseguendo il backup del tuo dominio, cPanel creerà un file tar che conterrà la cartella radice del documento, gli account e-mail e le mail, gli account ftp, i database, i record DNS e altre applicazioni.
Fornisce inoltre una documentazione approfondita e dispone di una vasta comunità di utenti in cui puoi discutere e ottenere soluzioni ai tuoi problemi.
Quindi, si può dire questo cPanel è la migliore applicazione per gestire il tuo server web con le funzionalità richieste. Ti fornisce un'interfaccia facile da usare per gestire il tuo dominio e un meccanismo per evitare la complessità della gestione del server web principale.
Esistono molti prodotti concorrenti di cPanel come Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel ecc.