Istallazione Lamp ubuntu 18.04

introduzione

Uno stack “LAMP” è un gruppo di software open source che viene generalmente installato insieme per consentire a un server di ospitare siti Web e app Web dinamici. Questo termine è in realtà un acronimo che rappresenta il sistema operativo Linux, con il web server Apache. I dati del sito sono archiviati in un database MySQL e il contenuto dinamico viene elaborato da PHP.

In questa guida, installeremo uno stack LAMP su un server Ubuntu 18.04.

Passaggio 1: installazione di Apache e aggiornamento del firewall

Il web server Apache è tra i web server più popolari al mondo. È ben documentato ed è stato ampiamente utilizzato per gran parte della storia del Web, il che lo rende un’ottima scelta predefinita per l’hosting di un sito Web.

Installa Apache usando il gestore dei pacchetti di Ubuntu, apt:

sudo apt update
sudo apt install apache2

Poiché si tratta di un comando sudo, queste operazioni vengono eseguite con i privilegi di root. Ti chiederà la password del tuo utente normale per verificare le tue intenzioni.

Dopo aver inserito la password, apt ti dirà quali pacchetti intende installare e quanto spazio aggiuntivo su disco occuperanno. Premi Y e premi INVIO per continuare, e l’installazione procederà.

Regola il firewall per consentire il traffico Web

Quindi, supponendo di aver seguito le istruzioni di configurazione del server iniziale e di aver abilitato il firewall UFW, assicurarsi che il firewall consenta il traffico HTTP e HTTPS. Puoi verificare che UFW abbia un profilo applicazione per Apache in questo modo:

sudo ufw app list

sudo ufw app info "Apache Full"

sudo ufw allow OpenSSH

sudo ufw allow in "Apache Full"

sudo ufw enable

sudo ufw status

Passaggio 2: installazione di MySQL

Ora che il tuo server web è attivo e funzionante, è tempo di installare MySQL. MySQL è un sistema di gestione di database. Fondamentalmente, organizzerà e fornirà l’accesso ai database in cui il tuo sito può archiviare informazioni.

Ancora una volta, utilizzare apt per acquisire e installare questo software:

sudo apt install mysql-server

Anche questo comando ti mostrerà un elenco dei pacchetti che verranno installati, insieme alla quantità di spazio su disco che occuperanno. Immettere Y per continuare.

Al termine dell’installazione, esegui un semplice script di sicurezza preinstallato con MySQL che rimuoverà alcune impostazioni predefinite pericolose e bloccherà l’accesso al tuo sistema di database. Avvia lo script interattivo eseguendo:

sudo mysql_secure_installation

Passaggio 3: installazione di PHP

PHP è il componente della tua configurazione che elaborerà il codice per visualizzare contenuti dinamici. Può eseguire script, connettersi ai database MySQL per ottenere informazioni e consegnare i contenuti elaborati al server Web per visualizzarli.

Ancora una volta, sfrutta il sistema apt per installare PHP. Inoltre, questa volta includi alcuni pacchetti helper in modo che il codice PHP possa essere eseguito sotto il server Apache e parli con il tuo database MySQL:

sudo apt install php libapache2-mod-php php-mysql

Questo dovrebbe installare PHP senza problemi. Lo testeremo tra un momento.

Nella maggior parte dei casi, vorrai modificare il modo in cui Apache serve i file quando viene richiesta una directory. Attualmente, se un utente richiede una directory dal server, Apache cercherà prima un file chiamato index.html. Vogliamo dire al web server di preferire i file PHP rispetto ad altri, quindi fai prima Apache cercare un file index.php.

Per fare ciò, digitare questo comando per aprire il file dir.conf in un editor di testo con privilegi di root:

sudo vi /etc/apache2/mods-enabled/dir.conf

Sposta il file indice PHP (evidenziato sopra) nella prima posizione dopo la specifica DirectoryIndex, in questo modo:

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Successivamente, riavviare il server Web Apache per riconoscere le modifiche. Fallo digitando questo:

