Esercitazione: Installare uno stack LAMP in una macchina virtuale Linux di Azure

Si applica a: ✔️ Macchine virtuali Linux

Questo articolo illustra come distribuire un server Web Apache, MySQL e PHP (lo stack LAMP) in una VM Ubuntu in Azure. Per verificare il funzionamento del server LAMP, è facoltativamente possibile installare e configurare un sito WordPress. In questa esercitazione si apprenderà come:

  • Creare una VM Ubuntu
  • Aprire la porta 80 per il traffico Web
  • Installare Apache, MySQL e PHP
  • Verificare l'installazione e la configurazione
  • Installare WordPress

Questa installazione è utilizzabile per i test rapidi o il modello di prova. Per altre informazioni sullo stack LAMP, incluse le raccomandazioni per un ambiente di produzione, vedere la documentazione di Ubuntu.

Questa esercitazione usa l'interfaccia della riga di comando all'interno di Azure Cloud Shell, che viene costantemente aggiornato alla versione più recente. Per aprire Cloud Shell, selezionare Prova nella parte superiore di qualsiasi blocco di codice.

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, questa esercitazione richiede l'esecuzione dell'interfaccia della riga di comando di Azure versione 2.0.30 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Creare un gruppo di risorse

Creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

az group create --name myResourceGroup --location eastus

Creare una macchina virtuale

Creare una VM con il comando az vm create.

L'esempio seguente crea una macchina virtuale denominata myVM e crea chiavi SSH se non esistono già in un percorso di chiave predefinito. Per usare un set specifico di chiavi, utilizzare l'opzione --ssh-key-value. Il comando imposta anche azureuser come nome utente dell'amministratore. Questo nome verrà usato nei passaggi successivi per la connessione alla macchina virtuale.

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

Dopo che la VM è stata creata, l'interfaccia della riga di comando di Azure mostra informazioni simili all'esempio seguente. Prendere nota di publicIpAddress. Questo indirizzo verrà usato nei passaggi successivi per l'accesso alla macchina virtuale.

{
  "fqdns": "",
  "id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.68.254.142",
  "resourceGroup": "myResourceGroup"
}

Aprire la porta 80 per il traffico Web

Per impostazione predefinita, nelle VM Linux distribuite in Azure sono consentite solo le connessioni SSH. Poiché questa macchina virtuale verrà usata come server Web, è necessario aprire la porta 80 da Internet. Usare il comando az vm open-port per aprire la porta.

az vm open-port --port 80 --resource-group myResourceGroup --name myVM

Per altre informazioni sull'apertura delle porte alla macchina virtuale, vedere Aprire le porte.

Usare SSH per connettersi alla macchina virtuale

Se non si conosce già l'indirizzo IP pubblico della macchina virtuale, eseguire il comando az network public-ip list . Questo indirizzo IP sarà necessario in alcuni passaggi successivi.

az network public-ip list --resource-group myResourceGroup --query [].ipAddress

Usare il comando seguente per creare una sessione SSH con la macchina virtuale. Sostituire l'indirizzo IP pubblico corretto della macchina virtuale. In questo esempio l'indirizzo IP è 40.68.254.142. azureuser è il nome utente dell'amministratore impostato al momento della creazione della macchina virtuale.

ssh azureuser@40.68.254.142

Installare Apache, MySQL e PHP

Usare il comando seguente per aggiornare le origini dei pacchetti Ubuntu e installare Apache, MySQL e PHP. Si noti che alla fine del comando è presente un accento circonflesso (^) che fa parte del nome del pacchetto lamp-server^.

sudo apt update && sudo apt install lamp-server^

Viene richiesto di installare i pacchetti e altre dipendenze. In questo modo vengono installate le estensioni PHP minime richieste per l'uso di PHP con MySQL.

Verificare Apache

Controllare la versione di Apache con il comando seguente:

apache2 -v

Con Apache installato e la porta 80 aperta per la macchina virtuale, è ora possibile accedere al server Web da Internet. Per visualizzare Apache2 Ubuntu Default Page (Pagina predefinita Apache2 Ubuntu), aprire un Web browser e immettere l'indirizzo IP pubblico della VM. Usare l'indirizzo IP pubblico usato per stabilire la connessione SSH alla VM:

