Apache MySQL PHP - FTP Scelta del software, Installazione e configurazione Ivan Grimaldi grimaldi.ivan@gmail.com HcssLug GNU/LINUX USERS GROUP
Outline Cenni sul funzionamento di un WebServer Apache, PHP, MySQL e vsftpd Installazione e configurazione di un WebServer 2
Web Server Quando apriamo il nostro browser e digitiamo un indirizzo, facciamo una richiesta ad un server remoto. La comunicazione tra il browser ed il server avviene attraverso un canale, il protocollo HTTP (Hyper Text Transfer Protocol). 3
Web Server Un Server Web quindi non è altro che un programma in esecuzione su una macchina (PC) collegata ad internet, che riceve una richiesta di una risorsa, e la restituisce al client (il browser), sotto forma di testo formattato HTML SENDS REQUEST SERVER WEB SENDS RESPONSE 4
Apache Apache HTTP Server, o più comunemente Apache, è il nome dato alla piattaforma server Web modulare più diffusa, in grado di operare da sistemi operativi UNIX-Linux e Microsoft. La storia di Apache inizia nel mese di febbraio del 1994, quando inizia il progetto del Gruppo Apache, basato sul server httpd della NCSA (National Center of Supercomputing Applications), Università dell'illinois. Il nome, secondo la leggenda, nasce dal fatto che inizialmente il server era semplicemente una raccolta di patch da applicare al server NCSA Apache = a patchy server 5
Apache diffusione secondo Netcraft 6
PHP PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti) è un linguaggio di scripting interpretato, con licenza open source, originariamente concepito per la programmazione Web ovvero la realizzazione di pagine web dinamiche. Attualmente è utilizzato principalmente per sviluppare applicazioni web lato server ma può essere usato anche per scrivere script a linea di comando o applicazioni standalone con interfaccia grafica. L'elaborazione di codice PHP sul server produce codice HTML da inviare al browser dell'utente che ne fa richiesta. 7
PHP PHP riprende per alcuni versi la sintassi del C Supporta la programmazione ad oggetti (dalla versione 5) Supporta diversi database tra cui MySQL, PostgreSQL, Oracle, Firebird, IBM DB2, Microsoft SQL Server, solo per citarne alcuni. Supporta numerose tecnologie, come XML, SOAP, IMAP, FTP, CORBA. 8
MySQL MySQL è un Relational database management system (RDBMS), composto da un client con interfaccia a caratteri e un server, entrambi disponibili sia per sistemi Unix come GNU/Linux che per Windows, anche se prevale un suo utilizzo in ambito Unix. Il codice di MySQL venne sviluppato fin dal 1979 dalla ditta TcX ataconsult, poi rinominata MySQL AB, ma è solo dal 1996 che viene distribuita una versione che supporta SQL, prendendo spunto da un altro prodotto: msql. MySQL AB è stata rilevata da Sun Microsystems nel 2008, mentre nel 2010 quest'ultima è stata acquisita da Oracle. MySQL svolge il compito di DBMS nella piattaforma LAMP, una delle più usate e installate su Internet per lo sviluppo di siti e applicazioni web dinamiche. 9
vsftpd FTP (File Transfer Protocol) è uno dei protocolli maggiormente usati per il trasferimento dei file. Solitamente prevede l'autenticazione degli utenti e una serie di comandi semplici per scaricare e caricare file. vsftpd è uno dei programmi più usati e sicuri per l'implementazione di questo servizio. Tra i diversi siti internet che utilizzano vsftp abbiamo: ftp.redhat.com ftp.suse.com, ftp.debian.org, ftp.kernel.org, ftp.kde.org, ftp.gnu.org 10
Cosa vogliamo realizzare? 11
Installazione Apache Per partire installeremo Apache Aprire il terminale (Applicazioni > Accessori > Terminale). Al prompt dei comandi digitare: e premete Invio : # su (PASSWORD: password) # apt-get install apache2 Per essere sicuri che tutto sia stato installato correttamente, dovrete testare Apache affinché lavori appropriatamente. Aprite un browser web e inserite quanto segue nella barra degli indirizzi: http://localhost 12
Installazione PHP Aprite ancora il terminale (Applicazioni > Accessori > Terminale). Al prompt dei comandi digitare: e premete Invio : # apt-get install php5 Per far si che PHP funzioni e sia compatibile con Apache dovremo riavviarlo. Per farlo digitate quanto segue, nel terminale: # /etc/init.d/apache2 restart Per essere sicuri che non vi siano problemi con PHP, effettuate questo breve test. # nano /var/www/phpinfo.php --------- <?php phpinfo();?> --------- CTRL + 0 (SALVA) CTRL + x (ESCI) Aprite ora il browser e digitate quanto segue nella barra degli indirizzi: http://localhost/phpinfo.php 13
Installazione MySQL Aprite ancora il terminale (Applicazioni > Accessori > Terminale). Al prompt dei comandi digitare e premete Invio : # apt-get install mysql-server mysql-client php5-mysql Per essere sicuri che tutto sia stato installato correttamente, è possibile testare mysql. # mysql -u root -p Enter password: <PASSWORD> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1007 Server version: 5.0.51a-24+lenny4 (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> 14
Installazione vsftpd Aprite ancora il terminale (Applicazioni > Accessori > Terminale). Al prompt dei comandi digitare e premete Invio : # apt-get install vsfpd Per essere sicuri che tutto sia stato installato correttamente, è possibile testare mysql. # ftp localhost Connected to localhost. 220 (vsftpd 2.0.7) Name (localhost:user): anonymous 331 Please specify the password. Password: <INVIO> 15
Configurazione vsftpd Per configurare un server FTP in cui gli utenti abilitati ad accedere siano gli stessi del sistema, è necessario modificare il file di configurazione del servizio /etc/vsftpd.conf Cercare la seguente riga e cancellare il carattere di cancelletto # presente all'inizio della stessa: local_enable=yes Applicando le impostazioni sopra discusse, gli utenti del sistema avranno accesso, tramite il servizio FTP, a tutte le cartelle del filesystem locale. Per evitare ciò è opportuno limitare l'accesso degli utenti solamente alla propria cartella Home. chroot_local_user=yes 16
Configurazione PHP - MYSQL Per quanto riguarda la configurazione di PHP e MySQL entrambi si basano su un solo file di configurazione La configurazione di PHP si trova in /etc/php5/apache2/php.ini La configurazione di MySQL si trova in /etc/mysql/my.cnf 17
Configurazione Apache Tutta la configurazione di Apache può essere fatta operando con un editor sul file apache2.conf che si trova in /etc/apache/ Le porte su cui è in ascolto all'avvio del servizio sono elencate in ports.conf La directory mods-available contiene tutti i moduli disponibili con apache2, mentre nella directory mods-enabled sono elencati i moduli effettivamente caricati all'avvio del servizio La directory sites-available contiene le direttive di configurazione relative a tutti i siti che questo server Web ospita, mentre i siti effettivamente pubblicati e visibili sono elencati nella directory sites-enabled. I file contenuti nelle directory mods-enabled sites-enabled sono dei link a quelli contenuti nelle due directory mods-available e sites-available. 18
apache2.conf Il file /etc/apache2/apache2.conf contiene le principali configurazioni di apache2 ServerRoot "/etc/apache2" PidFile /var/run/apache2.pid TimeOut 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 StartServers 5 MaxClients 20 MaxRequestsPerChild 0 Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf Include /etc/apache2/httpd.conf Include /etc/apache2/ports.conf 19
Cominciamo la configurazione Le specifiche tecniche dell'implementazione che andremo a fare sono le seguenti: IP Address 127.0.0.1 WEB Sites Domain DocumentRoot localhost /var/www/ www.caio.com /home/caio/public_html www.tizio.com /home/tizio/public_html In questo modo il server WEB anche se dotato di un solo indirizzo IP, ha così modo di riconoscere quale siti WEB tra quelli ospitati è stato effettivamente richiesto Host Virtuali basati su nome 20
Dominio www.caio.com La strategia che seguiremo comporta la creazione di un normale account per ciascun dominio gestito. Vogliamo insomma che ogni dominio sia gestibile da un utente distinto, che vi può accedere anche con con collegamento FTP. # useradd caio -g users # passwd caio A questo punto è possibile verificare che l'utente è abilitato all'utilizzo del server FTP # ftp localhost/ Connected to localhost. 220 (vsftpd 2.0.7) Name (localhost:caio): caio 331 Please specify the password. Password: caio 21
Dominio www.caio.com Effettuiamo la configurazione di Apache aggiungendo il nuovo dominio creando un file in /etc/apache2/sites-available/ che chiamiamo caio.com # nano caio.com -------------- <VirtualHost *:80> ServerName www.caio.com DocumentRoot /home/caio/public_html ServerAdmin caio@info.it </VirtualHost> ---------- a2ensite caio.com /etc/init.d/apache reload 22
Verifica Dominio www.caio.com Creiamo la home page del dominio www.caio.com # sudo gedit index.php -------------- <?php echo Sono Caio ;?> -------------- Inseriamo il dominio nell'elenco degli host file /etc/hosts, inserendo la seguente riga: # sudo gedit hosts -------------- 127.0.0.1 www.caio.com -------------- Apriamo il WEB browser sull'url http://www.caio.com 23
Dominio www.tizio.com E ADESSO TOCCA A VOI... 24
GRAZIE PER L'ATTENZIONE Ivan Grimaldi grimaldi.ivan@gmail.com HcssLug GNU/LINUX USERS GROUP