Installare un server lamp su linux

Il web server Apache è una scelta molto popolare per servire le pagine web, sebbene ci siano tantissime alternative Apache è sempre rimasto l’opzione più potente e diffusa, anche se alcuni dicono che è un pò esoso di risorse secondo me rimane la scelta migliore. Apache insieme a linux, mysql e php viene appunto definito un ambiente L.A.M.P. che non sono altro che le loro iniziali. Vediamo ora come installare un server lamp su linux. In questo esempio la procedura di installazione viene effettuata su una Debian 6.0 squeeze, ma dovrebbe funzionare anche sulle distribuzioni che derivano da debian.

Controllo del sistema prima di installare un server lamp su linux

Per prima cosa ti conviene controllare che tutti i tuoi repositories e i software installati siano aggiornati attraverso questi due comandi:

apt-get update
apt-get upgrade --show-upgraded

Per installare la versione più recente e stabile del web server Apache ti basterà digitare

apt-get install apache2

Visto che quasi tutti i framework e cms utilizzano friendly url occorre abilitare il modulo rewrite per apache, con questo comando

a2enmod rewrite

a2enmod è un comando per abilitare i mod di apache se si preme invio senza indicare il modulo stamperà a video tutti i moduli presenti su apache per disattivare un modulo di apache occorre utilizzare il comando a2dismod. Maggiori informazioni le trovate su questo articolo Attivare e disattivare moduli Apache 2

se ora provate ad andare sull’indirizzo ip o l’url del tuo server dovrebbe già apparire la mitica scritta

It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Adesso occorre configurare gli hosting virtuali così potrai ospitare più domini (o sottodomini) sullo stesso server, questi spazi web potranno essere controllati da utenti differenti o da un singolo utente dipende da cosa preferisci.

Come configurare Name-based Virtual Hosts su apache 2

Ci sono differenti modi per impostare i virtual host una best practice è la seguente, ricorda che per default Apache è in ascolto su tutti ip esterni.
Si possono creare quanti virtual host vuoi, devi solamente creare un file nella cartella /etc/apache2/sites-available/ per ogni virtual host che vuoi creare e utilizzare un nome per ogni dominio che vuoi ospitare sul tuo server virtuale o reale che sia. Ecco alcuni esempi su come configurare i virtual host su due ipotetici domini: esempio1.com e esempio2.it

File:/etc/apache2/sites-available/esempio1.com

<VirtualHost *:80>
        ServerAdmin sysadmin@noreply.com
        ServerName  www.esempio1.com
        ServerAlias esempio1.com
        # Indexes + Directory Root + Logs
        DirectoryIndex index.html index.htm index.php
        DocumentRoot /var/www/esempio1.com/public_htm/
        ErrorLog  /var/www/esempio1.com/logs/error.log
        CustomLog /var/www/esempio1.com/logs/access.log combined
</VirtualHost>

File:/etc/apache2/sites-available/esempio2.it

<VirtualHost *:80>
        ServerAdmin sysadmin@noreply.com
        ServerName  www.esempio2.it
        ServerAlias  esempio2.it
        # Indexes + Directory Root + Logs
        DirectoryIndex index.html index.htm index.php
        DocumentRoot /var/www/ esempio2.it/public_htm/
        ErrorLog  /var/www/esempio2.it/logs/error.log
        CustomLog /var/www/esempio2.it/logs/access.log combined
</VirtualHost>

www.no-ip.org ti permetterà gratuitamente, previa registrazione di fare dei test per raggiungere la tua applicazione o sito web, in alternativa per fare dei test potreste modificare il file hosts con l’ip del webserver. Solitamente apache crea la document root in /var/www anche se sarebbe più giusto usare /srv/www in quanto la cartella var serve più per dati variabili nel tempo, cioè log, file temporanei, cache, etc. senza contare che dovrebbe contenere solo dati locali, cioè non condivisi tra più macchine. La gerarchia /srv serve proprio per contenere i dati offerti come servizi dal tuo server. Potrebbe anche essere condivisa tra più macchine in caso di server ridondanti.

File:/etc/apache2/sites-available/sottodominio.no-ip.org

<VirtualHost *:80>
        ServerAdmin tuaemail@gmail.com
        ServerName sottodominio.no-ip.org
        DocumentRoot /srv/www/sottodominio.no-ip.org/htdocs/
        ErrorLog /srv/www/sottodominio.no-ip.org/logs/error.log
        CustomLog /srv/www/sottodominio.no-ip.org/logs/access.log combined
</VirtualHost>

prima di riavviare apache è buona prassi soprattutto per server in produzione controllare che non ci siano errori di sintassi altrimenti poi il webserver rischia di rimanere down mentre correggete e non è una bella cosa.

apachectl configtest

Note relative all’esempio riportato

Tutti i files dei tuoi siti web che verranno hostati saranno nelle cartelle che DEVONO esistere sotto /srv/www potrai comunque creare dei link simbolici a queste directory se hai bisogno che esistano in altri posti. Le voci ErrorLog e CustomLog sono facoltative ma sono indispensabili per mantenere il controllo su tutto quello che avviene. Anche le cartelle di LOG vanno create prima di riavviare Apache. I comandi per creare le cartelle sono i seguenti naturalmente si riferiscono ai dati di esempio (-p crea tutto l’albero delle directory):

mkdir -p /var/www/esempio1.com/public_html
mkdir /var/www/esempio1.com/logs
mkdir -p /var/www/esempio2.it/public_html
mkdir /var/www/esempio2.it/logs
mkdir /srv/www/sottodominio.no-ip.org/logs
mkdir -p /srv/www/sottodominio.no-ip.org/public_html

Una volta impostati i virtual hosts occorre abilitare i siti web usando il comando a2ensite:

a2ensite esempio1.com
a2ensite esempio2.it
a2ensite sottodominio.no-ip.org

Il comando a2ensite creerà un link simbolico dalla directory sites-available a quella sites-enabled
Alla fine, prima di accedere ai tuoi siti devi riavviare Apache con il seguente comando:

/etc/init.d/apache2 reload

Se per caso vuoi disabilitare un sito ti basterà digitare questo comando a2dissite, per esempio per disabilitare esempio2.it

a2dissite esempio2.it

Ricordati che ogni modifica che farai alla configurazione di Apache dovrai SEMPRE RIAVVIARE Apache con il solito:

/etc/init.d/apache2 reload 
Apache configuration again with the /etc/init.d/apache2 reload command.

Se hai configurato i dns per il tuo dominio che puntano all’IP dei tuoi nodi, i tuoi virtual hosting dovrebbero già funzionare.

Installare database MySQL

MySQL è un database relazionale (RDBMS) molto diffuso e sebbene non sia il massimo (molto meglio postgreSQL) è indispensabile per quasi tutte le applicazioni più famose come wordpress o drupal
Il primo passaggio è installare il package mysql-server con il solito apt-get:

apt-get install mysql-server

Durante l’installazione ti sarà chiesto di scegliere una password cerca di inserirne una non troppo stupida e non dimenticartela, a questo punt dovresti essere in grado di configurare e lanciare MySQL, non sarà necessario modificare nulla della configurazione standard ricordati solo che i file di configurazione di MySQL si trovano nella cartella /etc/mysql/my.cnf

Configurare MySQL

Dopo aver installato mysql è raccomandato lanciare mysql_secure_installation un programma che ti aiuterà per gestire la sua sicurezza. Dopo averlo lanciato è opportuno rispondere “yes” alle seguenti impostazioni remove anonymous user accounts (rimuove accesso anonimo), disable root logins outside of localhost (disabilitare l’accesso da root dall’esterno di localhost) e remove test databases (rimuovere il database di test). Sarebbe bene anche rispondere a “yes” anche quando verrà richiesto di ricaricare i privilegi alle tabelle.

mysql_secure_installation

Il prossimo passo è creare un database e dare i diritti agli utenti che potranno usarlo, per prima cosa occorre loggarsi dentro MySQL:

mysql -u root -p

Puoi accedere inserendo come user root e la password che hai scelto e dal prompt potrai creare il database e impostare i permessi con i seguenti comandi, ricordati che a fine riga va messo SEMPRE il punto e virgola.

create database dummydb;
grant all on dummydb.* to 'scriptuser' identified by 'password000';

In questo esempio dummydb è il database, scriptuser è il nome utente e la password è password000 (non osare creare una password così stupida). Le credenziali che hai creato dovranno essere utilizzate solo dallo script.
Per uscire dall’amministrazione di MySQL usare il comando quit e noterai quanto è cortese MySQL perchè ti risponderà con Bye! lol
Ora che finalmente hai installato MySQL, sei pronto ad installare PHP per poter utilizzare un linguaggio di scripting nelle tue pagine web

Installare e Configurare PHP

Come tutti sanno con PHP è possibile creare pagine dinamiche e interattive che useranno i tuoi script o per installare famosi framework per sviluppare applicazione web. Indispensabile per WordPress, Drupal o Joomla tutti e tre sono cms scritti in php e si appoggiano a mysql. Prima di usare PHP dovrai installarlo.
Debian include i packages per installare PHP da terminale e questo è il comando per installarlo

apt-get install php5 php-pear php5-suhosin

Una volta che PHP5 si è installato nella tua Debian 6.0 Squeeze distribuzione devi configurare il tutto editando il file /etc/php5/apache2/php.ini per abilitare la descrizione degli errori, il logging e ottimizzare le performance. Ecco una configurazione base di php.ini.
Assicurati che le variabili siano settate e ricordati che le linee commentate sono quelle precedute da un punto e virgola (;)

max_execution_time = 30
memory_limit = 64M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On
error_log = /var/log/php.log
register_globals = Off

Se vuoi che php possa connettersi a MySQL server devi installare il package php5-mysql con il seguente comando:

apt-get install php5-mysql

Se usate curl ricordatevi di installarlo, se usi php antico ci vuole php4

apt-get install php5-curl

Consiglio infine di verificare se funziona l’invio delle email da php, se non funziona verificare il file /etc/php5/apache2/php.ini

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path =   /usr/sbin/sendmail -t -i

se non hai installato sendmail ti basterà installarlo con

apt-get install sendmail

maggiori info http://it2.php.net/manual/en/mail.configuration.php
Dopo aver modificato il php.ini e installato il supporto per mysql riavvia come al solito Apache:

/etc/init.d/apache2 restart

A questo punto il tuo server lamp dovrebbe funzionare perfettamente. 🙂
Probabilmente in futuro posterò altri articoli su come ottimizzare la sicurezza di apache e su come installare altri servizi come l’obsoleto ftp.

L'articolo ti è stato utile?

Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

5 thoughts on “Installare un server lamp su linux

  1. Sugel

    LAMP is short for Linux, Apache, MySQL, PHP. This tutorial shows how you can install an Apache2 webserver on an Ubuntu 12.04 LTS server with PHP5 support (mod_php) and MySQL support.

  2. Giovanni ~ Quacos

    Ottimo compendio della questione. Volevo giusto ricordare che per lo sviluppatore è molto più conveniente scaricarsi XAMPP, che contiene già tutto preconfenzionato 😉 Ma non usatelo assolutamente su ambienti di produzione

  3. Pingback: Visto nel Web – 50 « Ok, panico

  4. Pingback: I Server privati virtuali di Tophost [VPS economici]

Comments are closed.