Pagina predefinita di Apache

Verificare e proteggere MySQL

Controllare la versione di MySQL con il comando seguente. Si noti il parametro V in maiuscolo:

mysql -V

Per proteggere l'installazione di MySQL, impostando anche una password radice, eseguire lo script mysql_secure_installation.

sudo mysql_secure_installation

Facoltativamente, è possibile configurare il plug-in di convalida password (scelta consigliata). Impostare quindi una password per l'utente ROOT MySQL e configurare le restanti impostazioni di sicurezza per l'ambiente. È consigliabile rispondere "Y" (sì) a tutte le domande.

Per provare le funzionalità di MySQL, ovvero creare un database MySQL, aggiungere utenti o modificare le impostazioni di configurazione, accedere a MySQL. Questo passaggio non è necessario per completare questa esercitazione.

sudo mysql -u root -p

Al termine, chiudere il prompt mysql digitando \q.

Verificare PHP

Controllare la versione di PHP con il comando seguente:

php -v

Per eseguire altri test, creare rapidamente una pagina di informazioni PHP da visualizzare in un browser. Il comando seguente crea la pagina di informazioni di PHP:

sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'

Ora è possibile controllare la pagina di informazioni di PHP creata. Aprire un browser e passare a http://yourPublicIPAddress/info.php. Sostituire l'indirizzo IP pubblico della VM. Dovrebbe avere un aspetto simile a questa immagine.

Pagina di informazioni di PHP

Installare WordPress

Per provare lo stack, installare un'app di esempio. Come esempio, con i passaggi seguenti viene installata la piattaforma open source WordPress per creare siti Web e blog. Altri carichi di lavoro da provare includono Drupal e Moodle.

Questa installazione di WordPress è utilizzabile solo per il modello di verifica. Per installare la versione più recente di WordPress in un ambiente di produzione con le impostazioni di sicurezza consigliate, vedere la documentazione di WordPress.

Installare il pacchetto WordPress

Eseguire il comando seguente:

sudo apt install wordpress

Configurazione di WordPress

Configurare WordPress per usare MySQL e PHP.

In una directory di lavoro creare un file di testo wordpress.sql per configurare il database MySQL per WordPress:

sudo sensible-editor wordpress.sql

Aggiungere i comandi seguenti, sostituendo yourPassword con una password del database di propria scelta. Lasciare invariati gli altri valori. Se in precedenza sono stati configurati criteri di sicurezza MySQL per convalidare la complessità della password, verificare che la password soddisfi i requisiti di complessità. Salvare il file.

CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'yourPassword';

Eseguire il comando seguente per creare il database:

cat wordpress.sql | sudo mysql --defaults-extra-file=/etc/mysql/debian.cnf

Poiché il file wordpress.sql contiene le credenziali del database, eliminarlo dopo l'uso:

sudo rm wordpress.sql

Per configurare PHP, usare il comando seguente per aprire un editor di testo di propria scelta e creare il file /etc/wordpress/config-localhost.php:

sudo sensible-editor /etc/wordpress/config-localhost.php

Copiare le righe seguenti nel file, sostituendo yourPassword con la password del database di WordPress. Lasciare invariati gli altri valori. Salvare quindi il file.

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'yourPassword');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

Spostare l'installazione di WordPress nella radice dei documenti del server Web:

sudo ln -s /usr/share/wordpress /var/www/html/wordpress

sudo mv /etc/wordpress/config-localhost.php /etc/wordpress/config-default.php

È ora possibile completare la configurazione di WordPress e pubblicare sulla piattaforma. Aprire un browser e passare a http://yourPublicIPAddress/wordpress. Sostituire l'indirizzo IP pubblico della VM. Dovrebbe avere un aspetto simile a questa immagine.

Pagina di installazione di WordPress

Passaggi successivi

In questa esercitazione si è distribuito un server LAMP in Azure. Si è appreso come:

  • Creare una VM Ubuntu
  • Aprire la porta 80 per il traffico Web
  • Installare Apache, MySQL e PHP
  • Verificare l'installazione e la configurazione
  • Installare WordPress nel server LAMP

Passare all'esercitazione successiva per apprendere come proteggere i server Web con i certificati TLS/SSL.