Come installare lo stack Apache, MySQL, PHP (LAMP) su Ubuntu 16.04

  • Home /
  • Server Side /
  • Come installare lo stack Apache, MySQL, PHP (LAMP) su Ubuntu 16.04

In questa guida, verrà installato uno stack LAMP su una macchina Ubuntu 16.04. Ubuntu soddisferà il nostro primo requisito: un sistema operativo Linux.

Image Description

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

Prerequisiti

Prima di iniziare con questa guida, è necessario disporre di un account utente separato, non root con i privilegi sudo impostati sul server.

Passaggio 1: Installa Apache e consenti l'accesso nel firewall

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

Possiamo installare Apache facilmente usando il gestore di pacchetti di Ubuntu, apt. Un gestore di pacchetti ci consente di installare la maggior parte del software senza problemi da un repository gestito da Ubuntu.

Per i nostri scopi, possiamo iniziare digitando questi comandi:

$ sudo apt-get update
$ sudo apt-get install apache2

Dato che stiamo usando un comando sudo, queste operazioni vengono eseguite con i privilegi di root. Ti chiederà la password dell'utente normale per verificare le tue intenzioni.

Una volta inserita la tua password, apt ti dirà quali pacchetti intende installare e quanto spazio su disco occuperanno. Premi Y e premi Invio per continuare, e l'installazione procederà.

Impostare Global ServerName per sopprimere gli avvisi di sintassi

Successivamente, aggiungeremo una riga singola al file /etc/apache2/apache2.conf per sopprimere un messaggio di avviso. Sebbene innocuo, se non si imposta ServerName a livello globale, si riceverà il seguente avviso quando si controlla la configurazione di Apache per gli errori di sintassi:

$ sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Apri il file di configurazione principale /etc/apache2/apache2.conf col tuo editor di testo:

. . .
ServerName server_domain_or_IP

Quindi, verifica la presenza di errori di sintassi digitando:

$ sudo apache2ctl configtest

Da quando abbiamo aggiunto la direttiva globale ServerName, tutto ciò che dovresti vedere è:

Output
Syntax OK

Riavvia Apache per implementare le tue modifiche:

$ sudo systemctl restart apache2

Ora puoi iniziare a regolare il firewall.

Regola il firewall per consentire il traffico web

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

sudo ufw app list
Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Se si guarda il profilo Apache Full, dovrebbe mostrare che abilita il traffico alle porte 80 e 443:

$ sudo ufw app info "Apache Full"
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Consenti traffico in entrata per questo profilo:

$ sudo ufw allow in "Apache Full"

È possibile eseguire immediatamente un controllo spot per verificare che tutto sia andato come previsto visitando l'indirizzo IP pubblico del server nel browser Web (consultare la nota alla voce successiva per scoprire qual è il proprio indirizzo IP pubblico se non si dispone gia' di queste informazioni):

http://your_server_IP_address

Vedrai la pagina web predefinita di Ubuntu 16.04 Apache, che è a scopo informativo e di test. Dovrebbe assomigliare a qualcosa di simile a questo:

Se vedi questa pagina, il tuo server web ora è correttamente installato e accessibile attraverso il tuo firewall.

Come trovare l'indirizzo IP pubblico del tuo server

Se non sai qual è l'indirizzo IP pubblico del tuo server, ci sono diversi modi per trovarlo. Di solito, è l'indirizzo che usi per connetterti al tuo server tramite SSH.

Dalla riga di comando, puoi trovarlo in alcuni modi. Innanzitutto, puoi utilizzare gli strumenti iproute2 per ottenere il tuo indirizzo digitando questo:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Questo ti restituirà due o tre righe. Sono tutti indirizzi corretti, ma il tuo computer potrebbe essere in grado di usarne solo uno, quindi sentiti libero di provarli tutti.

Un metodo alternativo consiste nell'utilizzare l'utilità Curl per contattare una parte esterna per dirti come vede il tuo server. Puoi farlo chiedendo ad un server specifico qual'è il tuo indirizzo IP:

$ sudo apt-get install curl
$ curl http://icanhazip.com

Indipendentemente dal metodo utilizzato per ottenere il tuo indirizzo IP, puoi inserirlo nella barra degli indirizzi del tuo browser Web per arrivare al tuo server.

Passaggio 2: Installa MySQL

Ora che abbiamo il nostro server web attivo e funzionante, è ora di installare MySQL. MySQL è un sistema di gestione di database. Fondamentalmente, organizzerà e fornirà l'accesso ai database in cui il nostro sito può memorizzare informazioni.

Ancora una volta, possiamo usare apt per acquisire e installare il nostro software. Questa volta installeremo anche altri pacchetti "helper" che ci aiuteranno a far comunicare i nostri componenti tra loro:

$ sudo apt-get install mysql-server

Di nuovo, ti verrà mostrato un elenco dei pacchetti che verranno installati, insieme alla quantità di spazio su disco che occuperanno. Immettere Y per continuare.

