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ó.
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:
En primer lloc, hem de comptar amb alguna ubicació pública (accessible des de qualsevol lloc) on instal·lar el servidor i la(s) web(s). Depenent de les característiques del projecte en si, i de les possibilitats econòmiques de l’empresa, existixen diverses opcions, que veurem a continuació.
En segon lloc, hem de disposar d’algun mecanisme per a enviar i descarregar informació d’eixa ubicació, com per exemple una connexió SSH i/o una connexió FTP. D’esta manera, podrem, entre altres coses, pujar el contingut de la web a l’allotjament, o els canvis que anem realitzant en un futur, i per SSH instal·lar el programari que necessitem (servidors web, SGBD, FTP, etc.)
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.
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.
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.
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.
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.
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).
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:
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.
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.
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.
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:
git
, si no ho hem fet ja:sudo apt install git
git config --global user.email el_teu_email@domini.com
git config --global user.name el_teu_nick_en_github
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ó.
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:
git init
en la terminal.git add
en el terminal.git commit -m "missatge"
en el terminal.git remalnom add origin URL_DE EL_REPOSITORI
, ja que esta operació específica no té una interfície directa en VS Code.git push
, enviant els teus canvis locals a la branca remota que acabes de crear.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:
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.
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:
listen=YES
. Si esta línia està configurada com NO, el servidor no s’iniciarà automàticament amb el sistema en arrancar. Si ho posem a YES, sí que ho farà, però en este cas, hem de deixar comentada esta altra línia perquè no hi haja conflicte:. #listen_ipv6=YES
anonymous_enable=NO
. Esta opció convé deixar-la així, i sense comentar, per a evitar un accés anònim (sense compte d’usuari) al FTPlocal_enable=YES
i write_enable=YES
. Estes dos línies permeten que els usuaris locals del sistema puguen accedir amb el seu compte al servidor FTP, i modificar l’estructura de carpetes i arxius de manera remota, respectivament. Podem deixar les línies així, sense comentar, i després restringir a cada usuari a la seua carpeta perquè no altere el sistema d’arxius general.pam_service_name=vsftpd
. Esta opció establix el servici que s’utilitzarà per a autenticar als usuaris. En el nostre cas no dependrà de vsftpd, ja que són usuaris locals. Podem canviar-ho per això: pam_service_name=ftp
chroot_local_user=YES
. Esta opció limita l’accés dels usuaris a la seua carpeta d’inici, no podent accedir a la resta del sistema. És una opció recomanable per a evitar problemes d’alteració d’arxius i carpetes no desitjats. En cas de posar-la, també convé afegir esta altra, perquè després en connectar al servidor ens deixe modificar la carpeta i els seus continguts (en cas contrari pot donar error en connectar): allow_writeable_chroot=YES
. Existixen altres opcions relacionades amb esta, que permeten tindre una llista d’usuaris que sí que poden accedir a tot el sistema, però en general no és bona idea fer això. L’usuari root sempre pot accedir per SSH a tot el sistema, i la resta no té per què fer-lo. Així que ens hem d’assegurar que estes dos línies estiguen comentades perquè no tinguen efecte: #chroot_list_enable=YES
i
#chroot_list_file= (un nom d'arxiu)
.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.