Diferència entre revisions de la pàgina «Desplegar aplicació a VPS»

De wikijoan
Salta a la navegació Salta a la cerca
Línia 130: Línia 130:
 
       "command": "workbench.action.terminal.sendSequence",
 
       "command": "workbench.action.terminal.sendSequence",
 
       "args": {
 
       "args": {
         "text": "ruta_apache/UF2/Dolmens;npm run build;cd ruta_apache/dist;scp -r * nom_usuari@vps-89148e22.vps.ovh.net:/var/www/nom_usuari/html/dolmens;echo FI"
+
         "text": "cd ~/M06_WEC_2122/UF2/Dolmens;npm run build;cd ~/M06_WEC_2122/UF2/Dolmens/dist;scp -r * joan@vps-89148e22.vps.ovh.net:/home/joan/html/dolmens;echo FI"
 
       }
 
       }
 
     }
 
     }
 
</pre>
 
</pre>
 +
I per veure el resultat hem de tenir el terminal obert.
  
 
==rsync en comptes de scp==
 
==rsync en comptes de scp==

Revisió del 10:10, 4 abr 2022

Introducció

Tenim feta una aplicació webc i ara la volem desplegar. Per exemple, l'aplicació dels dòlmens que hem fet a M06:

Desplegar una aplicació web

Fem l'aplicació web

Tenim l'aplicació web dels dòlmens, o bé qualsevol altra aplicació web. Per exemple, pots utilitzar qualsevol dels exemples que pots trobar a:

Fixa't que en tots aquests exemples ens donen un index.html, main.js, i un fitxer package.json, que té la forma:

{
  "name": "custom-circle-render",
  "dependencies": {
    "ol": "6.14.1"
  },
  "devDependencies": {
    "parcel": "^2.0.0"
  },
  "scripts": {
    "start": "parcel index.html",
    "build": "parcel build --public-url . index.html"
  }
}

Si fem:

$ npm install

s'instal·len les dependències, que són ol (llibreria Openlayers) i parcel (llibreria que s'utilitza per al desenvolupament).

Un cop instal·lades les dependències fem:

$ npm start

per arrencar l'aplicació, o bé:

$ npm run build

per muntar l'aplicació. Es crea la carpeta dist/, que significa distribució, i és el codi optimitzat per poder-lo posar en un servidor web (com ara Apache).

És la carpeta dist/ la que haurem de desplegar.

Desplegament: Resum comandes

Es tracta d'enviar els fitxers generats al nostre projecte a l'espai que tenim en el servidor web. Farem servir el VPS del Jaume Balmes.

Haurem de crear la carpeta del projecte. Per exemple, si volem crear la carpeta dolmens/, i ho volem fer remotament, farem:

$ ssh nom_usuari@vps-89148e22.vps.ovh.net -f 'mkdir /home/nom_usuari/html/dolmens'

I ara ja podem enviar els fitxers al servidor:

$ cd ruta_projecte_local/Dolmens/dist
$ scp -r * nom_usuari@vps-89148e22.vps.ovh.net:/home/nom_usuari/html/dolmens/

I ara ja tenim disponible i pública la nostra web de dòlmens:

NOTA: No funciona? Si no funciona és perquè en fer el npm run build, en el index_v2.html tenim la línia:

<script src="main_v2.49837a9b.js">

i ha de ser:

<script src="./main_v2.49837a9b.js">

Resumint, per enviar els fitxers al servidor, la única cosa que hem de fer és:

$ scp -r * nom_usuari@vps-89148e22.vps.ovh.net:/home/nom_usuari/html/dolmens/

Desplegament des de Sublime Text

Captura deplegament.png

En el Sublime Text 3, primer instal·lem el plugin Shell Exec.

Dins del Sublime Text, Preferences > Key Bindings. Se'ns obre un fitxer de configuració, que físicament està a .config/sublime-text-3/Package/Users/Default (Linux).sublime-keymap.

Aquest fitxer conté un array de configuracions, i podem associar una drecera del teclat a les comandes que volem executar:

	{
	  "keys": ["ctrl+shift+i", "ctrl+shift+p"],
	  "command": "shell_exec_run",
	  "args": {
	    "title": "Desplegar Dòlmens",
	    "format": "cd /home/joan/M06_WEC_2122/UF2/Dolmens/;npm run build;cd /home/joan/M06_WEC_2122/UF2/Dolmens/dist;scp -r * joan@vps-89148e22.vps.ovh.net:/home/joan/html/dolmens;echo FI"
	  }
	}

