Node.js

Accés a servidors remots

  

Una vegada vist com funciona un servidor web local i com es construïx una web sobre ell, ja siga PHP sobre Apatxe, ASP.NET sobre IIS, JSP sobre Tomcat, Node o qualsevol altre, convé també saber els passos a seguir per a posar en marxa este servidor i esta(s) web(s) en un entorn real, en el que es coneix com el passe a producció.

1. Passos previs per al desplegament d’aplicacions en servidors remots

El desplegament en servidors remots permet que una aplicació web siga accessible a nivell mundial.

Este pas requerix d’alguns elements previs que hem de tindre preparats:

2. Tipus d’allotjaments web i característiques

A l’hora de triar l’allotjament dels nostres projectes web, existixen diferents opcions, unes més costoses i altres més assequibles. En general, salve per a empreses fortes que disposen de la infraestructura adequada, se sol acudir a empreses especialitzades en allotjament web per a situar estos projectes. Elles s’encarreguen així del manteniment del servidor, mesures de seguretat, i altres elements com ara la disponibilitat, que es garantix mitjançant un acord del nivell de servici (Service Level Agreement, SLA). Vegem alguns exemples típics.

2.1. Allotjament en servidor dedicat

Quan el projecte és d’envergadura, i la companyia té suficient solvència econòmica, es pot optar per contractar un servidor dedicat, és a dir, un equip maquinari exclusiu per a ús de l’empresa en qüestió. Com diem, en alguns casos este servidor està en les pròpies instal·lacions de l’empresa, amb la seua IP pròpia, i és l’empresa qui s’encarrega de mantindre’l, reiniciar-lo i configurar la seguretat en el seu accés. En altres ocasions, es delega esta tasca en una empresa especialitzada en allotjaments web, amb el corresponent SLA acordat.

Els servidors dedicats oferixen un alt rendiment i seguretat, ja que no es compartixen recursos amb altres usuaris. No obstant això, solen ser més costosos i requerixen coneixements tècnics per a la seua configuració i administració.

Com a exemples d’empreses d’allotjament que oferixen estos servidors dedicats podem nomenar, entre altres, a Acens, OVH, o IONOS 1&1. Els preus mitjans tendixen a començar al voltant dels 70 - 90 euros al mes, encara que pot haver-hi altres ofertes més econòmiques.

2.2. Allotjament en servidor compartit o hosting bàsic

En l’altre extrem, podem trobar-nos amb projectes que requerisquen de pocs recursos. Parlem de projectes amb poques bases de dades, poca necessitat d’espai per a emmagatzematge, i pocs requisits d’amplada de banda o connexions simultànies. En estos casos, algunes empreses d’allotjament també oferixen la possibilitat d’utilitzar un espai xicotet en un servidor, que ens limita molt unes certes coses, com ara l’amplada de banda, nombre de bases de dades disponibles, espai en disc… Fins i tot ens limita el llenguatge o llenguatges a utilitzar, sent PHP el més habitual.

En comparació amb els servidors dedicats, presenten més problemes de seguretat. Això es deu a la naturalesa mateixa de com funcionen estos dos tipus de servidors i com es gestionen els recursos i la seguretat en cadascun d’ells. Per exemple, si altres usuaris tenen alguna vulnerabilitat de seguretat en el seu lloc web, un atacant podria intentar aprofitar-la per a accedir a altres llocs en el mateix servidor.

També trobem nombroses empreses que oferixen este tipus d’allotjament, com IONOS 1&1, Servage, Hostalia… Depenent de les característiques que oferisquen (nombre de bases de dades, amplada de banda, emmagatzematge, etc), els preus poden rondar entre 3 i els 7 o 8 euros al mes, per a esta mena de servici.

2.3. Una solució intermèdia: el VPS

Com a situació intermèdia entre les dos anteriors, està l’opció de contractar un servidor privat virtual (VPS, Virtual Private Server). Consistix a simular que es disposa d’un servidor dedicat, però internament del que es disposa és d’una part d’un equip, amb el seu propi disc dur, memòria RAM dedicada, processadors, etc. D’esta manera, podem instal·lar qualsevol tipus de programari que necessitem (tenint únicament en compte els requisits de nombre de processadors, RAM i espai disponible), però el cost és molt de menor que el d’un servidor dedicat, en compartir-lo amb altres webs que utilitzen un VPS sobre el mateix equip.

