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

De wikijoan
Salta a la navegació Salta a la cerca
m
Línia 1: Línia 1:
=Introducció=
+
=Crear una màquina EC2 a AWS=
 
Entro a la consola de AWS Management Console
 
Entro a la consola de AWS Management Console
  
Línia 39: Línia 39:
 
i ja puc entrar. Puc utilitzar ''scp'' per enviar fitxers al servidor. Recordar que quan acabi l'he d'apagar.
 
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==
+
=Base de dades langtrainer a AWS=
 
Vull tenir un mysql en el cloud. Escullo Database RDS (RDS significa Amazon Relational Database Service)
 
Vull tenir un mysql en el cloud. Escullo Database RDS (RDS significa Amazon Relational Database Service)
  
Línia 128: Línia 128:
 
</pre>
 
</pre>
  
==Màquina EC2 a AWS. LAMP==
+
=Màquina EC2 a AWS. LAMP (servei web i base de dades)=
 
<pre>
 
<pre>
 
ssh -i "joan.pem" ubuntu@ec2-54-172-172-75.compute-1.amazonaws.com
 
ssh -i "joan.pem" ubuntu@ec2-54-172-172-75.compute-1.amazonaws.com
Línia 153: Línia 153:
 
dismiss (to): acomiadar, destituir. Refusar
 
dismiss (to): acomiadar, destituir. Refusar
 
</pre>
 
</pre>
===Instal·lar LAMP (Apache2 i MySQL Server)===
+
==Instal·lar LAMP (Apache2 i MySQL Server)==
 
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
 
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
  

Revisió del 22:03, 26 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-52-207-224-88.compute-1.amazonaws.com
$ chmod 400 joan2.pem
$ ssh -i "joan.pem" ubuntu@ec2-54-172-172-75.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 langtrainer.cyr40ydu5rcj.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
mysql -h langtrainer.cyr40ydu5rcj.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();

?>

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)

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: http://ec2-54-172-172-75.compute-1.amazonaws.com/llista_langtrainer.php


creat per Joan Quintana Compte, setembre 2020, gener 2021