Tutorial di Apache per principianti

Sommario

Cos'è Apache?

Apache è un software applicativo straordinario. È l'applicazione Web Server più utilizzata al mondo con oltre il 50% di quota 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 del Native Tribù americana "Apache", famosa per le sue abilità nella guerra e nella creazione di strategie.

È un'applicazione server Web modulare basata su processi che crea un nuovo thread con ogni connessione simultanea. Supporta una serie di funzioni; molti di essi sono compilati come moduli separati ed estendono le sue funzionalità di base e possono fornire qualsiasi cosa, 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 -

  1. Una delle caratteristiche di questa applicazione web open source è che chiunque può creare un programma di installazione secondo il proprio ambiente. Ciò ha permesso 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.
  2. 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 è una piattaforma indipendente 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 sue esigenze.

Tutti i moduli possono essere compilati come oggetti condivisi dinamici (DSO è un file oggetto che potrebbe 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 utilizzando 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, puoi installare questa applicazione da uno specifico gestore di pacchetti o compilando direttamente il file rpm dal tarball dei sorgenti disponibili.

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 installa httpd

Il tarball dei sorgenti 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 server per creare il file .rpm dall'origine.

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, devi usare uno dei seguenti comandi su Fedora, CentOs o Red Hat.

[root @ amsterdam ~] # / usr / sbin / apachectl start[root @ amsterdam ~] # avvio del servizio httpd[root @ amsterdam ~] # /etc/init.d/httpd start

Installa Apache dall'origine

L'installazione di apache dai sorgenti richiede l'installazione del pacchetto -devel sul tuo 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 usare l'opzione ./configure -help. L'opzione di configurazione più comune è -prefix = {install directory name}.

[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 nella 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, puoi navigare nella pagina predefinita del server web con il tuo 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 ACCETTA

servizio iptables save

È possibile visualizzare la schermata di benvenuto predefinita di Apache2 sfogliando l'indirizzo IP del server.

Cos'è l'host virtuale?

Un server Web Apache può ospitare più siti Web sullo STESSO server. Non è necessario un computer server separato e un software Apache per ogni sito Web. Ciò può essere ottenuto utilizzando il concetto di host virtuale o VHost.

Qualsiasi dominio che desideri ospitare sul tuo server web avrà una voce separata nel file di configurazione di Apache.

Tipi di Apache Virtualhost

  1. Host virtuale basato sul nome
  2. 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 unico 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 tramite la direttiva NameVirutalHost all'interno della configurazione di apache, cioè il file httpd.conf / apache2.conf.

Esempio di host virtuale Apache:

NameVirtualHost *: 80ServerAdmin Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.DocumentRoot /var/www/html/example1.comServerName www.example1.comServerAdmin Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

Puoi aggiungere tutti gli host virtuali secondo le tue esigenze. Puoi controllare i tuoi file di configurazione web con:

[root @ amsterdam ~] #httpd -tSintassi OK

Se il file di configurazione ha una sintassi errata, genererà un errore

[root @ 115 conf.d] # httpd -tErrore di sintassi sulla riga 978 di /etc/httpd/conf/httpd.conf:Comando non valido '*', forse scritto in modo errato o definito da un modulo non incluso nella configurazione del server

Host virtuale basato su IP

Per configurare l'hosting virtuale basato su IP, è necessario configurare più di un indirizzo IP sul server. Quindi, 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 example1.com ed example2.com sono stati assegnati IP diversi e utilizzano un hosting virtuale basato su IP.

Ascolta 192.168.0.100:80ServerAdmin Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.DocumentRoot /var/www/html/example1.comServerName www.example1.comServerAdmin Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

Di cosa ha bisogno Apache per eseguire il file Php?

L'esecuzione di file Php su Apache richiede che mod_php sia abilitato sul tuo server. Permette ad Apache di interpretare i 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 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
  • FastCGI
  • suPHP

mod_php è il più vecchio gestore PHP, rende PHP parte di apache e non chiama alcun processo PHP esterno. Questo modulo è installato di default in ogni repository di distribuzione Linux, quindi abilitare / disabilitare questo modulo è molto semplice.

Se stai usando FastCGI come gestore PHP, puoi impostare più versioni di PHP da utilizzare da diversi account sul tuo 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 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 cioè FastCGI.

Puoi anche installare Apache Passenger e configurare Apache per usarlo per servire le 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 / 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-1renderefare installazione

Come eseguire Ruby con Apache

Dobbiamo aggiungere il modulo mod_ruby alla configurazione di Apache cioè /etc/httpd/conf.d/ruby.conf e aggiungere la seguente riga.

LoadModule ruby_module modules / mod_ruby.so

Se desideri abilitare o disabilitare questi moduli, devi modificare il file di configurazione di Apache e commentare o rimuovere il commento da 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 previste, proteggere i tuoi dati e limitare 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 negli errori come mostrato nell'immagine sottostante.

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 il server web Apache visualizzi 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
Firma server disattivataServerTokens Prod

Abbiamo anche impostato "ServerTokens Prod" che dice al server web di restituire solo apache e 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 efficace.

riavviare il servizio httpd

2) Disabilitare l'elenco delle directory

Se la directory root del documento non ha un file di indice, per impostazione predefinita il server Web Apache mostrerà tutto il contenuto della directory root del documento.

Questa funzione può essere disattivata per una directory specifica tramite la "direttiva opzioni" disponibile nel file di configurazione di Apache.

Opzioni -Indici

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 di Apache -

[root @ amsterdam ~] #httpd -Mperl_module (condiviso)php5_module (condiviso)proxy_ajp_module (condiviso)python_module (condiviso)ssl_module (condiviso)

Molti dei moduli elencati possono essere disabilitati come likemod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, poiché difficilmente vengono utilizzati da qualsiasi server web di produzione.

vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules / mod_auth_digest.so

Dopo aver commentato il modulo, salva il file.

Riavvia i servizi Apache con il seguente comando.

/etc/init.d/httpd riavvio

4) Limitare l'accesso ai file al di fuori della directory principale web

