Diferència entre revisions de la pàgina «AWS: Amazon Web Services. Cloud»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «=Introducció= (TBD). Tot això ja ho havia fet i documentat, però ho de de tornar a repetir Quines eren les credencials? ==Base de dades langtrainer a AWS== (TBD)....».)
 
 
(Hi ha 18 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
=Introducció=
+
=Crear una màquina EC2 a AWS=
(TBD). Tot això ja ho havia fet i documentat, però ho de de tornar a repetir
+
Entro a la consola de AWS Management Console
  
Quines eren les credencials?
+
Creo una màquina EC2: All services > Compute > EC2
==Base de dades langtrainer a AWS==
+
 
(TBD). Havia de fer de manera d'obrir el port 3306 (inbound rule)
+
Les màquines EC2 significa Elastic Computing, i forma part de la Capa gratuïta, 12 mesos gratis, 750 hores al mes (750 horas por mes de uso de instancias t2.micro con Linux, RHEL o SLES)
 +
 
 +
He de posar la informació de la target de crèdit per tal de poder escollir una instància.
 
<pre>
 
<pre>
mysql -h langtrainer.cyr40ydu5rcj.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
+
Step 1: Choose an Amazon Machine Image (AMI)
mysql -h langtrainer.cyr40ydu5rcj.us-east-1.rds.amazonaws.com -u admin -p langtrainer < /home/joan/copia_langtrainer_200902.dmp
+
 
 +
Escullo:
 +
Ubuntu Server 20.04 LTS (HVM), SSD Volume Type - ami-0885b1f6bd170450c (64-bit x86) / ami-054e49cb26c2fd312 (64-bit Arm)
 +
(tier elegible)
 +
 
 +
Step 2: Choose an Instance Type
 +
 
 +
Step 7: Review Instance Launch
 +
create a new key pair (joan.pem)
 +
 
 +
Your instances are now launching
 +
 
 +
Name: --
 +
Instance ID: i-069719a8c85b6e2bd
 +
Instance state: Pending -> Running
 +
Instance type: t2.micro
 +
Status check
 +
Alarm status
 +
Availability Zone: us-east-1d
 +
Public IPv4 DNS: ec2-54-172-172-75.compute-1.amazonaws.com
 +
Public IPv4 address: 54.172.172.75
 
</pre>
 
</pre>
Des del meu portàtil puc accedir a la base de dades remota:
+
Ara ja m'he de poder connectar via ssh. El public DNS és:
 +
*ec2-3-91-76-69.compute-1.amazonaws.com
 
<pre>
 
<pre>
php llista_langtrainer.php
+
$ chmod 400 joan2.pem
 +
$ ssh -i "joan.pem" ubuntu@ec2-3-91-76-69.compute-1.amazonaws.com
 
</pre>
 
</pre>
''llista_langtrainer.php'':
+
i ja puc entrar. Puc utilitzar ''scp'' per enviar fitxers al servidor. Recordar que quan acabi l'he d'apagar.
 +
 
 +
=Base de dades langtrainer a AWS=
 +
Vull tenir un mysql en el cloud. Escullo Database RDS (RDS significa Amazon Relational Database Service)
 +
 
 +
De moment no tinc res:
 +
*DB Instances (0/40)
 +
 
 +
create database. Engine options: escullo Standard create, MySQL
 +
 
 +
*Template: escullo Free Tier
 +
*DB instance identifier: database-2
 +
*username: admin
 +
*password: k*******
 +
 
 +
Miro quines opcions té el ''stardard create'', i entre elles hi ha el public: yes (important si vull accedir des d'un ordinador remot)
 +
 
 +
Finalment: create database
 +
 
 +
*end point: database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com
 +
 
 +
Com que al principi no havia fet que la BD fos accessible publicament, qualsevol opció la puc modificar a posteriori. Fer que la nostra instància sigui ''public accessible'':
 +
*https://aws.amazon.com/premiumsupport/knowledge-center/rds-connectivity-instance-subnet-vpc/
 +
 
 +
Hem d'obrir el port 3306 (seguretat > inbound rule). Podem posar ''detectar la meva IP''.
 +
 
 +
Comprovar que ho hem fet bé: (el port 3306 està obert)
 
<pre>
 
<pre>
 +
$ nmap -A -T4 -Pn -p3306 database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com
 +
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-26 21:40 CET
 +
Nmap scan report for database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com (54.162.80.115)
 +
Host is up (0.10s latency).
 +
rDNS record for 54.162.80.115: ec2-54-162-80-115.compute-1.amazonaws.com
  
 +
PORT    STATE SERVICE VERSION
 +
3306/tcp open  mysql?
 +
...
 
</pre>
 
</pre>
==Màquina EC2 a AWS. LAMP==
+
Ja hem de poder entrar al mysql des del portàtil (des d'una màquina remota). I podem carregar una base de dades remotament.
 
<pre>
 
<pre>
ssh -i /home/joan/Baixades/prova1_ec2.pem ec2-user@ec2-52-91-66-204.compute-1.amazonaws.com
+
mysql -h database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
sudo chmod 400 /home/joan/Baixades/prova1_ec2.pem
+
mysql -h database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com -u admin -p langtrainer < /home/joan/copia_langtrainer_200902.dmp
ssh -i /home/joan/Baixades/prova1_ec2.pem ec2-user@ec2-52-91-66-204.compute-1.amazonaws.com
 
 
</pre>
 
</pre>
Ja estic a la màquina remota.
+
I ara podem executar un script. El següent codi detecta si el script l'estem executant des de la shell o des del navegador:
 
 
Instal·lo el Apache i el LAMP (tutorial que vaig trobar, TBD)
 
 
 
També puc executar el script ''llista_langtrainer'' en la màquina remota: (la base de dades ''langtrainer'' està en una altra màquina de AWS)
 
 
 
Des de la línia de comandes:
 
 
<pre>
 
<pre>
php llista_langtrainer.php  
+
*php llista_langtrainer.php
 +
*http://localhost/M10_UF2/llista_langtrainer.php
 
</pre>
 
</pre>
i també la puc accedir online:
+
''llista_langtrainer.php'':
*http://ec2-52-91-66-204.compute-1.amazonaws.com/llista_langtrainer.php
 
 
 
script ''lista_langtrainer.php'':
 
 
<pre>
 
<pre>
 
<?php
 
<?php
 
header('Content-type: text/html; charset=utf-8');
 
header('Content-type: text/html; charset=utf-8');
  
$servername = "langtrainer.cyr40ydu5rcj.us-east-1.rds.amazonaws.com";
+
$servername = "database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com";
 
$username = "admin";
 
$username = "admin";
$password = "She4aiVa";
+
$password = "keiL2lai";
 
$dbname = "langtrainer";
 
$dbname = "langtrainer";
  
Línia 55: Línia 104:
 
mysqli_query($conn, "SET NAMES 'utf8'");
 
mysqli_query($conn, "SET NAMES 'utf8'");
  
$sql = "select word, translation from WORD W, TRANSLATION T where W.id_word=T.id_word limit 10";
+
$sql = "select word, translation from word w, translation t where w.id_word=t.id_word limit 10";
  
 
$resultset = mysqli_query($conn,$sql);
 
$resultset = mysqli_query($conn,$sql);
  
 
+
if (php_sapi_name()==='cli') { //executem des de la comanda
while($row = mysqli_fetch_array($resultset)) {
+
echo "VOCABULARI\n============\n";
\techo $row['word'].": ".$row['translation']."\
+
while($row = mysqli_fetch_array($resultset)) {
";
+
echo $row['word'].": ".$row['translation']."\n";
 +
}
 +
} else { //executem des de la web
 +
echo "<h2>VOCABULARI</h2>";
 +
echo "<ul>";
 +
while($row = mysqli_fetch_array($resultset)) {
 +
echo "<li>".$row['word'].": ".$row['translation']."</li>";
 +
}
 +
echo "</ul>";
 
}
 
}
 +
mysqli_close($conn);
  
mysqli_close($conn);
+
echo php_sapi_name();
  
 
?>
 
?>
 
</pre>
 
</pre>
{{Autor}}, setembre 2020
+
==Aturar la màquina quan arrenqui (TBD)==
 +
La instància RDS està per defecte encesa. Si l'apaguem, al cap d'una setmana arrenca.
 +
 
 +
Per evitar-ho, es pot programar una funció que l'apagui automàticament.
 +
*https://dzone.com/articles/create-an-aws-lambda-function-to-stop-and-start-an
 +
 
 +
=Màquina EC2 a AWS. LAMP (servei web i base de dades)=
 +
<pre>
 +
ssh -i "joan.pem" ubuntu@ec2-54-172-172-75.compute-1.amazonaws.com
 +
</pre>
 +
Ja estic a la màquina remota.
 +
 
 +
També puc executar el script ''llista_langtrainer'' en la màquina remota: (la base de dades ''langtrainer'' està en una altra màquina de AWS)
 +
<pre>
 +
$ sudo apt install php7.4-cli
 +
$ sudo apt install php7.4-mysql
 +
 
 +
$ php llista_langtrainer.php
 +
VOCABULARI
 +
============
 +
deserve (to): merèixer, ser digne de
 +
weird: rar, extrany
 +
gills: branquies, agalles
 +
draw breath (to): agafar aire
 +
draw (to): dibuixar
 +
draw (to): Estirar (pull), treure, atraure
 +
snout: morro, hocico
 +
wound: ferida
 +
wound: ferir (pp, ferit)
 +
dismiss (to): acomiadar, destituir. Refusar
 +
</pre>
 +
==Instal·lar LAMP (Apache2 i MySQL Server)==
 +
[[Fitxer:Langtrainer aws.png|thumbnail]]
 +
Si no ho havíem fet, hem de permetre les connexions http. En la configuració de la màquina, anar a Configure Security Group. Add Rule and choose HTTP from the dropdown
 +
 
 +
La instal·lació d'Apache+MySQL és molt directa amb aquest enllaç:
 +
*https://niralar.com/install-lamp-web-server-on-amazon-ec2-with-ubuntu-20-04/
 +
<pre>
 +
sudo apt-get update
 +
sudo apt-get install apache2
 +
sudo apt-get install php libapache2-mod-php php-mysql php-curl php-gd php-json php-zip php-mbstring
 +
sudo service apache2 restart
 +
</pre>
 +
<pre>
 +
sudo apt-get install mysql-server
 +
sudo mysql_secure_installation
 +
</pre>
 +
 
 +
Ara ja tenim l'Apache funcionant:
 +
*http://ec2-3-91-76-69.compute-1.amazonaws.com
 +
<pre>
 +
cd /var/www/html
 +
sudo nano llista_langtrainer.php
 +
</pre>
 +
i ja puc executar el meu petit script:
 +
*http://ec2-3-91-76-69.compute-1.amazonaws.com/llista_langtrainer.php
 +
 
 +
=Tancar la sessió=
 +
Quan acabem la sessió, recordar tancar la màquina EC2.
 +
{{Autor}}, setembre 2020, gener 2021

Revisió de 17:11, 29 gen 2021

Crear una màquina EC2 a AWS

Entro a la consola de AWS Management Console

Creo una màquina EC2: All services > Compute > EC2

Les màquines EC2 significa Elastic Computing, i forma part de la Capa gratuïta, 12 mesos gratis, 750 hores al mes (750 horas por mes de uso de instancias t2.micro con Linux, RHEL o SLES)

He de posar la informació de la target de crèdit per tal de poder escollir una instància.

Step 1: Choose an Amazon Machine Image (AMI)

Escullo:
Ubuntu Server 20.04 LTS (HVM), SSD Volume Type - ami-0885b1f6bd170450c (64-bit x86) / ami-054e49cb26c2fd312 (64-bit Arm)
(tier elegible)

Step 2: Choose an Instance Type

Step 7: Review Instance Launch
create a new key pair (joan.pem)

Your instances are now launching

Name: --
Instance ID: i-069719a8c85b6e2bd	
Instance state: Pending -> Running
Instance type: t2.micro
Status check
Alarm status
Availability Zone: us-east-1d
Public IPv4 DNS: ec2-54-172-172-75.compute-1.amazonaws.com
Public IPv4 address: 54.172.172.75

Ara ja m'he de poder connectar via ssh. El public DNS és:

  • ec2-3-91-76-69.compute-1.amazonaws.com
$ chmod 400 joan2.pem
$ ssh -i "joan.pem" ubuntu@ec2-3-91-76-69.compute-1.amazonaws.com

i ja puc entrar. Puc utilitzar scp per enviar fitxers al servidor. Recordar que quan acabi l'he d'apagar.

Base de dades langtrainer a AWS

Vull tenir un mysql en el cloud. Escullo Database RDS (RDS significa Amazon Relational Database Service)

De moment no tinc res:

  • DB Instances (0/40)

create database. Engine options: escullo Standard create, MySQL

  • Template: escullo Free Tier
  • DB instance identifier: database-2
  • username: admin
  • password: k*******

Miro quines opcions té el stardard create, i entre elles hi ha el public: yes (important si vull accedir des d'un ordinador remot)

Finalment: create database

  • end point: database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com

Com que al principi no havia fet que la BD fos accessible publicament, qualsevol opció la puc modificar a posteriori. Fer que la nostra instància sigui public accessible:

Hem d'obrir el port 3306 (seguretat > inbound rule). Podem posar detectar la meva IP.

Comprovar que ho hem fet bé: (el port 3306 està obert)

$ nmap -A -T4 -Pn -p3306 database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-26 21:40 CET
Nmap scan report for database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com (54.162.80.115)
Host is up (0.10s latency).
rDNS record for 54.162.80.115: ec2-54-162-80-115.compute-1.amazonaws.com

PORT     STATE SERVICE VERSION
3306/tcp open  mysql?
...

Ja hem de poder entrar al mysql des del portàtil (des d'una màquina remota). I podem carregar una base de dades remotament.

mysql -h database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
mysql -h database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com -u admin -p langtrainer < /home/joan/copia_langtrainer_200902.dmp

I ara podem executar un script. El següent codi detecta si el script l'estem executant des de la shell o des del navegador:

*php llista_langtrainer.php 
*http://localhost/M10_UF2/llista_langtrainer.php

llista_langtrainer.php:

<?php
header('Content-type: text/html; charset=utf-8');

$servername = "database-2.cdlwhdawd8sb.us-east-1.rds.amazonaws.com";
$username = "admin";
$password = "keiL2lai";
$dbname = "langtrainer";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

mysqli_query($conn, "SET NAMES 'utf8'");

$sql = "select word, translation from word w, translation t where w.id_word=t.id_word limit 10";

$resultset = mysqli_query($conn,$sql);

if (php_sapi_name()==='cli') { //executem des de la comanda
	echo "VOCABULARI\n============\n";
	while($row = mysqli_fetch_array($resultset)) {
		echo $row['word'].": ".$row['translation']."\n";
	}
} else { //executem des de la web
	echo "<h2>VOCABULARI</h2>";
	echo "<ul>";
	while($row = mysqli_fetch_array($resultset)) {
		echo "<li>".$row['word'].": ".$row['translation']."</li>";
	}
	echo "</ul>";
}
mysqli_close($conn);

echo php_sapi_name();

?>

Aturar la màquina quan arrenqui (TBD)

La instància RDS està per defecte encesa. Si l'apaguem, al cap d'una setmana arrenca.

Per evitar-ho, es pot programar una funció que l'apagui automàticament.

Màquina EC2 a AWS. LAMP (servei web i base de dades)

ssh -i "joan.pem" ubuntu@ec2-54-172-172-75.compute-1.amazonaws.com

Ja estic a la màquina remota.

També puc executar el script llista_langtrainer en la màquina remota: (la base de dades langtrainer està en una altra màquina de AWS)

$ sudo apt install php7.4-cli
$ sudo apt install php7.4-mysql

$ php llista_langtrainer.php 
VOCABULARI
============
deserve (to): merèixer, ser digne de
weird: rar, extrany
gills: branquies, agalles
draw breath (to): agafar aire
draw (to): dibuixar
draw (to): Estirar (pull), treure, atraure
snout: morro, hocico
wound: ferida
wound: ferir (pp, ferit)
dismiss (to): acomiadar, destituir. Refusar

Instal·lar LAMP (Apache2 i MySQL Server)

Langtrainer aws.png

Si no ho havíem fet, hem de permetre les connexions http. En la configuració de la màquina, anar a Configure Security Group. Add Rule and choose HTTP from the dropdown

La instal·lació d'Apache+MySQL és molt directa amb aquest enllaç:

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php libapache2-mod-php php-mysql php-curl php-gd php-json php-zip php-mbstring
sudo service apache2 restart
sudo apt-get install mysql-server
sudo mysql_secure_installation

Ara ja tenim l'Apache funcionant:

cd /var/www/html
sudo nano llista_langtrainer.php

i ja puc executar el meu petit script:

Tancar la sessió

Quan acabem la sessió, recordar tancar la màquina EC2.


creat per Joan Quintana Compte, setembre 2020, gener 2021