Visualizzazione post con etichetta Ec2. Mostra tutti i post
Visualizzazione post con etichetta Ec2. Mostra tutti i post

mercoledì 13 agosto 2014

Creare nuovo utente MySql e assegnargli un database.

Se si utilizza un database con diversi progetti potrebbe essere utile creare vari utenti che siano in grado di gestire esclusivamente il database che gli viene assegnato. Questo per non dover per forza utilizzare l’utente root, specialmente se gli amministratori sono diversi.

La prima cosa da fare è aprire il terminale e accedere a MySql

mysql -u root -p

Ora bisogna creare il nuovo utente.

CREATE USER 'nome_nuovo_utente'@'localhost' IDENTIFIED BY 'password_nuovo_utente';


chiaramente nome_nuovo_utente andrà sostituito con il nome dell’utente che si sta creando e password_nuovo_utente va sostituita con la password per l’utente che si sta creando


Ora non rimane che aggiungere il database da collegare a questo nuovo utente e dargli i permessi.

mysql> use mysql;

mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','nome_database','nome_nuovo_utente
','Y','Y','Y','Y','Y','N');

mysql> flush privileges;


Ovviamente nome_database andrà sostituito con il nome del database che si vuole associare all’utente e nome_nuovo_utente andrà sostituito con il nome dell’utente precedentemente creato.



A questo punto abbiamo ottenuto un nuovo utente che ha privilegi solo su un determinato database, in questo modo si potrà anche utilizzare per effettuare il login di phpmyadmin e utilizzare solo il database associatogli.

giovedì 20 marzo 2014

Server Amazon EC2 - Terza parte - Il protocollo FTP

E' possibile che si abbia la necessità di utilizzare il protocollo FTP per caricare dei file nel server.

Per fare questo è necessario installare un server FTP sull' EC2.
Io utilizzo vsftpd, quindi per per l'installazione basterà

sudo apt-get install vsftpd

Una volta installato il server, andrà configurato.
Per configurarlo bisognerà editare il file /etc/vsftpd.conf.
In questo file ci sono un sacco di parametri da configurare, io descriverò le importazioni più comuni.

Per prima cosa, facciamo una copia di backup del file.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old

Ora apriamolo con un editor, come sempre uso nano.

sudo nano /etc/vsftpd.conf

Questa è la lista dei parametri che ho configurato.

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
chroot_local_user=YES

"connect_from_port_20 Quando abilitata, vsftpd viene eseguita con privilegi sufficienti per aprire la porta 20 sul server, durante i trasferimenti dei dati in modalità attiva. Disabilitare questa opzione permette a vsftpd di essere eseguito con meno privilegi, ma potrebbe essere non compatibile con alcuni client FTP." 
(CIT.)


Aggiungiamo anche questa stringa alla fine del file
seccomp_sandbox=NO
Serve per evitare l'errore:
500 OOPS: priv_sock_get_cmd

Ora non rimane che rendere effettive le modifiche riavviando il server FTP.

sudo /etc/init.d/vsftpd restart

Per poter utilizzare il servizio ftp bisogna scaricare e installare un client come ad esempio filezilla.

Ci si potrebbe collegare utilizzando la chiave.pem scaricata in fase di configurazione (Prima parte) oppure si potrebbero creare degli utenti appositi, ognuno con il proprio permesso.

Come creare utenti reali per connessione FTP.

Io consiglio anche di modificare i proprietari della cartella www.

sudo chown ubuntu /var/www/

sudo chgrp www-data /var/www/

 Anche in questo caso, se si cerca di accedere non si otterrà niente.
Questo sempre perchè il server EC2 ha la porta 21 di connessione FTP chiusa.

A questo punto bisogna procedere esattamente come è stato fatto per abilitare la porta 80 per il protocollo HTTP, però questa volta bisognerà scegliere Custom TCP Rule e inserire la porta che si desidera aprire, in questo caso la porta 21.



A questo punto sarà possibile connettersi esclusivamente utilizzando una modalità di trasferimento attiva.

Se si vuole utilizzare la modalità passiva, o la modalità di default su filezilla, bisogna aggiungere 3 nuove stringhe al file di configurazione vsftpd.conf.

pasv_address=54.186.141.53
pasv_min_port=12000
pasv_max_port=12100

pasv_address — Specifica l'indirizzo IP per l'indirizzo IP 'public facing' del server, per i server situati dietro i firewall Network Address Translation (NAT). Ciò abilita vsftpd a fornire l'indirizzo di ritorno corretto per i collegamenti in modalità passiva.  

Io ho inserito l'indirizzo del mio server, ma ognuno deve inserire l'indirizzo del server che sta utilizzando