Preferences > Settings

S'obre el fitxer de configuració Preferences.sublime-settings, i canviar

"shell_exec_output": "file"

per

"shell_exec_output": "panel"

Això significa que la sortida de la nostra comanda no es redirigirà a un fitxer, sinó al penell per poder-ho visualitzar.

Ara ja tenim disponibles els canvis que haguem fet a:

Desplegament des de VStudio Code

Captura deplegament vscode.png
Captura deplegament vscode2.png

Instal·lació de VSCode a Linux:

code_1.63.2-1639562499_amd64.deb
$ sudo dpkg -i code_1.63.2-1639562499_amd64.deb

Amb el VSCode el més pràctic és tenir el terminal integrat i des d'allà executar les comandes del deplegament.

Show Terminal Panel (Ctrl shift + `)

I si volem associar una drecera de teclat per executar una sèrie de comandes:

File > Preferences > Keyboard shortcuts

i aleshores a dalt de tot

Open Keyboard shortcuts (JSON), podem editar el fitxer keybindings.json, i afegim una nova entrada:

    {
      "key": "ctrl+d",
      "command": "workbench.action.terminal.sendSequence",
      "args": {
        "text": "cd ~/M06_WEC_2122/UF2/Dolmens;npm run build;cd ~/M06_WEC_2122/UF2/Dolmens/dist;scp -r * joan@vps-89148e22.vps.ovh.net:/home/joan/html/dolmens;echo FI"
      }
    }

I per veure el resultat hem de tenir el terminal obert.

rsync en comptes de scp

A una màquina Ubuntu/Debian rsync ja bé instal·lat per defecte.

$ man rsync

NAME
       rsync - a fast, versatile, remote (and local) file-copying tool

rsync sigifica sincronització remota, i permet copia fitxers d'un recurs local a un recurs remot, o viceversa. A diferència del scp, només s'envien els fitxers nous o les diferències de fitxers. Per tant, és més útil quan els projectes que hem d'actualitzar són bastant grans i només volem enviar els petits canvis que hem fet des de l'última sessió.

$ rsync -av /path/to/source/directory /path/to/target/directory

Opcions:

  • -a: "archive" mode, which ensures that symbolic links, devices, attributes, permissions, ownerships, etc. are preserved in the transfer.
  • -v: opció verbose (per mostrar informació per la pantalla)

Per exemple, si volem copiar el projecte de dòlmens farem:

$ rsync -av ~/M06_WEC_2122/UF2/Dolmens/dist nom_usuari@vps-89148e22.vps.ovh.net:/home/nom_usuari/html/dolmens

sending incremental file list
dist/
dist/index_v2.html
dist/index_v2.js
dist/index_v2.js.map
dist/main_v2.29a54931.css
dist/main_v2.29a54931.css.map
dist/main_v2.29a54931.js
dist/main_v2.29a54931.js.map
dist/main_v2.49837a9b.js
dist/main_v2.49837a9b.js.map
dist/main_v2.bb28b584.css
dist/main_v2.bb28b584.css.map
dist/img/
dist/img/dolmen_16.png
dist/img/dolmen_24.png

sent 11,133,561 bytes  received 275 bytes  4,453,534.40 bytes/sec
total size is 11,129,832  speedup is 1.00

Si ho tornem a fer una segona vegada:

$ rsync -av ~/M06_WEC_2122/UF2/Dolmens/dist joan@vps-89148e22.vps.ovh.net:/home/joan/html/dolmens
sending incremental file list

sent 468 bytes  received 18 bytes  324.00 bytes/sec
total size is 11,129,832  speedup is 22,900.89

veiem que només s'han enviat 468 bytes cap al servidor

rsync a windows

S'ha d'habilitar el subsistema de Windows per a Linux (WSL). (TBD)

FTP en comptes de scp

En el servidor OVH de l'assignatura tenim un servidor FTP, i per tant amb un client com el filezilla podem enviar els fitxers al servidor. Per defecte, l'usuari es connecta al seu home/. Recorda que dins del home hi ha la carpeta html/ que és on hem de desplegar els projectes web.

Si volem fer FTP en línia de comandes (per integrar-ho amb script d'automatització) també és possible.


creat per Joan Quintana Compte, març 2022