Diferència entre revisions de la pàgina «OVH. VPS Essential jaumebalmes.net»

De wikijoan
Salta a la navegació Salta a la cerca
m
Línia 123: Línia 123:
 
Sortim de la sessió remota (''$ exit'') i ja podem tornar a entrar sense que ens demani el password:
 
Sortim de la sessió remota (''$ exit'') i ja podem tornar a entrar sense que ens demani el password:
 
<pre>
 
<pre>
$ ssh joan@vps-89148e22.vps.ovh.net
+
$ ssh nom_usuari@vps-89148e22.vps.ovh.net
 
</pre>
 
</pre>
  
Línia 175: Línia 175:
 
</pre>
 
</pre>
 
==Creació s'usuaris==
 
==Creació s'usuaris==
Amb l'usauri ''ubuntu'' creem els usuaris. Per ex, per crear l'usuari ''joan'':
+
Amb l'usauri ''ubuntu'' creem els usuaris. Per ex, per crear l'usuari ''nom_usuari'':
 
<pre>
 
<pre>
sudo useradd -d /home/joan -s /bin/bash -m joan
+
sudo useradd -d /home/nom_usuari -s /bin/bash -m nom_usuari
sudo passwd joan
+
sudo passwd nom_usuari
  
sudo mkdir /home/joan/html
+
sudo mkdir /home/nom_usuari/html
 
sudo su
 
sudo su
# sudo echo "Benvingut joan" > /home/joan/html/index.html
+
# sudo echo "Benvingut nom_usuari" > /home/nom_usuari/html/index.html
sudo chown -R joan:joan /home/joan
+
sudo chown -R nom_usuari:nom_usuari /home/nom_usuari
 
# exit
 
# exit
sudo chmod -R 755 /home/joan
+
sudo chmod -R 755 /home/nom_usuari
 
</pre>
 
</pre>
 
Editem el fitxer de configuració de l'Apache:
 
Editem el fitxer de configuració de l'Apache:
Línia 191: Línia 191:
 
sudo nano /etc/apache2/sites-available/000-default.conf
 
sudo nano /etc/apache2/sites-available/000-default.conf
  
     Alias /joan "/home/joan/html/"
+
     Alias /nom_usuari "/home/nom_usuari/html/"
     <Directory "/home/joan/html/">
+
     <Directory "/home/nom_usuari/html/">
 
         Options Indexes MultiViews FollowSymLinks
 
         Options Indexes MultiViews FollowSymLinks
 
         AllowOverride All
 
         AllowOverride All
Línia 203: Línia 203:
 
</pre>
 
</pre>
 
i ja funciona:
 
i ja funciona:
*http://vps-89148e22.vps.ovh.net/joan/
+
*http://vps-89148e22.vps.ovh.net/nom_usuari/
  
 
Si volem que aquest usuari sigui del grup sudoers:
 
Si volem que aquest usuari sigui del grup sudoers:
 
<pre>
 
<pre>
$ usermod -aG sudo joan
+
$ usermod -aG sudo nom_usuari
 
</pre>
 
</pre>
  
 
Ara que ja tenim l'usuari creat, aquest usuari ja pot fer ssh:
 
Ara que ja tenim l'usuari creat, aquest usuari ja pot fer ssh:
 
<pre>
 
<pre>
$ ssh joan@vps-89148e22.vps.ovh.net
+
$ ssh nom_usuari@vps-89148e22.vps.ovh.net
 
</pre>
 
</pre>
 
Per tal de que l'usauri es pugui canviar el seu password:
 
Per tal de que l'usauri es pugui canviar el seu password:
 
<pre>
 
<pre>
joan$ passwd
+
nom_usuari$ passwd
 
</pre>
 
</pre>
 
Per tal de poder entrar per SSH sense que demani el password, veure més amunt.
 
Per tal de poder entrar per SSH sense que demani el password, veure més amunt.
Línia 223: Línia 223:
 
Des del ''root'':
 
Des del ''root'':
 
<pre>
 
<pre>
CREATE DATABASE joan DEFAULT CHARACTER SET utf8;  
+
CREATE DATABASE nom_usuari DEFAULT CHARACTER SET utf8;  
CREATE USER joan@localhost IDENTIFIED BY 'keiL2lai';
+
CREATE USER nom_usuari@localhost IDENTIFIED BY 'keiL2lai';
GRANT ALL ON joan.* TO joan@localhost WITH GRANT OPTION;
+
GRANT ALL ON nom_usuari.* TO nom_usuari@localhost WITH GRANT OPTION;
 
</pre>
 
</pre>
I ara l'usuari ''joan'' ja pot entrar a la base de dades ''joan'':
+
I ara l'usuari ''nom_usuari'' ja pot entrar a la base de dades ''nom_usuari'':
 
<pre>
 
<pre>
$ ssh joan@vps-89148e22.vps.ovh.net
+
$ ssh nom_usuari@vps-89148e22.vps.ovh.net
joan$ mysql -h localhost -u joan -pkeiL2lai joan
+
nom_usuari$ mysql -h localhost -u nom_usuari -pkeiL2lai nom_usuari
 
mysql>
 
mysql>
 
</pre>
 
</pre>
Línia 285: Línia 285:
 
   host : 'localhost',
 
   host : 'localhost',
 
   port : 3306,
 
   port : 3306,
   database: 'joan',
+
   database: 'nom_usuari',
   user : 'joan',
+
   user : 'nom_usuari',
 
   password : '*******'
 
   password : '*******'
 
});
 
});
Línia 457: Línia 457:
 
import mysql.connector
 
import mysql.connector
  
cnx = mysql.connector.connect(host='localhost',user='joan', password='******', database='joan')
+
cnx = mysql.connector.connect(host='localhost',user='nom_usuari', password='******', database='nom_usuari')
 
cursor = cnx.cursor()
 
cursor = cnx.cursor()
  

Revisió del 18:05, 29 març 2022

Compte d'usuari

  • jquintana@jaumebalmes.net / k******I_k

VPS Essential

ESSENTIAL

10 € + IVA/mes
Compromiso de 12 meses (-8%)
**Compromiso de 24 meses (-15%) -> 8,50 € + IVA/mes

2 vCore
4 GB
80 GB SSD NVMe
500 Mb/s Ilimitado*

Sólo distribución
Ubuntu versió 21.10
Europa Occidental, Francia, Estrasburgo (SBG)

Snapshot: NO
Almacenamiento adicional: NO
Backup automatizado: NO
Su VPS acaba de instalarse con el siguiente sistema operativo/distribución:
Ubuntu 21.10

PARÁMETROS DE ACCESO:
Dirección IPv4 del VPS: 5.196.26.105
Nombre del VPS: vps-89148e22.vps.ovh.net
En el VPS se ha configurado la siguiente cuenta de administrador:
Usuario: ubuntu
Contraseña: 8**********

PARA EMPEZAR:
Si es la primera vez que se conecta a un VPS, le recomendamos que consulte la siguiente guía:
http://www.ovh.es/g1260.como-conectarse-a-un-vps

Posta a punt

Passos previs

sudo apt-get install joe
sudo apt-get install unzip

Instal·lar Apache

sudo apt-get install apache2

ja tenim el Apache instal·lat i funcionant

Instal·lar mysql

$ sudo apt-get install mysql-server
$ sudo su
# mysql -h localhost -u root
mysql>

Per entrar al mysql sense haver de fer sudo, hem de fer:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'k*******';
mysql> FLUSH PRIVILEGES;

ara ja puc entrar al mysql amb l'usuari normal:

mysql> exit
# exit
$ mysql -h localhost -u root -pk*******
mysql>

Important:

$ sudo apt-get install php php-cli php-mysql
$ $ sudo apt-get install libapache2-mod-php

SSH sense demanar password

3 passos molt simples. Es tracta de generar una clau pública en el portàtil, i enviar-la al servidor, per tal de què confïi en el portàtil.

$ ssh-keygen -b 4096 -t rsa

Es generen dos fitxers: la clau privada i la clau pública:

  • .ssh/id_rsa
  • .ssh/id_rsa.pub
$ ssh-copy-id ubuntu@vps-89148e22.vps.ovh.net

i ara ja podem entrar:

$ ssh ubuntu@vps-89148e22.vps.ovh.net
$ scp hola.txt ubuntu@vps-89148e22.vps.ovh.net:/home/ubuntu

NOTA: per tal de què funcioni el directori home de l'usuari només pot ser writable per ell mateix (permisos 755).

A Windows

En una instal·lació de Windows, les comandes ssh i scp ja estan instal·lades. Per tant, no cal instal·lar Putty (tot i que també es pot utilitzar si és la teva preferència).

Igual que a Linux:

ssh-keygen -b 4096 -t rsa

Es generen dos fitxers: la clau privada i la clau pública:

  • .ssh/id_rsa
  • .ssh/id_rsa.pub

Hem de copiar la clau pública al servidor. Com que la comanda ssh-copy-id no existeix a Windows, no passa res, ho farem manualment. Primer entrem al servidor:

$ ssh nom_usuari@vps-89148e22.vps.ovh.net
$ mkdir .ssh
$ nano .ssh/authorized_keys

I el que fem ara és copiar tot el contingut del fitxer local .ssh/id_rsa.pub a dins del fitxer authorized_keys que acabem de crear manualment. Això es pot fer de vàries maneres, però amb un copiar-enganxar també funciona.

El contingut que hem de copiar és similar a:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDhJDOxRW5PSIb1RRo...

I acaba amb el nom de la vostra màquina local.

Sortim de la sessió remota ($ exit) i ja podem tornar a entrar sense que ens demani el password:

$ ssh nom_usuari@vps-89148e22.vps.ovh.net

Instal·lar Docker

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

Aquesta instrucció ja no funciona. El que ha funcionat és:

To install Docker for Kali 2020.1 debian amd64 run the following:
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-ce-archive-keyring.gpg > /dev/null

then:

echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt-get update

sudo apt-get install docker-ce

i ja tinc instal·lat el docker. Per tal de no utilitzar sudo:

$ sudo groupadd docker (ja existeix)
$ sudo usermod -aG docker $USER

I ja puc fer el primer contenidor de prova:

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:4c5f3db4f8a54eb1e017c385f683a2de6e06f75be442dc32698c9bbe6c861edd
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly
$ docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
1e09e771f789   hello-world   "/hello"   28 seconds ago   Exited (0) 28 seconds ago             boring_proskuriakova

Creació s'usuaris

Amb l'usauri ubuntu creem els usuaris. Per ex, per crear l'usuari nom_usuari:

sudo useradd -d /home/nom_usuari -s /bin/bash -m nom_usuari
sudo passwd nom_usuari

sudo mkdir /home/nom_usuari/html
sudo su
# sudo echo "Benvingut nom_usuari" > /home/nom_usuari/html/index.html
sudo chown -R nom_usuari:nom_usuari /home/nom_usuari
# exit
sudo chmod -R 755 /home/nom_usuari

Editem el fitxer de configuració de l'Apache:

sudo nano /etc/apache2/sites-available/000-default.conf

    Alias /nom_usuari "/home/nom_usuari/html/"
    <Directory "/home/nom_usuari/html/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.html default.html index.php
    </Directory>


sudo /etc/init.d/apache2 restart

i ja funciona:

Si volem que aquest usuari sigui del grup sudoers:

$ usermod -aG sudo nom_usuari

Ara que ja tenim l'usuari creat, aquest usuari ja pot fer ssh:

$ ssh nom_usuari@vps-89148e22.vps.ovh.net

Per tal de que l'usauri es pugui canviar el seu password:

nom_usuari$ passwd

Per tal de poder entrar per SSH sense que demani el password, veure més amunt.

Creació de bases de dades dels alumnes

Des del root:

CREATE DATABASE nom_usuari DEFAULT CHARACTER SET utf8; 
CREATE USER nom_usuari@localhost IDENTIFIED BY 'keiL2lai';
GRANT ALL ON nom_usuari.* TO nom_usuari@localhost WITH GRANT OPTION;

I ara l'usuari nom_usuari ja pot entrar a la base de dades nom_usuari:

$ ssh nom_usuari@vps-89148e22.vps.ovh.net
nom_usuari$ mysql -h localhost -u nom_usuari -pkeiL2lai nom_usuari
mysql>

I té permisos per fer allò que vulgui en aquesta bd.

Instal·lació de Node

$ sudo apt-get install nodejs
$ nodejs --version
v12.22.5

$ sudo apt-get install npm
$ npm --version
7.5.2

No són les últimes versions. Per instal·lar les últimes versions:

1. First, clear the npm cache:

$ npm cache clean -f

2. Install n, Node's version manager:

$ sudo npm install -g n

3. With the n module installed, you can use it to:

$ sudo n latest
  installing : node-v17.8.0
       mkdir : /usr/local/n/versions/node/17.8.0
       fetch : https://nodejs.org/dist/v17.8.0/node-v17.8.0-linux-x64.tar.xz
   installed : v17.8.0 (with npm 8.5.5)

Tanco la consola i em torno a connectar:

$ node --version
v17.8.0
$ npm --version
8.5.5

Mòdul node-mysql

$ sudo apt-get install node-mysql (no cal)

Millor la versió 2 del mòdul. Ho instal·lem globalment, i ho salvem (--save) per tal de què funcioni a la primera:

$ sudo npm install -g mysql2
$ sudo npm install mysql2 --save

Exemple mínim:

var mysql = require('mysql2');

var connection = mysql.createConnection({
  host : 'localhost',
  port : 3306,
  database: 'nom_usuari',
  user : 'nom_usuari',
  password : '*******'
});

connection.query("select * from PROVA", function(err, rows){
        if(err != null) {
            res.end("Query error:" + err);
        } else {
            for (var i = 0; i < rows.length; i++) {
                 console.log(rows[i].nom);
            };
        }
});

connection.end();
$ node exemple_minim.js

Repàs bàsic de creació d'usuaris

Per veure la llista d'usuaris:

$ cat /etc/passwd
$ less /etc/passwd

Si només volem printar els noms d'usuari:

$ awk -F: '{ print $1}' /etc/passwd
$ cut -d: -f1 /etc/passwd

The command below will list all normal users in our Linux system:

$ getent passwd {1000..60000}
$ sudo useradd -m username

(l'opció -m és per crear el directori home de l'usuari)

Per poder fer login necessitem donar-li un password:

$ sudo passwd username

Per eliminar l'usuari (i el seu directori home):

$ sudo userdel -r username

Creació d'un docker bàsic Apache-PHP

$ mkdir docker-apache
$ cd docker-apache
$ mkdir src/
$ joe src/taules_multiplicar.php

<?php
for ($taula=1; $taula <=10 ; $taula++){
	echo 'Taula del '.$taula.'<br />';
for ($x=1; $x <=10 ; $x++){
	echo '[ '.$taula.' * '.$x.' = '.$taula*$x.' ] ';
}
echo '<hr />';
}
?>

Creem el fitxer de configuració Dockerfile:

$ joe Dockerfile

FROM php:7.4-apache
COPY src/ /var/www/html
EXPOSE 80

i creem el docker:

$ docker build -t apache-joan .

Sending build context to Docker daemon  3.584kB
Step 1/3 : FROM php:7.4-apache
7.4-apache: Pulling from lib
...
Successfully built 0d0d3399bd52
Successfully tagged apache-joan:latest

Ja podem arrencar el docker:

$ docker run -p 8080:80 apache-joan

I ja funciona:

Millor arrencar el docker en mode deamon:

$ docker run -p 8080:80 -d apache-joan
7fd7257f5a77bfd8d39a837ec99a28082486bc30301ceb4ef4fe7e19dad88895

Efectivament està arrencat i funciona:

$ docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                   NAMES
7fd7257f5a77   apache-joan   "docker-php-entrypoi…"   56 seconds ago   Up 56 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   vibrant_herschel

Per aturar-lo quan ja no el necessitem:

$ docker stop 7fd7257f5a77

Ja no el veiem fent docker ps, però sí que el veiem fent docker ps -a.

I per tornar-lo a arrencar:

$ docker start 7fd7257f5a77

Instal·lació Python

  • python3 - interactive high-level object-oriented language (default python3 vers
  • python3.9 - Interactive high-level object-oriented language (version 3.9)

No cal instal·lar Python, ja ve instal·lat per defecte:

$ python3 --version
Python 3.9.7

Llibreries numèriques

  • python3-numpy - Fast array facility to the Python 3 language
  • python3-matplotlib - Python based plotting system in a style similar to Matlab (Python 3)
  • python3-scipy - scientific tools for Python 3
  • python3-sympy - Computer Algebra System (CAS) in Python (Python 3)
$ sudo apt-get install python3-numpy
$ sudo apt-get install python3-matplotlib
$ sudo apt-get install python3-scipy
$ sudo apt-get install python3-sympy

Exemple:

import numpy as np
import sympy as sp
from sympy.abc import t
from sympy import exp
import matplotlib.pyplot as plt
from scipy import constants

print(constants.pi)

x = sp.symbols('x')
y = sp.Function('y')

# y'' + 3y' - 10y = 5t^2
print('Exemple: y\'\' + 3y\' - 10y = 5t^2')
y1 = sp.dsolve(y(t).diff(t,t) + 3*y(t).diff(t) - 10*y(t) - 5*t**2, y(t))
print(y1) # Eq(y(t), C1*exp(-5*t) + C2*exp(2*t) - t**2/2 - 3*t/10 - 19/100)
print("que és la solució que hem trobat a EDO2-45")

# y'' - y' - 6y = 10exp(3t)
print('\nExemple: y\'\' - y\' - 6y = 10*exp(3t)')
y1 = sp.dsolve(y(t).diff(t,t) - y(t).diff(t) - 6*y(t) - 10*exp(3*t), y(t))
print(y1) # Eq(y(t), C2*exp(-2*t) + (C1 + 2*t)*exp(3*t))

Mòdul MySQL

  • python3-mysql.connector - pure Python implementation of MySQL Client/Server protocol (Python3)
$ sudo apt-get install python3-mysql.connector

Exemple mínim exemple_minim.py:

import mysql.connector

cnx = mysql.connector.connect(host='localhost',user='nom_usuari', password='******', database='nom_usuari')
cursor = cnx.cursor()

query = ("SELECT * FROM PROVA")

cursor.execute(query)

for (id, nom) in cursor:
  print("{}, {}".format(id,nom))

cursor.close()
cnx.close()
$  python3 exemple_minim.py

Python Flask (Python per fer aplicacions web)

Instal·lem el mòdul:

  • python3-flask - micro web framework based on Werkzeug and Jinja2 - Python 3.x
sudo apt-get install python3-flask

Seguint ell tutorial, el script mínim és:

script hello.py:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
I per tal d'arrencar el servei:
<pre>
$ export FLASK_APP=hello
$ flask run
 * Running on http://127.0.0.1:5000/
Obrir port 5000 3.png

I l'aplicació la podríem veure a:

(efectivament si fem $ wget http://127.0.0.1:5000/ funciona)

Però en el servidor hem de fer: $ flask run -h vps-89148e22.vps.ovh.net

i millor utilitzar la IP:

Però per tal de què funcioni s'ha d'obrir el port 5000 en el servidor OVH. Està documentat a:

Resumint:

  1. Hem d'anar a la secció IP.
  2. Crear Firewall
  3. Hem creat el Firewall, i d'entrada està desactivat.
  4. Ara hem d'anar a primer a Activar el Firewall; i després a Configurar el Firewall.
  5. Afegir una regla: 0 és la primera regla a aplicar; autoritzem el port 5000; TCP

En comptes d'utilitzar el nom de domini vps-89148e22.vps.ovh.net, utilitzem la IP: 5.196.26.105. I ja funciona:

Ara que veiem que funciona, tornem a treure la regla i desactivar el firewall.



creat per Joan Quintana Compte, març 2022