sudo systemctl restart apache2

Abilita modulo ssl

a2enmod ssl

systemctl restart apache2

Passaggio 4: impostazione di host virtuali (consigliato)

Crea la directory per tuo_dominio come segue:

sudo mkdir /var/www/your_domain

Le autorizzazioni delle tue radici web dovrebbero essere corrette se non hai modificato il valore di smascheramento, ma puoi assicurarti digitando:

sudo chown -R $USER:$USER /var/www/your_domain

Le autorizzazioni delle tue radici web dovrebbero essere corrette se non hai modificato il valore di smascheramento, ma puoi assicurarti digitando:

sudo chmod -R 755 /var/www/your_domain

Quindi, crea una pagina index.html di esempio utilizzando vi o il tuo editor preferito:

vi /var/www/your_domain/index.html

All’interno, aggiungi il seguente HTML di esempio:

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Salva e chiudi il file al termine.
Affinché Apache sia in grado di pubblicare questo contenuto, è necessario creare un file host virtuale con le direttive corrette. Invece di modificare direttamente il file di configurazione predefinito che si trova in /etc/apache2/sites-available/000-default.conf, ne facciamo uno nuovo in /etc/apache2/sites-available/your_domain.conf:

sudo vi /etc/apache2/sites-available/your_domain.conf

Incolla nel seguente blocco di configurazione, che è simile al predefinito, ma aggiornato per la nostra nuova directory e nome di dominio:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Si noti che abbiamo aggiornato DocumentRoot nella nostra nuova directory e ServerAdmin a un’email a cui l’amministratore del sito your_domain può accedere. Abbiamo anche aggiunto due direttive: ServerName, che stabilisce il dominio di base che deve corrispondere per questa definizione di host virtuale, e ServerAlias, che definisce ulteriori nomi che dovrebbero corrispondere come se fossero il nome di base.

Salva e chiudi il file al termine.

Abilitiamo il file con lo strumento a2ensite:

sudo a2ensite your_domain.conf

Disable the default site defined in 000-default.conf:

sudo a2dissite 000-default.conf

Next, let’s test for configuration errors:

sudo apache2ctl configtest

You should see the following output:

OutputSyntax OK

Restart Apache to implement your changes:

sudo systemctl restart apache2

Apache ora dovrebbe offrire il tuo nome di dominio. Puoi testarlo andando su http: // tuo_dominio, dove dovresti vedere qualcosa del genere:

Con ciò, l’host virtuale è completamente configurato. Prima di apportare ulteriori modifiche o distribuire un’applicazione, tuttavia, sarebbe utile testare in modo proattivo la configurazione di PHP nel caso in cui vi siano problemi da risolvere.

Crea il file nella radice web che hai creato nel passaggio precedente eseguendo:

sudo vi /var/www/your_domain/info.php

Questo aprirà un file vuoto. Aggiungi il seguente testo, che è un codice PHP valido, all’interno del file:

<?php
phpinfo();
?>

Al termine, salva e chiudi il file.

Ora puoi verificare se il tuo server web è in grado di visualizzare correttamente il contenuto generato da questo script PHP. Per provarlo, visita questa pagina nel tuo browser web. Avrai di nuovo bisogno dell’indirizzo IP pubblico del tuo server.

L’indirizzo che vorrai visitare è:

http://your_domain/info.php

La pagina in cui vieni dovrebbe essere simile a questa:

Questa pagina fornisce alcune informazioni di base sul tuo server dal punto di vista di PHP. È utile per il debug e per garantire che le impostazioni vengano applicate correttamente.

Se riesci a vedere questa pagina nel tuo browser, il tuo PHP funziona come previsto.

Probabilmente vuoi rimuovere questo file dopo questo test perché potrebbe effettivamente fornire informazioni sul tuo server a utenti non autorizzati. Per fare ciò, eseguire il comando seguente:

sudo rm /var/www/your_domain/info.php

È sempre possibile ricreare questa pagina se è necessario accedere nuovamente alle informazioni in un secondo momento.

Passaggio per: installazione di Certbot

Il primo passo per usare Let’s Encrypt per ottenere un certificato SSL è installare il software Certbot sul tuo server.

Certbot è in uno sviluppo molto attivo, quindi i pacchetti Certbot forniti da Ubuntu tendono ad essere obsoleti. Tuttavia, gli sviluppatori di Certbot gestiscono un repository di software Ubuntu con versioni aggiornate, quindi utilizzeremo invece tale repository.

Innanzitutto, aggiungi il repository:

sudo add-apt-repository ppa:certbot/certbot

Dovrai premere INVIO per accettare.

Installa il pacchetto Apache di Certbot con apt:

sudo apt install python-certbot-apache

Certbot è ora pronto per l’uso, ma per poter configurare SSL per Apache, dobbiamo verificare alcune delle configurazioni di Apache.

Passaggio per: ottenere un certificato SSL

Certbot offre una varietà di modi per ottenere certificati SSL tramite plugin. Il plugin Apache si occuperà di riconfigurare Apache e ricaricare la configurazione ogni volta che è necessario. Per utilizzare questo plugin, digitare quanto segue:

sudo certbot --apache -d your_domain -d www.your_domain

Questo esegue certbot con il plugin –apache, usando -d per specificare i nomi per i quali desideri che il certificato sia valido.

Se è la prima volta che esegui certbot, ti verrà chiesto di inserire un indirizzo e-mail e di accettare i termini del servizio. Dopo averlo fatto, certbot comunicherà con il server Let’s Encrypt, quindi lancerà una sfida per verificare che controlli il dominio per il quale stai richiedendo un certificato.

Se ciò ha esito positivo, certbot ti chiederà come desideri configurare le impostazioni HTTPS:

OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Seleziona la tua scelta quindi premi INVIO. La configurazione verrà aggiornata e Apache verrà ricaricata per recuperare le nuove impostazioni. certbot chiuderà con un messaggio che ti dice che il processo è andato a buon fine e dove sono memorizzati i tuoi certificati:

OutputIMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2018-07-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

I certificati vengono scaricati, installati e caricati. Prova a ricaricare il tuo sito Web utilizzando https: // e nota l’indicatore di sicurezza del browser. Dovrebbe indicare che il sito è adeguatamente protetto, di solito con un’icona a forma di lucchetto verde. Se testate il vostro server usando SSL Labs Server Test, otterrà un voto A.

Finiamo testando il processo di rinnovo.

Passaggio per: verifica del rinnovo automatico di Certbot

I certificati di Encrypt sono validi solo per novanta giorni. Questo per incoraggiare gli utenti ad automatizzare il processo di rinnovo del certificato. Il pacchetto certbot che abbiamo installato si occupa di questo aggiungendo uno script di rinnovo a /etc/cron.d. Questo script viene eseguito due volte al giorno e rinnoverà automaticamente qualsiasi certificato entro trenta giorni dalla scadenza.

Per testare il processo di rinnovo, puoi eseguire una corsa a secco con certbot:

sudo certbot renew --dry-run

Se non vedi errori, sei pronto. Se necessario, Certbot rinnoverà i certificati e ricaricherà Apache per raccogliere le modifiche. Se il processo di rinnovo automatico fallisce, Let’s Encrypt invierà un messaggio all’indirizzo email che hai specificato, avvisandoti quando il tuo certificato sta per scadere.
Conclusione

In questa esercitazione, hai installato il certbot del client Encrypt, scaricato certificati SSL per il tuo dominio, configurato Apache per utilizzare questi certificati e impostato il rinnovo automatico dei certificati. Se hai ulteriori domande sull’uso di Certbot, la loro documentazione è un buon punto di partenza.

Torna su