Moltes de les empreses que podríem citar en els dos casos anteriors oferixen este tipus de servici, com per exemple OVH, Hostalia o IONOS 1&1. El preu sol rondar els 10 euros al mes, encara que en alguns casos s’oferixen preus més competitius per a uns certs tipus bàsics de VPS.

Per la seua versatilitat, en este tema ens basarem en esta última opció. Com a empresa d’allotjament, explicarem com registrar-nos i utilitzar un VPS amb OVH, auque els passos a seguir amb qualsevol altra empresa d’hosting seran més o menys similars.

3. Contractació d’un VPS amb OVH

Com hem comentat abans, explicarem els passos a seguir per a contractar un VPS bàsic amb l’empresa OVH, per exemple, i veurem quines característiques oferix dit VPS. Per a començar, hem d’accedir a la web de l’empresa.

Com contractarem un producte, haurem de registrar-nos des de la Àrea de client en la part superior, triant després l’opció de Crear un compte. Si ja som clients, podem loguearnos des d’esta mateixa secció de Àrea de client.

Per a triar el VPS a contractar, anem a la secció Bare Metall Cloud > Contractar > Servidors Privats Virtuals del menú superior de la pàgina principal (una vegada ens hem logueado)

Veurem els diferents plans de VPS oferits:

Triarem l’opció més bàsica i econòmica. Si fem clic en el botó corresponent de Contractar, es mostraran les opcions per a configurar la nostra instància de VPS.

Permet triar quina distribució de sistema operatiu preinstal·lar. Podem triar entre diferents, com Linux Debian, CentOS, Ubuntu… També s’oferixen algunes distribucions amb interfície gràfica incorporada, com KUbuntu o Windows Server.

Si contractem el VPS, ens demanarà que especifiquem algunes opcions més, com la nostra localització (Europa), o el sistema operatiu a instal·lar. En el nostre cas, utilitzarem una distribució Debian. En general no és recomanable utilitzar l’última, ja que algunes ferramentes, com MongoDB, solen tardar a actualitzar-se a estes últimes versions.

3.1. Gestió bàsica del VPS

Una vegada completat el registre, i passat un temps, rebrem un e-mail de confirmació amb les dades per a accedir al VPS. A través de l’àrea de client de la pàgina web, al qual s’accedix amb l’usuari i contrasenya que indiquem en registrar-nos, podrem gestionar alguns aspectes: reinstal·lar el VPS, ampliar les seues capacitats, associar un nom de domini, etc.

Inicialment s’assignarà un nom de domini amb un codi aleatori, seguint el patró vps-xxxxxx.vps.ovh.net, sent XXXXXX el codi que se’ns haja assignat. Podem, a més, contractar altres noms de domini i associar-los al nostre VPS, com veurem a continuació.

En la secció de Inici podem consultar, entre altres coses, quina adreça IP se’ns ha assignat (IPv4 i IPv6), el nom del VPS, i en la part esquerra hi ha una sèrie d’opcions per a, per exemple, reiniciar el servidor, o reinstal·lar-lo de nou (en el cas que alguna instal·lació haja resultat defectuosa i necessitem tornar a començar, per exemple).

3.2. Contractació d’un domini

Un pas habitual si desenvoluparem una aplicació web amb una certa visibilitat és contractar un nom de domini associat, de manera que puguem accedir a l’aplicació amb este nom de domini.

Des de la pròpia plataforma d’OVH podem contractar el domini, amb diferents extensions (.és, .com, .net, .org, .eu…). Podem, no obstant això, utilitzar el nom de domini vps-xxxxxx.vps.ovh.net que ens han assignat, per a fer webs d’ús privat o restringit. També podem contractar un domini .ovh si busquem un preu econòmic. Estos dominis se solen oferir entre 1 i 3 euros a l’any, aproximadament.

Des de la secció de Web Cloud en la nostra àrea de clients podem contractar el domini.

Buscarem primer el domini que volem comprar (per exemple, maycalle.ovh), i la plataforma ens informarà de si està disponible i el seu preu anual. Una vegada seleccionat el domini en qüestió, els següents passos són:

  1. Opcionalment, es poden afegir altres servicis, com el DNS Anycast (que replica el DNS en altres servidors per a agilitzar l’accés), o DNSSEC, que protegix el domini contra l’enverinament de DNS (és a dir, que siga facilitat per fonts DNS no autoritzades).
  2. També es pot contractar un allotjament (hosting) amb el domini. En este cas no és necessari, ja que tenim un VPS contractat, així que podem triar que no necessitem allotjament amb el domini.
  3. Podem especificar els comptes de correu del propietari, administrador, etc del domini (s’emplenen automàticament amb el compte de correu amb què ens registrem). També podem indicar el servidor DNS on allotjar el nom de domini (el normal és triar el que ve per defecte).

