Distribuire un'applicazione LAMP utilizzando l'estensione CustomScript di Azure per LinuxDeploy a LAMP app using the Azure CustomScript Extension for Linux

Importante

Azure offre due diversi modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and Classic. Questo articolo illustra l'uso del modello di distribuzione classica.This article covers using the Classic deployment model. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti.Microsoft recommends that most new deployments use the Resource Manager model. Per informazioni sulla distribuzione di uno stack LAMP con il modello di Resource Manager, vedere qui.For information about deploying a LAMP stack using the Resource Manager model, see here.

L'estensione CustomScript di Microsoft Azure per Linux fornisce un modo per personalizzare le macchine virtuali (VM) tramite l'esecuzione di codice arbitrario scritto in un linguaggio supportato dalla macchina virtuale (ad esempio, Python e Bash).The Microsoft Azure CustomScript Extension for Linux provides a way to customize your virtual machines (VMs) by running arbitrary code written in any scripting language supported by the VM (for example, Python, and Bash). In tal modo è possibile automatizzare la distribuzione di applicazioni a più computer in un modo molto flessibile.This provides a very flexible way to automate application deployment to multiple machines.

È possibile distribuire l'estensione CustomScript tramite il portale di Azure, Windows PowerShell o l'interfaccia della riga di comando di Azure.You can deploy the CustomScript Extension using the Azure portal, Windows PowerShell, or the Azure Command-Line Interface (Azure CLI).

In questo articolo utilizzeremo la CLI di Azure per distribuire una semplice applicazione LAMP a una macchina virtuale di Ubuntu creata utilizzando il modello di distribuzione classica.In this article we'll use the Azure CLI to deploy a simple LAMP application to an Ubuntu VM created using the classic deployment model.

PrerequisitiPrerequisites

Per questo esempio, creare innanzitutto due macchine virtuali di Azure che eseguano Ubuntu 14.04 o la versione successiva.For this example, first create two Azure VMs running Ubuntu 14.04 or later. Le macchine virtuali vengono chiamate script-vm e lamp-vm.The VMs are called script-vm and lamp-vm. Quando si creano macchine virtuali, utilizzare sempre nomi univoci.Use unique names when you create the VMs. Uno viene utilizzato per eseguire i comandi dell’interfaccia della riga di comando e uno viene utilizzato per distribuire l'applicazione LAMP.One is used to run the CLI commands and one is used to deploy the LAMP app.

Sono necessari anche un account di archiviazione di Azure e una chiave di accesso, che è possibile ottenere nel portale di Azure.You also need an Azure Storage account and a key to access it (you can get this from the Azure portal).

Per informazioni sulla creazione delle macchine virtuali Linux in Azure, fare riferimento a Creare una macchina virtuale che esegue Linux.If you need help creating Linux VMs on Azure refer to Create a Virtual Machine Running Linux.

I comandi di installazione presuppongono Ubuntu, ma è possibile adattare l'installazione per qualsiasi distro Linux supportata.The install commands assume Ubuntu, but you can adapt the installation for any supported Linux distro.

La macchina virtuale script-vm richiede l'interfaccia della riga di comando di Azure installata e una connessione ad Azure attiva.The script-vm VM needs to have Azure CLI installed, with a working connection to Azure. Per informazioni, fare riferimento a Installare e configurare l'interfaccia della riga di comando multipiattaforma di Azure.For help with this refer to Install and Configure the Azure Command-Line Interface.

Caricamento di uno scriptUpload a script

Si utilizzerà l'estensione CustomScript per eseguire uno script in una macchina virtuale remota per installare lo stack LAMP e creare una pagina PHP.We'll use the CustomScript Extension to run a script on a remote VM to install the LAMP stack and create a PHP page. Per accedere ovunque ci si trovi, lo script viene caricato come blob di Azure.In order to access the script from anywhere we'll upload it as an Azure blob.

Panoramica di scriptScript overview