pasv_max_port — Specifica la porta più alta inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0, il quale non limita la gamma della porta passiva più alta. Il valore non deve eccedere 65535. 

pasv_min_port — Specifica la porta più bassa inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0, il quale non limita la gamma della porta passiva più bassa. Il valore non deve essere minore di 1024. 
(CIT.)

Ovviamente a questo punto bisognerà anche aprire le porte nel server, quindi dal solito security groups




 

mercoledì 19 marzo 2014

Server Amazon EC2 - Seconda parte - Installare LAMP (Linux, Apache, MySQL, PHP)

Ora che abbiamo un server funzionante con un accesso SSH, se si vuole far girare un sito web o un'applicazione PHP, non rimane che installare una LAMP, ovvero Linux, Apache, MySQL, PHP.

Per quanto riguarda Linux non c'è problema, è gia stato installato nella prima parte, durante la configurazione della machcina.

Per installare tutto il resto, per questioni di praticità consiglio di utilizzare tasksel.
Qui un tutorial sull'utilizzo.

Una volta che installata la LAMP si potrà testare il funzionamento digitando su un browser l'indirizzo IP pubblico del server.

Con ogni probabilità il sistema non funzionerà... per fortuna...
Questo perchè le porte in entrata del server sono tutte chiuse.
Per utilizzare la LAMP dall'esterno abbiamo bisogno di utilizzare il protocollo HTTP, quindi abilitare la porta 80 del server.

Quindi tornare nella pagina di Amazon con la console del server.

Cerchiamo nel menù di sinistra la voce Security Groups, da qui avremo accesso al gruppo di default di cui fa parte il nostro server, diciamo un vero e proprio firewall.


Come vediamo l'unica porta aperta è quella per l'accesso SSH, che viene impostata di default al momento della creazione dell'istanza.

Dobbiamo aggiungere una nuova regola utilizzando il tasto EDIT


dal pulsante ADD RULE possiamo aggiungere la nuova regola. Cerchiamo nell'elenco la voce HTTP. Ora salviamo e andiamo a controllare il browser di prima, se tutto è stato fatto nella maniera corretta basterà aggiornare la pagina per avere questo risultato
Questo vuol dire che Apache è installato correttamente e che la porta 80 è aperta per le connessione dall'esterno.

A questo punto potremo fare una prova per controllare che anche php stia girando correttamente.
Per fare questo si può scrivere un piccolo file .php dentro il server e provare a farlo girare, un phpinfo() può bastare.

Gli script php vanno messi di default nella cartella /var/www/

Quindi, apriamo il terminale e colleghiamoci tramite protocolle SSH, come spiegato nella seconda parte e posizioniamoci nella cartella /var/www/.




Ora è possibile creare il file con qualsiasi editor di testo, io per praticità uso nano, ma si può utilizzare anche vi o qualsiasi altro, ovviamente non gedit.

Quindi digitare
cd /var/www
sudo nano info.php
info.php è un nome qualsiasi scelto per il file, potete chiamarlo come volete.
Una volta aperto il programma inserire il codice

<?php
phpinfo();
?>
Ora non ci rimane che andare a vedere se php è effettivamente installato correttamente.

Apriamo il solito browser e dopol'indirizzo IP del server inseriamo /info.php

Se il risultato dovesse essere questo
Allora vuol dire che tutto è installato come si deve.

Ora è il momento di installare il tool grafico di amministrazione del database MySql, e cioè PhpMyAdmin.

Prima di installarlo verifichiamo che MySql stia girando correttamente controllando i processi.
ps aux | grep mysql
In questo modo controlleremo se tra i nostri processi in corso c'è anche il database MySql.

A questo punto non rimane che installare PhpMyAdmin.
sudo apt-get install phpmyadmin
Bisognerà seguire l'installazione perchè verranno chieste alcune cose riguardanti il database, cliccare su ok e andare avanti.

Verrà chiesto di riconfigurare i file della piattaforma presente, quindi selezionate Apache.



Ora inserire la password per l'utente principale e la password del database MySql, inseriamola, confermiamola e andiamo avanti.



A questo punto basterà andare sempre sul solito browser, scrivere l'indirizzo IP seguito da /phpmyadmin


Per poter accedere basterà inserire il nome dell'utente principale, root di default, e la password scelta in fase di installazione.

Ora la LAMP è pronta e funzionante.

martedì 18 marzo 2014

Server Amazon EC2 - Seconda parte - Connessione SSH

Per connetterci al server configurato e installato nell'articolo precedente ora dobbiamo utilizzare la chiave che abbiamo scaricato.

Si presume che la chiave sia in una cartella del pc o sul desktop.

