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.

Apache

Come installare Apache

Esistono numerosi modi per installare il pacchetto o l'applicazione. Ci sono elencati di seguito:

  1. 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.
  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 รจ 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.

Installa Apache dal sorgente

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.

Host virtuale

Tipi di host virtuali Apache

  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 singolo indirizzo IP.

Host virtuale basato sul nome

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 webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.0.108:80>

ServerAdmin admin@example2.com

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.

Host virtuale basato 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 webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.10.109:80>

ServerAdmin admin@example2.com

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:

Ciรฒ di cui Apache ha bisogno per eseguire il file Php

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.

Esegui Ruby con Apache

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.

Nascondere la versione di Apache e le informazioni sul sistema operativo

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

Nascondere la versione di Apache e le informazioni sul sistema operativo

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.

Disabilita l'elenco delle directory

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>

Disabilita l'elenco delle 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.

Limitazione dell'accesso ai file esterni alla directory principale del Web

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.

Scarica il file sopra

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.

Utilizzo di mod_security per migliorare la sicurezza di Apache

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 webmaster@example.com

  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.

Registro combinato generato da Apache

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.

Configurare il Web Server di produzione

  1. 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.
  2. 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.
  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 e della personalizzazione del sistema operativo per raggiungere questo obiettivo.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

La soluzione utilizzando Cpanel o software simile

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.

La soluzione utilizzando Cpanel o software simile

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.

Riassumi questo post con: