Installare e configurare PostgreSQL in AzureInstall and configure PostgreSQL on Azure

PostgreSQL è un database open source avanzato simile a Oracle e DB2.PostgreSQL is an advanced open-source database similar to Oracle and DB2. Questo database include funzionalità aziendali quali la conformità ACID completa, l'elaborazione transazionale affidabile e il controllo della concorrenza per più versioni.It includes enterprise-ready features such as full ACID compliance, reliable transactional processing, and multi-version concurrency control. Supporta anche standard come ANSI SQL e SQL/MED (compresi wrapper di dati esterni per Oracle, MySQL, MongoDB e molti altri).It also supports standards such as ANSI SQL and SQL/MED (including foreign data wrappers for Oracle, MySQL, MongoDB, and many others). È inoltre altamente estendibile, supportando oltre 12 linguaggi procedurali, gli indici GIN e GIST, i dati spaziali e più funzionalità di tipo NoSQL per le applicazioni basate su chiave-valore o JSON.It is highly extensible with support for over 12 procedural languages, GIN and GiST indexes, spatial data support, and multiple NoSQL-like features for JSON or key-value-based applications.

Questo articolo illustrerà come installare e configurare PostgreSQL in una macchina virtuale di Azure che esegue Linux.In this article, you will learn how to install and configure PostgreSQL on an Azure virtual machine running Linux.

Nota

Azure offre due 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. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

Installare PostgreSQLInstall PostgreSQL

Nota

Per poter completare questa esercitazione, è necessario disporre già di una macchina virtuale di Microsoft Azure che esegue Linux.You must already have an Azure virtual machine running Linux in order to complete this tutorial. Prima di procedere, vedere l' esercitazione relativa alle macchine virtuali Linux di Azureper creare e impostare una macchina virtuale Linux.To create and set up a Linux VM before proceeding, see the Azure Linux VM tutorial.

In questo caso, usare la porta 1999 come porta di PostgreSQL.In this case, use port 1999 as the PostgreSQL port.

Connettersi tramite PuTTY alla macchina virtuale Linux creata.Connect to the Linux VM you created via PuTTY. Se questa è la prima volta che si sta usando una macchina virtuale Linux di Azure, vedere usare SSH con Linux in Azure per imparare a usare PuTTY per connettersi a una VM Linux.If this is the first time you're using an Azure Linux VM, see How to Use SSH with Linux on Azure to learn how to use PuTTY to connect to a Linux VM.

  1. Eseguire il comando seguente per passare alla directory radice (admin):Run the following command to switch to the root (admin):

     # sudo su -
    
  2. Alcune distribuzioni dispongono di dipendenze che è necessario installare prima di eseguire l'installazione di PostgreSQL.Some distributions have dependencies that you must install before installing PostgreSQL. Nell'elenco individuare la distribuzione in uso ed eseguire il comando appropriato:Check for your distro in this list and run the appropriate command:

    • Linux basato su Red Hat:Red Hat base Linux:

        # yum install readline-devel gcc make zlib-devel openssl openssl-devel libxml2-devel pam-devel pam  libxslt-devel tcl-devel python-devel -y  
      
    • Linux basato su Debian:Debian base Linux:

         # apt-get install readline-devel gcc make zlib-devel openssl openssl-devel libxml2-devel pam-devel pam libxslt-devel tcl-devel python-devel -y  
      
    • SUSE Linux:SUSE Linux:

        # zypper install readline-devel gcc make zlib-devel openssl openssl-devel libxml2-devel pam-devel pam  libxslt-devel tcl-devel python-devel -y  
      
  3. Scaricare PostgreSQL nella directory radice e quindi decomprimere il pacchetto:Download PostgreSQL into the root directory, and then unzip the package:

     # wget https://ftp.postgresql.org/pub/source/v9.3.5/postgresql-9.3.5.tar.bz2 -P /root/
    
     # tar jxvf  postgresql-9.3.5.tar.bz2
    

    Quello precedente è un esempio.The above is an example. Per l'indirizzo di download più dettagliato, vedere Indice di /pub/source/.You can find the more detailed download address in the Index of /pub/source/.

  4. Per avviare la compilazione, eseguire questi comandi:To start the build, run these commands:

     # cd postgresql-9.3.5
    
     # ./configure --prefix=/opt/postgresql-9.3.5
    
  5. Se si intende compilare tutti gli elementi compilabili, inclusi la documentazione (pagine HTML e man) e i moduli aggiuntivi (contrib), eseguire invece il comando seguente:If you want to build everything that can be built, including the documentation (HTML and man pages) and additional modules (contrib), run the following command instead:

     # gmake install-world
    

    Dovrebbe venire visualizzato il messaggio di conferma seguente:You should receive the following confirmation message:

     PostgreSQL, contrib, and documentation successfully made. Ready to install.
    

Configurare PostgreSQLConfigure PostgreSQL

  1. (Facoltativo) Creare un collegamento simbolico per abbreviare il riferimento a PostgreSQL in modo da non includere il numero di versione:(Optional) Create a symbolic link to shorten the PostgreSQL reference to not include the version number:

     # ln -s /opt/pgsql9.3.5 /opt/pgsql
    
  2. Creare una directory per il database:Create a directory for the database:

     # mkdir -p /opt/pgsql_data
    
  3. Creare un utente non ROOT e modificare il relativo profilo.Create a non-root user and modify that user’s profile. Passare quindi a tale nuovo utente (denominato postgres nell'esempio):Then, switch to this new user (called postgres in our example):

     # useradd postgres
    
     # chown -R postgres.postgres /opt/pgsql_data
    
     # su - postgres
    

    Nota

    Per motivi di sicurezza, PostgreSQL usa un utente non ROOT per inizializzare, avviare o arrestare il database.For security reasons, PostgreSQL uses a non-root user to initialize, start, or shut down the database.

  4. Modificare il file bash_profile immettendo i comandi seguenti.Edit the bash_profile file by entering the commands below. Queste righe verranno aggiunte alla fine del file bash_profile:These lines will be added to the end of the bash_profile file:

     cat >> ~/.bash_profile <<EOF
     export PGPORT=1999
     export PGDATA=/opt/pgsql_data
     export LANG=en_US.utf8
     export PGHOME=/opt/pgsql
     export PATH=\$PATH:\$PGHOME/bin
     export MANPATH=\$MANPATH:\$PGHOME/share/man
     export DATA=`date +"%Y%m%d%H%M"`
     export PGUSER=postgres
     alias rm='rm -i'
     alias ll='ls -lh'
     EOF
    
  5. Eseguire il file bash_profile:Execute the bash_profile file:

     $ source .bash_profile
    
  6. Convalidare l'installazione con il comando seguente:Validate your installation by using the following command:

     $ which psql
    

    Se l'installazione ha avuto esito positivo, verrà visualizzata la risposta seguente:If your installation is successful, you will see the following response:

     /opt/pgsql/bin/psql
    
  7. È anche possibile verificare la versione di PostgreSQL:You can also check the PostgreSQL version:

     $ psql -V
    
  8. Inizializzare il database:Initialize the database:

     $ initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
    

    Dovrebbero venire visualizzato l'output seguente:You should receive the following output:

immagine

Impostare PostgreSQLSet up PostgreSQL

Eseguire i comandi seguenti:Run the following commands:

# cd /root/postgresql-9.3.5/contrib/start-scripts

# cp linux /etc/init.d/postgresql

Modificare due variabili nel file /etc/init.d/postgresql.Modify two variables in the /etc/init.d/postgresql file. Il prefisso è impostato sul percorso di installazione di PostgreSQL: /opt/pgsql.The prefix is set to the installation path of PostgreSQL: /opt/pgsql. PGDATA è impostato sul percorso di archiviazione dati di PostgreSQL: /opt/pgsql_data.PGDATA is set to the data storage path of PostgreSQL: /opt/pgsql_data.

# sed -i '32s#usr/local#opt#' /etc/init.d/postgresql

# sed -i '35s#usr/local/pgsql/data#opt/pgsql_data#' /etc/init.d/postgresql

immagine

Modificare il file per renderlo eseguibile:Change the file to make it executable:

# chmod +x /etc/init.d/postgresql

Avviare PostgreSQL:Start PostgreSQL:

# /etc/init.d/postgresql start

Controllare se l'endpoint di PostgreSQL è attivo:Check if the endpoint of PostgreSQL is on:

# netstat -tunlp|grep 1999

Dovrebbe venire visualizzato l'output seguente.You should see the following output:

immagine

Connessione al database PostgresConnect to the Postgres database

Proseguire e passare di nuovo all'utente postgres:Switch to the postgres user once again:

# su - postgres

Creare un database Postgres:Create a Postgres database:

$ createdb events

Connettersi al database events appena creato:Connect to the events database that you just created:

$ psql -d events

Come creare ed eliminare una tabella PostgresCreate and delete a Postgres table

Ora che ci si è connessi al database, è possibile crearvi tabelle.Now that you have connected to the database, you can create tables in it.

Ad esempio, creare una nuova tabella Postgres di esempio con il comando seguente:For example, create a new example Postgres table by using the following command:

CREATE TABLE potluck (name VARCHAR(20),    food VARCHAR(30),    confirmed CHAR(1), signup_date DATE);

È stata così impostata una tabella di quattro colonne con i nomi e le restrizioni seguenti:You have now set up a four-column table with the following column names and restrictions:

  1. La colonna "name" è stata limitata dal comando VARCHAR a una lunghezza inferiore a 20 caratteri.The “name” column has been limited by the VARCHAR command to be under 20 characters long.
  2. La colonna "food" indica la pietanza che verrà portata da ogni persona.The “food” column indicates the food item that each person will bring. VARCHAR limita questo testo a una lunghezza inferiore a 30 caratteri.VARCHAR limits this text to be under 30 characters.
  3. La colonna "confirmed" registra se la persona ha dato conferma della propria partecipazione.The “confirmed” column records whether the person has RSVP’d to the potluck. I valori consentiti sono "Y" e "N".The acceptable values are "Y" and "N".
  4. La colonna "date" indicherà quando la persona si è iscritta per l'evento.The “date” column shows when they signed up for the event. Postgres richiede che le date vengano immesse nel formato aaaa-mm-gg.Postgres requires that dates be written as yyyy-mm-dd.

Se la tabella è stata creata correttamente, dovrebbe venire visualizzato quanto segue:You should see the following if your table has been successfully created:

immagine

È anche possibile verificare la struttura della tabella con il comando seguente:You can also check the table structure by using the following command:

immagine

Aggiungere dati a una tabellaAdd data to a table

Inserire innanzitutto le informazioni in una riga:First, insert information into a row:

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES('John', 'Casserole', 'Y', '2012-04-11');

Dovrebbe venire visualizzato questo output:You should see this output:

immagine

È anche possibile aggiungere altre persone alla tabella.You can add a couple more people to the table as well. Ecco alcuni esempi oppure è possibile inserire i dati desiderati:Here are some options, or you can create your own:

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES('Sandy', 'Key Lime Tarts', 'N', '2012-04-14');

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES ('Tom', 'BBQ','Y', '2012-04-18');

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES('Tina', 'Salad', 'Y', '2012-04-18');

Mostrare le tabelleShow tables

Per mostrare una tabella, usare il comando seguente:Use the following command to show a table:

select * from potluck;

L'output è:The output is:

immagine

Eliminare dati in una tabellaDelete data in a table

Per eliminare dati in una tabella, usare il comando seguente:Use the following command to delete data in a table:

delete from potluck where name=’John’;

Consente di eliminare tutte le informazioni nella riga "John".This deletes all the information in the "John" row. L'output è:The output is:

immagine

Aggiornare dati in una tabellaUpdate data in a table

Per aggiornare dati in una tabella, usare il comando seguente:Use the following command to update data in a table. In questo caso, Sandy ha confermato la sua partecipazione, pertanto lo stato di conferma verrà modificato da "N" a "Y":For this one, Sandy has confirmed that she is attending, so we will change her RSVP from "N" to "Y":

 UPDATE potluck set confirmed = 'Y' WHERE name = 'Sandy';

Per altre informazioni su PostgreSQLGet more information about PostgreSQL

Ora che è stata completata l'installazione di PostgreSQL in una macchina virtuale Linux di Azure, è possibile utilizzarlo in Azure.Now that you have completed the installation of PostgreSQL in an Azure Linux VM, you can enjoy using it in Azure. Per ulteriori informazioni su PostgreSQL, visitare il sito Web PostgreSQL.To learn more about PostgreSQL, visit the PostgreSQL website.