Per una connessione SSH bisogna utilizzare il terminale, quindi la prima cosa da fare è andare nella cartella dove si tiene conservata la chiave di accesso, cioè il file.pem.

Per spostarsi in una determinata cartella, ad esempio il desktop:
cd /home/nomeutente/Scrivania/
Oppure:
cd ~/Scrivania/ 
In questo momento sto utilizzando, nel pc con cui voglio collegarmi al server, Ubuntu 13.4.

Da qui potremo utilizzare il comando ssh con la chiave e l'indirizzo ip del server.
Ipotizziamo di avere come indirizzo ip pubblico 54.186.141.53. Possiamo vedere quale è il nostro indirizzo dalla pagina di gestione del server.

a questo punto sarà sufficiente fare
ssh -l ubuntu -i serverUbuntu.pem 54.186.141.53
ubuntu è il nome dell'utente di default, serverUbuntu.pem è la chiave che ho scaricato in fase di installazione e 54.186.141.53 è l'indirizzo ip del mio server.

Server Amazon EC2 - Prima parte - Una nuova istanza

Per utilizzare un serve Amazon EC2 dopo essersi registrati, la prima cosa da fare è andare nella console del sistema.

Da qui sarà possibilegestire tutto il sistema.
Siccome dobbiamo usare un Amazon Elastic Compute Cloud (Amazon EC2), bisognerà andare su EC2 virtual servers in the cloud.



Ci troveremo all'interno del pannello di controllo del nostro EC2.

Sulla sinistra troviamo tutti i tools di gestione.
Cerchiamo ISTANCES e lanciamo una nuova istanza dal pulsante blu Launch Istance.

 
A questo punto dovremmo scegliere il sistema operativo da utilizzare sul server. Se non si vuole spendere niente e si vuole solo provare il sistema, consiglio di selezionare la casella free tier only in modo da vedere solo i sistemi gratuiti.
 

Nella colonna di destra si possono scorrere tutti i sistemi operativi disponibili gratuitamente. Io ho scelto Ubuntu Server 13.10 (PV).
Basta andare su Select per proseguire. A questo punto non potremo che prendere una micro istanza, e cioè l'unica macchina che ci può venire offerta gratuitamente per prova.


Ora io consiglio di andare su Configure Istance details per abilitare la prootezione dallo spegnimento accidentale. 



Il resto dovrebbe andar bene lasciato tutto di default.
Ora che abbiamo creato l'istanza che vogliamo utilizzare possiamo procedere attraverso il pulsante blu Review and Launch

Potremmo vedere un resoconto di quanto fatto e a questo punto potremmo lanciare effettivamente l'istanza creata.


Ci verrà chiesto di utilizzare una vecchia chiave o di crearne una nuova.


Io ne ho creato una nuova. Verrà chiesto di inserire il nome della chiave, si può scrivere quello che si vuole, io l'ho chiamata serverUbuntu. A questo punto è importante effettuare il download della chiave e conservarla sul pc. Questa chiave ci servirà più avanti per utilizzare il server tramite protocollo SSH.

Una volta scaricata la chiave si può procedere tramite il pulsante blu Launch Istances, che ora sarà diventato attivo.

A questo punto vedremo il processo avviarsi.


Ci sarà da aspettare un pochino.


Quando vedremo questa immagine vorrà dire che è andato tutto nel modo giusto e che ora potremmo iniziare a utilizzare il nostro server.



              /---------------------------------------------------------------------------------/


Se si vuole eliminare l'istanza appena creata, bisogna usare il tasto destro sulla riga dell'istanza che si vuole terminare.


Si avrà accesso a un menù. Non sarà possibile terminare subito la macchina perchè durante la configurazione abbiamo abilitato la protezione per la terminazione accidentale. Bisogna disabilitare la protezione e poi terminare l'istanza.

Si arriverà a questa schermata.


A questo punto bisogna solo aspettare che illavoro venga fatto...



giovedì 12 dicembre 2013

Configurazione Apache2 per inserire alias PhpMyAdmin in ogni sito del server.

Per inserire l'alias per raggiungere la pagina di PhpMyadmin per un sito presente nel server, bisogna editare il file di configurazione che sta dentro la certella sites-enabled.

Per editarlo io uso nano, ma è possibile usare vi o qualsiasi altro editor.

Quindi:

nano /etc/apache2/sites-enabled/www.tuosito.it

Inserire nel file la seguente riga:

 Alias /phpmyadmin /usr/share/phpmyadmin

Subito dopo DocumentRoot.

Ovviamente prima di fare questo è necessario installare PhpMyadmin, altrimenti l'alias che si inserisce non punterà a niente.