Quan ja tinguem contractat el domini amb les opcions que hàgem triat, hem de associar el domini al VPS. En la secció Web Cloud de la nostra àrea de clients existix una subsecció Dominis, on podem veure els dominis que tenim contractats. Fent clic en un d’ells veurem la seua configuració actual.

En la pestanya de Redirecció veurem el domini amb la IP actualment assignada. Esta IP correspon a una pàgina de benvinguda per defecte d’OVH. Fem clic en el botó de configuració a la dreta de la IP, i triem modificar registre. Assignem la que tenim assignada al nostre VPS.

A més, hem d’anar a la secció Zona DNS i modificar els registres A (Address Rècord) perquè el nostre domini apunte a la IP del nostre VPS.

Passats uns dies tindrem disponible el domini (si no és així, haurem de contactar amb OVH a través del suport del panell de client perquè ho refresquen). Podem comprovar-ho fent ping a este domini, i veient que la IP a la qual intenta connectar correspon amb la nostra.

ping maycalle.ovh
PING maycalle.ovh (92.222.22.170): 56 data bytes...

NOTA: si passades 24 o 48 hores seguim sense tindre associada la IP al nostre domini, seguint la documentació oficial d’OVH, hem d’acudir a la mateixa secció de dominis vista abans, però en lloc d’anar a Redirecció, hem d’anar a la secció Zona DNS, i fer clic en el botó Editar en mode text de la part dreta. Apareixerà un quadre per a editar la configuració de DNS manualment, però n’hi ha prou que enviem esta configuració sense més per a sol·licitar que es propague.

Afegir subdominis

Si volem afegir subdominis d’un contractat (per exemple, proves.maycalle.ovh), bastaria amb accedir a este mateix panell de redireccions i polsar el botó de Crear una redirecció en la part dreta. Posarem el nom del subdomini:


Després indicarem a què ho redirigirem (podem redirigir a una web, o a un servidor). En este cas, redirigiríem al nostre servidor VPS:

Després, triem el mètode de redirecció (per IP), i finalment especifiquem l’adreça IP, que serà la que se’ns ha assignat per al VPS. Després d’este pas, confirmarem les dades i quedarà el subdomini registrat en les redireccions.

4. Accés remot al VPS

Existixen diferents maneres d’accedir al VPS per a pujar arxius, descarregar-los o instal·lar programari, entre altres coses. Analitzarem ací algunes de les més habituals i/o còmodes.

4.1. Accés per SSH en terminal per a instal·lar aplicacions

Una forma rudimentària, però útil, d’accedir al servidor, és a través d’un terminal per SSH. Per a això, hem d’accedir al nom del VPS indicat en el correu de confirmació. Per exemple, si el nom és vps-xxxxxxxx.vps.ovh.net, podem connectar per SSH amb usuari root amb este comando:

ssh root@vps-xxxxxxxx.ovh.net

En el cas de tindre un domini contractat i ja enllaçat amb el VPS (per exemple, maycalle.ovh), podem connectar així:

ssh root@maycalle.ovh

Veiem que s’anteposa l’usuari a la direcció del VPS, separats per una arrova. Ens demanarà que introduïm la contrasenya de root en connectar, i ja podrem accedir. Una vegada dins, i des del terminal, podrem instal·lar el programari que necessitem (servidors web, servidors de bases de dades, etc), i també detindre o reiniciar estos servicis, com veurem més endavant.

També és possible utilitzar algun client SSH que recorde les dades de la connexió per a no haver-los de que indicar cada vegada. En el cas de Windows i Linux, podem utilitzar OpenSSH, per exemple. En el cas específic de Windows disposem de Solar Putty, que permet, entre altres coses, tindre diverses pestanyes de terminal obertes. Pel que fa a sistemes Mac, podem emprar la ferramenta Termius, per exemple. El principal avantatge d’estes ferramentes és simplement el recordar les dades de la connexió per a no haver-los de que posar cada vegada, però podem connectar per SSH amb un simple terminal del sistema operatiu.

4.2. Descàrrega d’aplicacions mitjançant git