Se vuoi assicurarti che i file che si trovano al di fuori della directory principale del web non siano accessibili, devi assicurarti che la directory sia limitata con "Consenti" e "Nega opzione" nel file di configurazione del tuo server web.

Opzioni NessunoAllowOverride NessunoOrdine negato, consentireNegato da tutti

Una volta limitato l'accesso al di fuori 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) Usare mod_evasive per confutare l'attacco DoS

Se vuoi proteggere il tuo server web da Dos (cioè Denial of Service) devi abilitare il modulo mod_evasive. È un modulo di terze parti che rileva l'attacco Dos e impedisce all'attacco di fare tanti danni come farebbe se lasciato per fare il suo corso. Potrebbe essere scaricato qui.

Scarica il file sopra

6) Utilizzo di mod_security per migliorare la sicurezza di Apache

Questo modulo funziona come un firewall per Apache e consente di monitorare il traffico in tempo reale. Inoltre, impedisce al server web di effettuare attacchi di forza bruta. Il modulo mod_security potrebbe essere installato con il gestore di pacchetti predefinito della tua distribuzione.

7) Limitare la dimensione della richiesta

Apache non ha alcuna restrizione sulla dimensione totale della richiesta http che potrebbe portare a un attacco DoS. È possibile limitare la dimensione della richiesta di una direttiva Apache "LimitRequestBody" con il tag directory. Il valore può essere impostato da 0 a 2 GB (ovvero 2147483647 byte) in base alle proprie esigenze.

LimitRequestBody 512000

Formato registro Apache

I registri di Apache forniscono informazioni dettagliate che aiutano a rilevare problemi comuni con il server.

Per creare log di accesso, è necessario abilitare mod_log_configmodule.

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 secondo i parametri impostati.

ServerAdmin Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.DocumentRoot / usr / www / example / httpd / htdocs /ServerName www.example.comServerAlias ​​example.com www.exampleErrorLog / usr / www / example / httpd / logs / error_logTransferLog / usr / www / example / httpd / logs / accesslogCustomLog / usr / www / example / httpd / logs / accesslog combinato