Durante l'installazione, il tuo server ti chiederà di selezionare e confermare una password per l'utente "root" MySQL. Questo è un account amministrativo in MySQL che ha aumentato i privilegi. Pensa che sia simile all'account di root per il server stesso (quello che stai configurando ora è un account specifico per MySQL, comunque). Assicurati che questa sia una password forte e unica e non lasciarla vuota.

Quando l'installazione è completa, vogliamo eseguire un semplice script di sicurezza che rimuoverà alcune impostazioni di default pericolose e bloccherà un po 'l'accesso al nostro sistema di database. Avvia lo script interattivo eseguendo:

mysql_secure_installation

Ti verrà chiesto di inserire la password che hai impostato per l'account di root MySQL. Successivamente, ti verrà chiesto se desideri configurare VALIDATE PASSWORD PLUGIN.

Avviso: l'attivazione di questa funzione è una sorta di sentenza. Se abilitato, le password che non corrispondono ai criteri specificati verranno respinte da MySQL con un errore. Ciò causerà problemi se si utilizza una password debole in combinazione con un software che configura automaticamente le credenziali utente MySQL, come i pacchetti Ubuntu per phpMyAdmin. È sicuro lasciare la convalida disabilitata, ma è necessario utilizzare sempre password complesse e univoche per le credenziali del database.

Rispondi y per sì, o qualsiasi altra cosa per continuare senza abilitazione.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Ti verrà chiesto di selezionare un livello di convalida della password. Tieni presente che se inserisci 2, per il livello più elevato, riceverai errori quando tenti di impostare una password che non contenga numeri, lettere maiuscole e minuscole e caratteri speciali o che sia basata su parole di dizionario comuni.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Se hai abilitato la convalida della password, ti verrà mostrata la forza della password per la password di root esistente e ti verrà chiesto se desideri cambiare la password. Se sei soddisfatto della tua password corrente, inserisci n per "no" al prompt:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Per il resto delle domande, devi premere Y e premere il tasto Invio ad ogni prompt. Questo rimuoverà alcuni utenti anonimi e il database di test, disabiliterà gli accessi root remoti e caricherà queste nuove regole in modo che MySQL rispetti immediatamente le modifiche che abbiamo apportato.

A questo punto, il tuo sistema di database è ora configurato e possiamo andare avanti.

Passaggio 3: Installa PHP

PHP è il componente del nostro setup che elaborerà il codice per visualizzare il contenuto dinamico. Può eseguire script, connettersi ai nostri database MySQL per ottenere informazioni e consegnare il contenuto elaborato al nostro server Web per la visualizzazione.

$ sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

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

Nella maggior parte dei casi, vorremmo 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à per prima cosa un file chiamato index.html. Vogliamo dire al nostro web server di preferire i file PHP, quindi faremo in modo che Apache cerchi prima un file index.php.

$ sudo nano /etc/apache2/mods-enabled/dir.conf

Sembrerà così:

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

Al termine, salva e chiudi il file premendo Ctrl-X. Dovrai confermare il salvataggio digitando Y e quindi premi Invio per confermare il salvataggio del file.

Dopodiché, è necessario riavviare il server Web Apache affinché le modifiche vengano riconosciute. Puoi farlo digitando questo:

$ sudo systemctl restart apache2

Possiamo anche controllare lo stato del servizio apache2 usando systemctl:

$ sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]:  * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]:  *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Installa i moduli PHP

Per migliorare la funzionalità di PHP, possiamo facoltativamente installare alcuni moduli aggiuntivi.

Per vedere le opzioni disponibili per i moduli e le librerie PHP, è possibile reindirizzare i risultati della ricerca di apt-cache in meno, un cercapersone che consente di scorrere l'output di altri comandi:

$ apt-cache search php- | less

Utilizzare i tasti freccia per scorrere su e giù e q per uscire.

I risultati sono tutti componenti opzionali che è possibile installare. Ti fornirà una breve descrizione per ciascuno:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Per ottenere maggiori informazioni su cosa fa ogni modulo, puoi cercare su internet, oppure puoi guardare la descrizione lunga del pacchetto digitando:

apt-cache show package_name

Ci sarà un sacco di output, con un campo chiamato Descrizione-en che avrà una spiegazione più lunga della funzionalità fornita dal modulo.

Ad esempio, per scoprire cosa fa il modulo php-cli, potremmo digitare questo:

$ apt-cache show php-cli

Oltre a una grande quantità di altre informazioni, troverai qualcosa di simile a questo:

Output
…
Description-en: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Debian's default
 PHP version (currently 7.0).
…

Se, dopo una ricerca, decidi di voler installare un pacchetto, puoi farlo usando il comando apt-get install come abbiamo fatto per il nostro altro software.

Se decidessimo che php-cli è qualcosa di cui abbiamo bisogno, potremmo digitare:

sudo apt-get install php-cli

Se vuoi installare più di un modulo, puoi farlo elencando ognuno di essi, separato da uno spazio, seguendo il comando apt-get install, come questo:

$ sudo apt-get install package1 package2 ...sudo apt-get install package1 package2 ...sudo apt-get install package1 package2 ...

A questo punto, il tuo stack LAMP è installato e configurato. Dovremmo comunque testare il nostro PHP.

Passaggio 4: testare l'elaborazione PHP sul proprio server Web

Per verificare che il nostro sistema sia configurato correttamente per PHP, possiamo creare uno script PHP di base.

Chiameremo questo script info.php. Affinché Apache trovi il file e lo serva correttamente, deve essere salvato in una directory molto specifica, che viene chiamata "web root".

In Ubuntu 16.04, questa directory si trova in / var / www / html /

Possiamo creare il file in quella posizione digitando:

$ sudo nano /var/www/html/info.php

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

<?php
phpinfo();
?>

Al termine, salva e chiudi il file.

Ora possiamo verificare se il nostro server Web può visualizzare correttamente il contenuto generato da uno script PHP. Per provare questo, dobbiamo solo visitare questa pagina nel nostro browser web. Avrai bisogno di nuovo l'indirizzo IP pubblico del tuo server.

L'indirizzo che vuoi visitare sarà:

http://your_server_IP_address/info.php

La pagina dovrebbe apparire in questo modo:

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

Se questo ha avuto successo, allora il tuo PHP funziona come previsto.

Probabilmente vorrai rimuovere questo file dopo questo test perché potrebbe effettivamente fornire informazioni sul tuo server agli utenti non autorizzati. Per fare questo, puoi digitare:

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

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

Conclusione

Ora che hai installato uno stack LAMP, hai molte opzioni per cosa fare dopo. Fondamentalmente, hai installato una piattaforma che ti permetterà di installare la maggior parte dei siti Web e del software web sul tuo server.

Come passo successivo immediato, dovresti assicurarti che le connessioni al tuo server web siano protette, servendole tramite HTTPS. L'opzione più semplice qui è utilizzare Let's Encrypt per proteggere il tuo sito con un certificato TLS / SSL gratuito.

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

Possiamo ancora una volta sfruttare il sistema apt per installare i nostri componenti. Includeremo anche alcuni pacchetti helper, in modo che il codice PHP possa essere eseguito sotto il server Apache e parlare con il nostro database MySQL:


Server Side

  • Dependency injections in PHP

    Dependency injections (DI) è un design pattern della Programmazione orientata agli oggetti il cui scopo è quello di semplificare lo sviluppo e migliorare la testabilità di software di grandi dimensioni.

    Leggi
  • Il garante privacy sta sviluppando un crawler per scandagliare il web alla ricerca di siti non in regola con il GDPR

    Il garante privacy sta sviluppando un crawler per scandagliare il web alla ricerca di siti non in regola con il GDPR

    Leggi
  • Configurazione iniziale del server con Ubuntu 16.04

    Quando crei per la prima volta un nuovo server Ubuntu 16.04, ci sono alcuni passaggi di configurazione da eseguire in anticipo come parte della configurazione di base. Ciò aumenterà la sicurezza e l'usabilità del server e fornirà una solida base per le azioni successive.

    Leggi
  • Come installare WordPress con LAMP su Ubuntu 16.04

    WordPress è il CMS più popolare su Internet. Ti consente di impostare facilmente blog e siti web flessibili su un backend MySQL con elaborazione PHP. WordPress ha visto un'adozione incredibile ed è un'ottima scelta per far funzionare rapidamente un sito web. Dopo l'installazione, è possibile eseguire quasi tutta l'amministrazione tramite il front-end Web.

    Leggi
  • Come proteggere WordPress dagli attacchi XML-RPC

    WordPress è una piattaforma CMS (content management system) popolare e potente. La sua popolarità può portare ad un' attenzione indesiderata sotto forma di traffico malevolo appositamente mirato a un sito WordPress.

    Leggi
  • Servizi di Object Storage vs. servizi di Block Storage

    Lo storage di dati flessibile e scalabile è un requisito di base per la maggior parte delle applicazioni e dei servizi sviluppati con tecniche e strumenti moderni.

    Leggi
  • Come fare il backup di un sito wordpress sul cloud di Digital Ocean

    Il servizio Spaces di DigitalOcean può fornire una soluzione di archiviazione di oggetti per i dati dei siti di WordPress

    Leggi
  • Come installare lo stack Apache, MySQL, PHP (LAMP) su Ubuntu 16.04

    In questa guida, verrà installato uno stack LAMP su una macchina Ubuntu 16.04. Ubuntu soddisferà il nostro primo requisito: un sistema operativo Linux.

    Leggi
  • Installare il certificato Let's Encrypt per Apache su Ubuntu 16.04

    Questo tutorial vi spiegherà come configurare un certificato TLS / SSL da Let's Encrypt su un server Ubuntu 16.04 che esegue Apache come server web.

    Leggi

Logo

Sviluppo progetti web dall'analisi alla produzione

Interventi di implementazione su software esistenti.

Contatti

4, av du Ray, Nice
France, FR
Email: massimo.ivaldi@codegarage.it