Lo script consente di installare uno stack LAMP in Ubuntu (inclusa l'impostazione di un'installazione invisibile all'utente di MySQL), di scrivere un semplice file PHP e di avviare Apache:The script example installs a LAMP stack to Ubuntu (including setting up a silent install of MySQL), writes a simple PHP file, and starts Apache.

#!/bin/bash
# set up a silent install of MySQL
dbpass="mySQLPassw0rd"

export DEBIAN_FRONTEND=noninteractive
echo mysql-server-5.6 mysql-server/root_password password $dbpass | debconf-set-selections
echo mysql-server-5.6 mysql-server/root_password_again password $dbpass | debconf-set-selections

# install the LAMP stack
apt-get -y install apache2 mysql-server php5 php5-mysql  

# write some PHP
echo \<center\>\<h1\>My Demo App\</h1\>\<br/\>\</center\> > /var/www/html/phpinfo.php
echo \<\?php phpinfo\(\)\; \?\> >> /var/www/html/phpinfo.php

# restart Apache
apachectl restart

Caricamento scriptUpload script

Salvare lo script come file di testo, ad esempio install_lamp.sh e caricarlo nell'archiviazione di Azure.Save the script as a text file, for example install_lamp.sh, and then upload it to Azure Storage. È possibile eseguire facilmente questa operazione con l’interfaccia della riga di comando di Azure.You can do this easily with Azure CLI. Nell'esempio seguente il file viene caricato in un contenitore di archiviazione denominato "scripts".The following example uploads the file to a storage container named "scripts". se il contenitore non esiste, è necessario prima crearlo.If the container doesn't exist you'll need to create it first.

azure storage blob upload -a <yourStorageAccountName> -k <yourStorageKey> --container scripts ./install_lamp.sh

Creare inoltre un file JSON che descrive la procedura di download dello script dall'archiviazione di Azure.Also create a JSON file that describes how to download the script from Azure Storage. Salvare il file come public_config.json (sostituendo "mystorage" con il nome dell'account di archiviazione in uso):Save this as public_config.json (replacing "mystorage" with the name of your storage account):

{"fileUris":["https://mystorage.blob.core.windows.net/scripts/install_lamp.sh"], "commandToExecute":"sh install_lamp.sh" }

Distribuzione dell'estensioneDeploy the extension

A questo punto, è possibile utilizzare il seguente comando per distribuire l'estensione CustomScript di Linux alla macchina virtuale remota utilizzando l'interfaccia della riga di comando di Azure.Now you can use the next command to deploy the Linux CustomScript Extension to the remote VM using the Azure CLI.

azure vm extension set -c "./public_config.json" lamp-vm CustomScript Microsoft.Azure.Extensions 2.0

In tal modo verrà scaricato ed eseguito lo script install_lamp.sh in una macchina virtuale denominata lamp-vm.The previous command downloads and runs the install_lamp.sh script on the VM called lamp-vm.

Poiché l'applicazione include un server Web, ricordarsi di aprire una porta di ascolto HTTP nella macchina virtuale remota con il seguente comando:Since the app includes a web server, remember to open an HTTP listening port on the remote VM with the next command.

azure vm endpoint create -n Apache -o tcp lamp-vm 80 80

Monitoraggio e risoluzione dei problemiMonitoring and troubleshooting

È possibile controllare l'avanzamento dell'esecuzione dello script personalizzato esaminando il file di log nella macchina virtuale remota.You can check on how well the custom script runs by looking at the log file on the remote VM. SSH per lamp-vm e tail per il file di log con il seguente comando:SSH to lamp-vm and tail the log file with the next command.

cd /var/log/azure/customscript
tail -f handler.log

Dopo aver eseguito l'estensione CustomScript, è possibile esplorare la pagina PHP creata per le informazioni.After you run the CustomScript Extension, you can browse to the PHP page you created for information. La pagina PHP per l'esempio in questo articolo è http://lamp-vm.cloudapp.net/phpinfo.php.The PHP page for the example in this article is http://lamp-vm.cloudapp.net/phpinfo.php.

Risorse aggiuntiveAdditional resources

È possibile utilizzare gli stessi passaggi di base per distribuire applicazioni più complesse.You can use the same basic steps to deploy more complex apps. In questo esempio lo script di installazione è stato salvato come blob pubblico in Archiviazione di Azure.In this example the install script was saved as a public blob in Azure Storage. Un'opzione più sicura sarebbe archiviare lo script di installazione come blob protetto con una firma di accesso protetto (SAS).A more secure option would be to store the install script as a secure blob with a Secure Access Signature (SAS).

Di seguito sono riportate alcune risorse aggiuntive per l’interfaccia della riga di comando di Azure, Linux e l'estensione CustomScript:Additional resources for Azure CLI, Linux and the CustomScript Extension are listed next.

Automatizzare le attività di personalizzazione delle macchine virtuali Linux utilizzando l'estensione CustomScriptAutomate Linux VM Customization Tasks Using CustomScript Extension

Estensioni per Linux di Azure (GitHub)Azure Linux Extensions (GitHub)