Table of Contents generated with DocToc
- Como Desplegar una Aplicación Web en iaas.ull.es
- Acceso al servicio
- Panel https://iaas.ull.es/mismaquinas
- Recuerde estar autenticado en la ULL
- Incidencia en Octubre de 2018
- Acceso a https://iaas.ull.es
- Opciones de Consola
- Acceso por SSH y Credenciales
- Averiguar la IP de la máquina virtual
- Conectarse desde fuera de la ULL: VPN ULL
- Configure la ssh de su portátil/desktop para acceder a su máquina del iaas
- Puertos abiertos en las Máquinas Virtuales
- Descripción de las máquinas
- Configure el cliente ssh para trabajar con GitHub
- Desplegando una aplicación Web en su máquina del iaas
- Referencias
Como Desplegar una Aplicación Web en iaas.ull.es
Para acceder al servicio, todos los usuarios (tanto los responsables como los usuarios finales) accederán a https://iaas.ull.es, donde seleccionarán la opción Portal del usuario.
En 2018 el STIC ha desplegado un panel accesible en [1], que permite listar las máquinas que son propiedad o que tienen permisos de uso por parte del usuario que se autentica. Tras autenticarse, a dicho usuario le aparecerán las máquinas a las que tiene acceso, conjuntamente con algunos datos, como su estado (encendida, apagada...), el sistema operativo y especialmente las IPs de las tarjetas de red.
Esto sirve para que los usuarios no tengan que entrar al panel de IaaS, conectarse a la máquina virtual y ejecutar algún comando para ver la IP de la máquina para posteriormente conectarse por SSH. Ahora ya les aparecerá en el panel y pueden saber la IP directamente.
Toda esta información ha sido actualizada ya en los documentos correspondientes ([2], [3], [4]).
Recuerde que dentro de la ULL deberá haber entrado previamente a https://acceso.ull.es, esto es estar autenticado como miembro de la ULL y desde fuera de la ULL usando la VPN de la ULL
¡La IP que aparece en el panel no es la correcta! Esto es un problema que tienen las Ubuntu 18, y es que cuando renueva los leases DHCP al parecer no quita las IPs anteriores, con lo cual las IPs se duplican y varias máquinas tienen la misma IP.
La solución:
En la interfaz web deben escribir:
sudo netplan apply
y después
ip a
para saber la IP correcta
Acceso a https://iaas.ull.es
Una vez autenticado le saldrá el menú con su panel de máquinas:
Al pulsar sobre connect
se abrirá una terminal en el navegador:
Si tiene problemas conectándose a la máquina repase las opciones del campo Console
:
- Se han configurado con el visor VNC (recuerde poner la opción
noVNC
en las opciones de la cónsola). VNC es un sistema para compartir un desktop gráfico
-
Las credenciales son
usuario/usuario
, se les forzará a cambiar la contraseña ante el primer login. -
Las máquinas tienen IP dinámica por DHCP (en principio tienen keepalive así que no debería cambiarlas)
-
Los usuarios tienen disponibilidad para hacer SSH a las máquinas,
- Dentro de la ULL entrando previamente a https://acceso.ull.es y
- Desde fuera de la ULL usando la VPN
Serán requeridas las credenciales de la ULL; es decir, este servicio será exclusivo para la comunidad universitaria
- La terminal en el navegador no es útil en absoluto.
- Use la terminal en el navegador para averiguar la IP de la máquina para poder usar
ssh
posteriormente. En la terminal de su navegador conectado a la máquina escriba:
usuario@SYTW:~/src/sytw$ ifconfig
eth0 Link encaa:Ethernet direcciónHW aa:aa:aa:aa:aa:aa
Direc. inet:55.5.555.55
- La IP es el valor que aparece en el campo
inet
- A partir de ese momento use el cliente
ssh
en su ordenador para conectarse a su máquina virtual
$ ssh 55.5.555.55
Véase la sección incidencia en Octubre de 2018
Tutorial sobre como usar el Servicio VPN de la ULL
- Genere una clave rsa en su portátil (limitación en 2018: tiene que ser rsa)
~/.ssh(master)]$ ssh-keygen -trsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/casiano/.ssh/id_rsa): miclave
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in miclave.
Your public key has been saved in miclave.pub.
- Añada una entrada en su fichero
~/.ssh/config
:
# PL 17/18
# iaas.ull.es
Host pl1718
HostName 11.1.111.111
user usuario
IdentityFile /Users/casiano/.ssh/miclave
## send the signal every four minutes
ServerAliveInterval 240
- Publique la clave en su máquina
iaas
usuario@ubuntu:~/.ssh$ cd .ssh/
usuario@ubuntu:~/.ssh$ vi authorized_keys
añada los contenidos de miclave.pub
- Creo que ahora mismo las Máquinas Virtuales vienen con estos puertos abiertos:
- 22, 80, 443 y
- el rango del 8080 al 8090
- En principio se dispone de una máquina por alumno
- Las máquinas de una misma asignatura comparten el mismo tag, por ejemplo
SISTECWEB
o algo parecido - Las máquinas tienen 2GB de RAM y 1 procesador de 2 CPUs cada una
Lo que está instalado en las máquinas depende del tipo de plantilla que haya solicitado el profesor para el curso. De todos modos, como tenemos permisos de administración no es mucho problema instalar cualquier software que nos falte.
Lo que sigue es la descripción de una máquina típica correspondiente a una plantilla de servidor.
-
Suele estar instalado
git
:usuario@SYTW:~$ git --version git version 1.9.1
Si queremos actualizar git
:
apt-get install git
-
Suele estar instalado
nodejs
. Recuerde que es Linux Ubuntu:node
no esnodejs
:usuario@SYTW:~$ node --version El programa «node» puede encontrarse en los siguientes paquetes: * node * nodejs-legacy Intente: sudo apt-get install <paquete seleccionado> usuario@SYTW:~$ nodejs --version v0.10.25
Si no está instalado siga las instrucciones en Installing Node.js via package manager
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - sudo apt-get install -y nodejs
-
Haga un enlace simbólico de
node
anode.js
usuario@ubuntu:~$ which nodejs
/usr/bin/nodejs
usuario@ubuntu:~$ sudo ln -s /usr/bin/nodejs /usr/bin/node
usuario@ubuntu:~$ node --version
v4.2.6
-
O mejor aún instale primero nvm y luego instale Node.js. nvm es como rvm para NodeJS: Te permite tener varias instalaciones de node y cambiar entre versión y versión
usuario@ubuntu:~$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
El script clona el repositorio de nvm a
~/.nvm
y añade líneas a nuestro script de arranque de perfil (~/.bash_profile
,~/.zshrc
,~/.profile
, or~/.bashrc
). Es por eso que tenemos que rearrancar la terminal:usuario@ubuntu:~$ command -V nvm -bash: command: nvm: no se encontró usuario@ubuntu:~$ bash usuario@ubuntu:~$ nvm list N/A node -> stable (-> N/A) (default) iojs -> N/A (default)
Podemos ahora instalar tantas versiones de node como queramos:
usuario@ubuntu:~$ nvm install node Downloading and installing node v9.4.0... usuario@ubuntu:~$ nvm list -> v9.4.0 default -> node (-> v9.4.0) node -> stable (-> v9.4.0) (default) stable -> 9.4 (-> v9.4.0) (default) iojs -> N/A (default) lts/* -> lts/carbon (-> N/A) lts/argon -> v4.8.7 (-> N/A) lts/boron -> v6.12.3 (-> N/A) lts/carbon -> v8.9.4 (-> N/A)
-
Recuerde poner sus claves privadas de GitHub en
.ssh
para poder trabajar con sus repos -
Actualice
~/.ssh/config
de manera apropiada:
usuario@ubuntu:~/.ssh$ ssh-keygen -tdsa
...
usuario@ubuntu:~/src/pl$ vi ~/.ssh/config
...
usuario@SYTW:~/src/sytw$ cat ~/.ssh/config
Host github.com
HostName github.com
user git
IdentityFile /home/usuario/.ssh/miclaveparagithub
-
¿Ni idea de como funciona el protocolo HTTP web? Estudia estos vídeos en YouTube:
-
Cree un directorio de trabajo:
usuario@SYTW:~$ mkdir src usuario@SYTW:~$ cd src usuario@SYTW:~/src$ mkdir sytw usuario@SYTW:~/src$ cd sytw/
-
Clone un repo con una aplicación Web de prueba. Por ejemplo crguezl/express-start:
usuario@ubuntu:~/src/PL$ git clone git@github.com:crguezl/express-start.git Cloning into 'express-start'... The authenticity of host 'github.com (192.30.253.112)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Tienes que añadir una clave a github para poder conectarte. En GitHub
settings>SSH and GPG Keys>new SSH key
. Una vez hecho:usuario@SYTW:~/src/sytw$ git clone git@github.com:crguezl/express-start.git Clonar en «express-start»... Warning: Permanently added the RSA host key for IP address '555.55.555.555' to the list of known hosts. remote: Counting objects: 87, done. remote: Total 87 (delta 0), reused 0 (delta 0), pack-reused 87 Receiving objects: 100% (87/87), 66.93 KiB | 0 bytes/s, done. Resolving deltas: 100% (41/41), done. Checking connectivity... hecho.
-
Este es el contenido de la aplicación de ejemplo hello/hello.js:
var express = require('express')
var app = express()
var path = require('path');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.get('/', function (req, res) {
//res.send('Hello World!')
res.render('index', { title: 'Express' });
})
/*
var router = express.Router();
module.exports = router;
*/
app.get('/chuchu', function (req, res) {
//res.send('Hello Chuchu!')
res.render('index', { title: 'Chuchu' });
})
app.get('/cat', function (req, res) {
res.send('Got a GET request'+
'<br/><img src="kitten.jpg" />'
);
})
app.get('/dog', function (req, res) {
res.sendFile(path.join(__dirname, 'public/dog.jpg'));
});
var server = app.listen(8080, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
Cambiamos port de escucha a 80:
usuario@SYTW:~/src/sytw$ cd express-start/
usuario@SYTW:~/src/sytw/express-start$ cd hello/
usuario@SYTW:~/src/sytw/express-start/hello$ vi hello.js
usuario@SYTW:~/src/sytw/express-start/hello$ # cambiamos port de escucha a 80
usuario@SYTW:~/src/sytw/express-start/hello$ cat hello.js
- ¿Ni idea de como funciona express.js? Sigue este tutorial:
- Express/Node introduction en developer.mozilla.com
-
Instalamos las dependencias:
usuario@SYTW:~/src/sytw/express-start/hello$ npm install npm WARN package.json hello@0.0.0 No description npm WARN package.json hello@0.0.0 No repository field. ...
- Ejecutamos (El
sudo
es necesario porque estamos usando el puerto 80):
usuario@ubuntu:~/src/pl/express-start/hello$ which node
/home/usuario/.nvm/versions/node/v9.4.0/bin/node
usuario@ubuntu:~/src/pl/express-start/hello$ sudo /home/usuario/.nvm/versions/node/v9.4.0/bin/node hello.js
Example app listening at http://:::80
- Usamos el comando unix
nohup
si queremos evitar que el programa termine cuando hagas logout
usuario@ubuntu:~/src/express-start/hello$ nohup sudo -b node hello.js
La opción -b
de sudo
ejecuta el comando en background.
Ahora podemos salir de la cuenta y el servicio continúa ejecutandose.
- A continuación visitamos la página con el navegador usando la URL con la IP:
- El tutorial SERVICIO IAAS de la ULL
- Véase este documento como HTML
- Véase este repo en GitHub
- Manual de uso de pools de máquinas
- Manual de uso de pools de recursos
- Manual de uso de máquinas puntuales
- Tutorial sobre como usar el Servicio VPN de la ULL