Si tenim oberta una sessió SSH, podem emprar la ferramenta git per a descarregar aplicacions que tinguem pujades a algun repositori tipus GitHub, BitBucket o similar. Per a això, n’hi ha prou que:

  1. Instal·lem git, si no ho hem fet ja:
sudo apt install git
  1. Registrem de manera global en el sistema les nostres dades del compte de GitHub (e-mail i usuari):
git config --global user.email el_teu_email@domini.com
git config --global user.name el_teu_nick_en_github
  1. Per a descarregar per primera vegada un repositori remot, usarem l’orde git clone, seguida de la URL del repositori a clonar:
git clone url_repositori_git

NOTA: es crearà una subcarpeta amb el nom del repositori en qüestió.

  1. Per a descarregar actualitzacions sobre un projecte prèviament clonat, emprarem el comando git pull, des de la carpeta del projecte en si:
git pull

Exercici 1:

Instal·la git en el teu VPS i configura-ho amb les teues credencials

Connectar un repositori local amb un repositori remot utilitzant VSCode

Si no tenim cap repositori remot disponible, podem utilitzar VS Code per a connectar un repositori local amb un repositori remot. Este procés implica els següents passos:

  1. Creem un nou repositori en GitHub, BitBucket o un altre servici similar; generalment això es pot fer directament des de la interfície web de la plataforma.
    • Accedix al teu compte de Github
    • Feix clic en “New” o “Nou repositori”
    • Introduïx el nom del teu repositori i, de manera opcional, una descripció
    • Tria la visibilitat del repositori (públic o privat).
    • No agregues cap arxiu README ni un .gitignore, ho farem després
    • Finalment, fes clic en “Create repository” o “Crear repositori”.
  2. Inicialitzem un repositori Git des de VS Code
    • Obri el teu projecte en VS Code
    • En la barra lateral, cerca la icona de “Control de codi font” o “Source control” (sembla un parell de branques entrellaçades).
    • Fes clic en “Initialize Repository”. Això crearà un nou repositori Git en el teu projecte, similar a usar git init en la terminal.
  1. Seleccionem els arxius que vulguem per a fer commit; podem agregar arxius a la staging area seleccionant-los i fent clic en el símbol de “més” (+). Això és equivalent a usar git add en el terminal.


  1. Creem i confirmem el primer missatge de commit
    • En la part superior de la pestanya de “Control de codi font”, hi ha un camp per a escriure un missatge de commit.
    • Una vegada escrit el missatge, fes clic en la icona de “check” o “confirmació” per a realitzar el commit. Això és similar a fer git commit -m "missatge" en el terminal.
  2. Connectem amb un repositori remot i fem push
    • Agregar un repositori remot: això usualment es fa una vegada. Pots fer-ho en la terminal amb: git remalnom add origin URL_DE EL_REPOSITORI, ja que esta operació específica no té una interfície directa en VS Code.
    • Fer push dels canvis: en la pestanya de “Source Control”, fes clic sobre “Publicar branch” (pujar canvis a la branca principal del repositori remot). Això farà un git push, enviant els teus canvis locals a la branca remota que acabes de crear.
  3. Incloure els arxius Readme.md i .gitignore
    • En el teu projecte local de VS Code crea un fitxer Readme.md amb el nom del projecte i una breu descripció. Per exemple:

Per a qualsevol nova modificació que es realitze en el projecte local, és important seguir un procés sistemàtic per a assegurar-se que els canvis es registren i se sincronitzen correctament amb el repositori remot:

4.3. Accés per client SFTP per a pujar/baixar arxius

Una segona via d’accés, aprofitant la connexió SSH citada anteriorment, consistix a utilitzar un client gràfic que permeta connectar amb els paràmetres anteriors, i veure de manera gràfica el sistema d’arxius i carpetes remot. D’esta manera, podrem navegar fins a qualsevol carpeta i pujar arxius a ella o descarregar informació.

Un dels clients més útils i còmodes d’utilitzar per a este fi, i que també pot usar-se com a client FTP és FileZilla. És un client multiplataforma que pot descarregar-se des de la seua web oficial.

Amb el botó de la cantonada superior esquerra (Gestor de llocs) podem configurar una nova connexió, establint els paràmetres. Haurem d’indicar el nom de domini o servidor al qual connectar, i el port i protocol. En el nostre cas, utilitzarem SFTP per SSH, al port 22. Indicarem a més el nostre usuari (root) i contrasenya d’accés.