/---------------------------------------------------------/

UPDATE 14/10/2014

Ultima versione di apache 

esempio di alias:
http://stackoverflow.com/questions/23337446/getting-a-403-forbidden-error-for-simplesaml-after-apache-upgrade

giovedì 19 settembre 2013

Aggiungere utenti reali FTP (vsftpd) Ubuntu server

Per utilizzare il servizio FTP (vsftpd) su un server remoto con sistema operativo Ubuntu 13.4 su una macchina Amazon EC2 ho dovuto utilizzare la chiave .pem che ho creato in fase di installazione.

Questo non sempre mi va bene, per diversi motivi, quindi ho deciso di creare un semplice utente che può utilizzare il normale protocollo FTP collegandosi al server e autenticandosi semplicmeente con una password. Oltre a questo ho voluto fare in modo che, ogni volta che mi collego utilizzando questo utente, vengo portato direttamente alla cartella /var/www e non alla cartella /.

Tutto questo fondamentalmente perchè sono pigro.

Per fare un lavoro del genere si possono creare utenti reali del sistema o utenti virtuali. Sinceramente per le mie esigenze ho trovato molto più veloci e pratico creare utenti reali.

La prima cosa da fare per poter utilizzare un utente reale per accedere al server tramite protocollo ftp è abilitare questa funzione tramite il file di configurazione di vsftp.

Quindi basta editare il file vsftpd.conf

#sudo nano /etc/vsftpd.conf

E' importante cercare le righe con le stringhe:

#local_enable=YES
#write_enable=YES

e decommentarle cancellando il cancelletto dall'inizio della riga.

Per rendere effettive le modifiche bisogna riavviare il servizio

    #sudo /etc/init.d/vsftpd restart

Una volta fatto questo non ci rimane che creare gli utenti che desideriamo, nel mio caso uno solo.

#sudo useradd -d /var/www/ nomeutente

#sudo passwd nomeutente

Con il primo comando creo l'utente e gli assegno la cartella personale, cioè la cartella nella quale mi troverò nel momento in cui utilizzerò l'utente per accedere al server tramite FTP.
Se non si utilizza l'opzione -d all'utente verrà assegnata una cartella di default con il proprio nome all'interno della cartella home.
Per controllare questi parametri si può leggere il file passwd.

    #sudo nano /etc/passwd

Alla fine del file dovrebbe esserci il nuovo utente creato e l'indirizzo della cartella personale.

Io ho scelto la cartella /var/www perchè utilizzo lo stesso utente per gestire tutti i siti che si trovano sul server, ma se si vuole differenziare è possibile assegnare un indirizzo diverso, ad esempio /var/www/nomesito/. 

A questo punto dovrebbe essere possibile utilizzare il nuovo utente per accedere tramite protocollo FTP, io utilizzo filezilla.

E' molto utile limitare l'accesso al file system per gli utenti che utilizzano l'ftp.
Per limitare l'accesso esclusivamente alla propria cartella personale bisogna modificare ulteriormente il file di configurazione del servizio FTP.


    #sudo nano /etc/vsftpd.conf

questa volta bisogna cercare e decommentare la stringa

    #chroot_local_user=YES

A questo punto è necessario riavviare ancora una volta il servizio.

    #sudo /etc/init.d/vsftpd restart


                 /---------------------------------------------------------------------/

Se si vuole bloccare l'accesso FTP a un particolare utente è possibile inserire il nome utente al file /etc/ftpusers.

                 /---------------------------------------------------------------------/

Può capitare di fare un po' di casino con i permessi delle cartelle o dei files.
Se non si hanno permessi di scrittura è necessario modificarli oppure cambiare il proprietario o il gruppo di una cartella.

Se si vuole cambiare ricorsivamente l'utente proprietario di una cartella:

    #sudo chown -R numeutente nomecartella/

Se si vuole cambiare ricorsivamente il gruppo proprietario di una cartella:

    #sudo chgrp -R nomegruppo nomecartella/

Se si vogliono modificare i permessi di una cartella:


    #sudo chmod -R 755 nomecartella/

Se si vuole aggiungere un utente a un gruppo:

    #sudo adduser nomeutente nomegruppo

Per controllare quali permessi e proprietari abbia una cartella o un file:

    #ls -la cartellasuperiore/


Questi comandi dovrebbero essere sufficienti per fare tutto quello che serve.



/------------------------------------------------------------------------------------------/

UPDATE 14/10/2014

Mi è capitato di installare vsftpd su digitalocean, non sono riuscito a collegarmi tramite ftp finchè non ho aggiunto questa stringa al file di configurazione

    allow_writeable_chroot=YES