Installazione e configurazione Apache su Raspberry Pi

postato in: Articoli, Server | 2

apacheSSL2

 

Buongiorno a tutti!

Nel post di oggi vi presentiamo una guida su come trasformare il Raspberry Pi in un semplice server web. Spesso quando ci si approccia al mondo di internet non si sa bene da che parte cominciare. Ecco infatti il motivo di questa guida. Imparare ad installare un web server può essere uno dei modi migliori per cominciare a sporcarsi le mani.

 

 

COSA CI SERVE
Come da titolo ci servirà un Raspberry Pi. Se non ne siete provvisti potete acquistare la versione base a questo link oppure la versione che vi abbiamo acquistato noi: Raspberry Pi 2 Quad Core Starter Bundle.

A questo punto dovremo installare il sistema operativo. Il nostro Raspberry utilizzerà come sistema operativo Raspbian Jessie e per installarlo, seguiamo questa guida passo passo. Ora configuriamolo al meglio seguendo quest'altra guida.

 

 

PRIMI PASSI

A questo punto non ci resta che collegare il nostro Raspberry a Internet e iniziamo subito dando da terminale:

sudo apt-get update

e aggiorniamo con:

sudo apt-get upgrade

A questo punto siamo pronti per installare Apache. Apriamo il terminale e diamo:

sudo apt-get install apache2 php5 libapache2-mod-php5

 

all'interno di /var/www/html troviamo la cartella in cui andremo a inserire tutti i file html del nostro sito web. In particolare troviamo all'interno di questa cartella il file index.html che sarà il file su cui arriveremo nel momento in cui ci collegheremo al server.

 

Per vedere come appare dal punto di vista del client possiamo fare in due modalità:

  • Direttamente dal Raspberry.
  • Da un dispositivo connesso alla nostra rete casalinga.

Per la prima opzione apriamo il browser web del nostro Raspberry e, all'interno della barra degli indirizzi, scriviamo:

http://127.0.0.1/

Per i profani questo numero è detto localhost e rappresenta il nostro computer. Altrimenti se disponiamo di un'altra macchina o non abbiamo un monitor attaccato al nostro Raspberry, innanzitutto dobbiamo assicurarci che entrambi i device siano collegati alla stessa rete. Successivamente dal Raspberry digitiamo:

ifconfig

e, a seconda di come abbiamo collegato il nostro mini pc, cerchiamo la nostra interfaccia con cui ci siamo collegati (eth0 se siamo connessi via ethernet o wlan se siamo connessi tramite wifi) e cerchiamo il nostro ip.

Tipicamente lo troviamo all'interno di una stringa del genere:

inet addr:192.168.1.XX

A questo punto, dall'altra macchina, apriamo un browser web e nella barra degli indirizzi scriviamo il nostro ip, seguito dalla porta di Apache che tipicamente e' la numero 80:

192.168.1.XX:80

A questo punto, nel browser apparirà la pagina di default di Apache.

debian_index_page

 

Ora accertiamoci che Php funzioni correttamente. Ritorniamo sul nostro fidato Raspberry e digitiamo nel terminale:

sudo nano /var/www/html/prova.php

e inseriamo all'interno del file:

<?php
 phpinfo();
?>

Salviamo con ctrl+x e Y

Verifichiamo che php funzioni aprendo il browser web allo stesso indirizzo di prima ma con l'aggiunta di /prova.php, come da esempio:

http://192.168.1.XX:80/prova.php

Come output dovrebbe comparire la pagina di phpinfo.

php_info_img

Il prossimo passo e' quello di installare un piccolo database mysql. E' molto facile: basta inserire da terminale:

sudo apt-get install mysql-server mysql-client php5-mysql

Durante la fase di installazione dovremo scegliere, per l'utente root, una password per il database. Prestiamo attenzione e scegliamola con cura.

A questo punto tutto dovrebbe funzionare correttamente. Vediamo ora come mettere in sicurezza Apache.

 

 

CONFIGURAZIONE DI APACHE
I passaggi che andremo a compiere ora sono opzionali, ma aiutano a mantenere il server un po' più al sicuro. Nei prossimi post ci occuperemo meglio della sicurezza in questo ambito con delle soluzioni più aggressive.

 

Attenzione a un particolare! A seconda della versione di Debian, i file di configurazione variano. Nel nostro caso, con Debian Wheezy, il principale file contenente le direttive di sicurezza si trova in:

/etc/apache2/conf.d/security

mentre in Debian Jessie lo troviamo in due versioni, in cui quella da editare sarà:

/etc/apache2/conf-enabled/security.conf

 

 

NASCONDIAMO LA VERSIONE DI APACHE
Per prima cosa possiamo nascondere la versione di apache2. Come fare? Beh, come sempre, apriamo il terminale e andiamo a editare il file di configurazione della sicurezza, con il comando:

sudo nano /etc/apache2/conf.d/security

e modifichiamo le seguenti righe, in modo da renderle uguali a queste:

ServerTokens Prod
ServerSignature Off

Salviamo con CRTL+X e riavviamo Apache con:

sudo /etc/init.d/apache2 restart

 

 

DISABILITIAMO LA NAVIGAZIONE INTERNA
Un'altra cosa molto importante è disabilitare la navigazione all'interno delle cartelle e l'uso dei link simbolici nella barra degli indirizzi.

sudo nano /etc/apache2/apache2.conf

e modifichiamo le seguenti righe:

<Directory / >
  Options -FollowSymLinks
  AllowOverride None
  Require all granted
&lt/Directory>

Dove -FollowSymLinks serve a imporre al nostro server di non seguire i link simbolici all'interno del file system. Nel caso volessimo mantenere questa caratteristica basta semplicemente togliere il '-' di fronte alla stringa FollowSymLinks

Queste tre stringhe vanno inserite cosi' solo se la directory in cui inseriamo le pagine web e' quella di default, ossia: /var/www/html.

In caso contrario dovremo scrivere:

<Directory /path/directory/www >
  Options -FollowSymLinks
  AllowOverride None
  Require all granted
&lt/Directory>

 

 

LIMITIAMO LE RICHIESTE PIU' GRANDI
A questo punto limitiamo le richieste piu' grandi, in modo da evitare che rischino di mettere fuori uso il servizio offerto dal nostro piccolo server (Denial of Service). Dato che di default non vi e' un limite alle dimensioni delle richieste, lo imponiamo noi.

Apriamo il solito file di configurazione:

sudo nano /etc/apache2/apache2.conf

e al suo interno cerchiamo la stringa:

LimitRequestBody XXX

Al posto di XXX inseriamo il numero di Byte massimi per ogni richiesta. Ovviamente non vi e' un unico valore corretto che va bene per ogni situazione. A seconda quindi del lavoro che andremo a far fare al nostro server imposteremo un valore opportuno.

 

 

CONCLUSIONE

Bene, con il post di oggi abbiamo tutti gli strumenti base per iniziare a lavorare un po' con il web. Nei post successivi vedremo come aumentare il livello di sicurezza di Apache. A presto!

 

FONTI
- Immagini di Joel Garia;
- Apache HTTP Server;

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

2 risposte

  1. Da segnalare un errore di battitura nel comando per riavviare apache2 .
    sudo /etc/init.d/apache2 restart
    hai scritto ini.d anzichè init.d
    --
    Per quanto riguarda Debian Stretch (Testing quando digito )la configurazione di Apache è identica a Jessie . /etc/apache2/conf-enabled/security.conf
    ---
    Bel lavoro .

Lascia un commento