En connectar, veurem en el panell dret el sistema d’arxius del servidor, i en l’esquerre l’el nostre local. D’esta manera és senzill pujar i descarregar arxius.

Podem emprar esta opció per a, per exemple, pujar el contingut d’un projecte web a la seua carpeta en el servidor. Encara que no és una opció molt recomanable, perquè deixa al servidor molt vulnerable. L’usuari amb què connectem és root, i per tant tenim permís per a alterar qualsevol carpeta, amb el consegüent risc que això suposa.

4.4. Accés per FTP

Per a intentar pal·liar els problemes de seguretat de l’anterior opció, una alternativa consistix a instal·lar un servidor FTP en el nostre servidor VPS, crear usuaris virtuals amb permisos restringits a una sèrie de carpetes concretes, i connectar des d’un client FTP (com el mateix FileZilla, per exemple), utilitzant eixos usuaris.

Com a servidor FTP podem triar entre varis. Un dels més habituals, i que no requerix interfície gràfica per a configurar-se és vsftpd.

Instal·lació i posada en marxa de vsftpd

Per a instal·lar vsftpd, accedim per SSH (terminal) al VPS. Des d’eixe terminal SSH, escrivim el següent comando per a instal·lar el servidor:

sudo apt-get install vsftpd

Després de la instal·lació, podem iniciar i detindre el servidor amb el corresponent comando:

sudo /etc/init.d/vsftpd start
sudo /etc/init.d/vsftpd stop
sudo /etc/init.d/vsftpd restart

Configuració bàsica

Per a editar la configuració del servidor, hem d’editar l’arxiu /etc/vsftpd.conf. Convé fer una còpia de seguretat de l’arxiu original, per si editem alguna cosa que deixe inservible el servidor.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Després, ja podem editar la configuració

sudo nano /etc/vsftpd.conf

Algunes opcions de configuració interessants:

Gestió d’usuaris

Vegem ara com afegir usuaris amb les seues respectives contrasenyes, perquè puguen connectar per FTP a la seua carpeta personal.

Pas 1: crear grup d’usuaris. Per a identificar millor als usuaris que creem per a accedir per FTP, podem crear un grup d’usuaris a este efecte. Cridarem al grup, per exemple, ftp:

sudo groupadd ftp

Pas 2: evitar l’accés per consola al servidor. Per a no permetre que estos usuaris troben la manera d’entrar per terminal al servidor, i accedir així a altres carpetes, creguem el que es denomina un “shell fantasma”:

sudo mkdir /bin/ftp

Després, editem l’arxiu /etc/shells (nano /etc/shells), i afegim esta línia, referenciant el shell acabat de crear.

/bin/ftp

Pas 3: evitar l’accés per SSH al servidor. Per defecte, qualsevol usuari del sistema pot accedir per SSH al servidor, i d’esta manera navegar per l’estructura de carpetes i arxius. Per a evitar això, editem l’arxiu /etc/ssh/ssh_config, i afegim esta línia (al final, per exemple), per a donar permís només a l’usuari root:

AllowUsers root

Després, reiniciem el servici SSH:

/etc/init.d/ssh restart

Pas 4: crear a l’usuari del grup. Per a crear a un usuari que pertanga a este grup, en primer lloc li creguem la seua carpeta d’inici. Si per exemple es cridarà usuariftp1, ho faríem així:

mkdir -p /home/ftp/usuariftp1
chmod -R 777 /home/ftp/usuariftp1

Després creem l’usuari pròpiament dit:

sudo useradd -g ftp -d /home/ftp/usuariftp1 -c "FTP 1" usuariftp1

on el paràmetre -g ftp indica el grup al qual pertany l’usuari, el paràmetre -d /home/ftp/usuariftp1 indica la carpeta que té assignada, el paràmetre -c "FTP 1" és el nom de l’usuari, i finalment indiquem el login de l’usuari.

Finalment, creem la contrasenya de l’usuari:

sudo passwd usuariftp1

Connexió des del client

Per a connectar des del client a este servidor FTP, utilitzem el client FileZilla comentat anteriorment. En este cas, des del Gestor de llocs creem una nova connexió FTP, amb l’usuari virtual que hàgem afegit prèviament.

En connectar, veurem que estem restringits a la carpeta que s’ha assignat a este usuari.

Esta manera d’accedir i pujar arxius és més segura, al no poder alterar el contingut de carpetes externes a la indicada en la configuració. Podem emprar este mètode per a pujar arxius com a imatges, vídeos, etc.