Due tipi di formato registro Apache

  • Formato registro comune
  • Formato registro combinato.

Puoi abilitarli modificando il file di configurazione di apache, ad esempio apache2.conf (Debian / ubuntu) o httpd.conf (sistemi basati su rpm)

Formato registro comune

LogFormat "% h% l% u% t \"% r \ "%> s% b" comuneLog di CustomLog / access_log common

Registro comune generato da Apache

[Mercoledì 11 ottobre 14:32:52 2000] [errore] [client 127.0.0.1] client negato dalla configurazione del server: / export / home / live / ap / htdocs / test

Formato registro combinato

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" combinatoCustomLog log / access_log combinati

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. ("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)
  • Il referer è la pagina collegata a questo URL.
  • L'agente utente è la stringa di identificazione del browser.

Registro 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 (compatibile; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "

Il registro personalizzato crea un file di registro separato per ogni host virtuale sul 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 vero server Web di produzione

1. Per avere un server web di produzione in esecuzione, è necessario un nodo dedicato (istanza fisica / virtuale o cloud) che esegue Linux / Unix, Windows, MacOS ecc.

2. Il Web Server deve avere una connessione di rete diretta e un indirizzo IP statico configurato su di esso.

3. Deve avere tutti i moduli richiesti per l'esecuzione di pagine web. Se un server web elabora le pagine PHP, deve avere il modulo PHP abilitato.

  1. È inoltre necessario che una buona applicazione antivirus sia configurata e funzionante per proteggere il server Web da attacchi di malware o virus. È inoltre necessario un meccanismo per aggiornare regolarmente l'applicazione antivirus / antimalware configurata senza alcun intervento manuale al fine di trarne il massimo vantaggio.
  2. Se hai centinaia di domini da ospitare sul tuo server web, devi implementare limitazioni sulla quota del file system per ogni dominio, il numero di database che ogni dominio può creare, il numero di account di posta elettronica per dominio ecc.
  3. 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, personalizzazione del sistema operativo per raggiungere questo obiettivo.
  4. Se stai aggiungendo un nuovo dominio al tuo server web, è necessario modificare centinaia di file di configurazione per abilitare tutte le funzionalità per il dominio aggiunto.
  5. Se uno dei domini ospitati richiede un'impostazione PHP diversa rispetto al resto dei domini, l'implementazione di questo nel server Web Apache di base è molto complessa e richiede la personalizzazione del server Web in larga misura.
  6. Un server Web di produzione necessita 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 dell'esperienza del core ambiente Linux / Unix 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 / in uscita sul server.
  7. Un server Web di produzione richiede diverse applicazioni come e -mail , FTP per il caricamento di file, Domain Name System per domini parcheggiati. La gestione di tutte queste applicazioni su un sistema Linux / Unix di base richiede esperienza nelle 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 ottenere il risultato desiderato. Risolvere eventuali problemi di configurazione sarà molto difficile per i principianti.

La soluzione che utilizza Cpanel o software simile

Cpanel fornisce un modo grafico per gestire il tuo server web . Ha lo scopo di 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. Rende più semplici le attività complesse, fornisce molte interfacce web utili e facili da usare che eseguono le comuni attività di amministrazione del sistema richieste per far funzionare un server web.

cPanel compila la propria versione del software.

Se devi ricompilare il tuo server web, cioè 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 posta, DNS, FTP e molti altri servizi necessari per la tua applicazione web.

Un'attività che richiede esperienza sull'hosting basato su Linux / Unix di base 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 ogni dominio, la scansione della radice del documento con antivirus e la creazione di database è facile da completare con cPanel.

Fornisce molti script che risolvono, 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 principale dei documenti, account di posta elettronica e messaggi di posta, account ftp, database, record DNS e altre applicazioni.

Fornisce inoltre una solida documentazione e dispone di una vasta comunità di utenti in cui è possibile discutere e ottenere soluzioni ai propri problemi.

Quindi, si può dire che cPanel è la migliore applicazione per gestire il tuo server web con le funzionalità richieste. Fornisce un'interfaccia facile da usare per la gestione del 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.

Articoli interessanti...