Un servidor HTTP o Servidor Web, és un programa informàtic que processa una aplicació del costat del servidor, realitzant connexions bidireccionals i/o unidireccionals i síncrones o asíncrones amb el client, generant o cedint una resposta en qualsevol llenguatge o aplicació del costat del client.
El codi rebut pel client sol ser compilat i executat per un navegador web. Per a la transmissió de totes aquestes dades sol utilitzar-se algun protocol. Generalment s'utilitza el protocol HTTP per aquestes comunicacions, pertanyent a la capa d'aplicació del model OSI. El terme també s'empra per a referir-se a l'ordinador que executa el programa.
El servidor web que estem muntant allotjarà els nostres llocs web i estarà preparat per a servir-los a l'exterior. Aquest servidor Web estarà preparat per a servir un lloc web o els que vulguem, ja que muntarem un servidor multidomini al qual podran apuntar subdominis gratuïts com poden ser els de No-Ip o els de DynDNS, o dominis de pagament com són els: .cat, .com, .net, .org, .es, etc.
El que instal·larem i configurarem és un servidor web tipus LAMP, es a dir Linux + Apatxe + MySQL + PHP, en el que podrem muntar qualsevol pàgina web o blog del tipus: Joomla, WordPress, o Drupal.
LAMP stack o Pila LAMP
Una pila "LAMP" és un grup de programari de codi obert que generalment s'uneixen per permetre que un servidor allotge llocs web dinàmics i aplicacions web. Aquest terme és en realitat un acrònim que representa el sistema operatiu Linux, amb el Servidor Web Apache, les dades del lloc s'emmagatzemen en una base de dades MariaDB i el contingut dinàmic és processat per PHP.
El terme LAMP és un acrònim que s'origina a finals del 2000 a Alemanya per descriure la plataforma, sobre la qual funcionen les aplicacions web creades utilitzant la següent combinació d'eines:
- Linux, el sistema operatiu.
- Apache, el servidor web.
- MySQL, el servidor de bases de dades.
- PHP, el llenguatge de programació.
L'altra opció que sovint apareix en la publicitat dels proveïdors d'hospedatge web és WAMP, que és la plataforma equivalent a Windows. En aquesta guia, instal·larem una pila LAMP en un servidor sot a Debian 9.
Instal·lar Apache i actualitzar el tallafoc
Instal·lar Apache
Apache és el servidor web més popular, mentre que Nginx és més nou. A partir del 2018, Apache s'utilitza en el 47% dels servidors web i Nginx no queda molt enrere amb un 37%. Pot ser que en 2020, si continuen les tendències, Nginx siga el més popular. El servidor web Apache es troba entre els servidors web més populars del món. Està ben documentat i ha estat àmpliament utilitzat en gran part de la història web, la qual cosa el converteix en una gran opció predeterminada per allotjar un lloc web.
Instal·leu el Servior Apache amb el gestor de paquets apt de Debian (amb privilegis de superusuari):
apt update
apt install apache2
Si no esteu en el compte d'usuari root i esteu fet ús de sudo :
sudo apt update
sudo apt install apache2
Aquestes operacions s'executen amb privilegis de root. Us demanarà la vostra contrasenya d'usuari habitual per verificar les vostres intencions. Una vegada hàgeu introduït la vostra contrasenya, apt us indicarà quins paquets planeja instal·lar i quina quantitat d'espai al disc dur tindran. Premeu Y i premeu ENTER per continuar, i la instal·lació continuarà.
Actualitzar el Fireway
A continuació, suposant que heu seguit les instruccions inicials de configuració del servidor instal·lant i habilitant el tallafoc (fireway) UFW, assegureu-vos que el tallafoc permet el trànsit HTTP i HTTPS.
Quan estiga instal·lat en Debian 9, UFW ve carregat amb perfils d'aplicacions que podeu utilitzar per ajustar la vostra configuració del tallafoc. Consulteu la llista completa dels perfils d'aplicacions executant:
ufw app list
Sortida:
Available applications:
. . . . . .
WWW
WWW Cache
WWW Full
WWW Secure
. . . . . .
Els perfils WWW s'utilitzen per gestionar els ports utilitzats pels servidors web
Si inspeccioneu el perfil "WWW Full", mostrara que habilitara el trànsit als ports 80 i 443:
root@server-angles:~# ufw app info "WWW Full"
Profile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
Ports:
80,443/tcp
root@server-angles:~#
Si inspeccioneu el perfil WWW, mostrara que habilitara el trànsit sols al ports 80:
root@server-angles:~# ufw app info WWW
Profile: WWW
Title: Web Server
Description: Web server
Port:
80/tcp
root@server-angles:~#
Permet el trànsit HTTP i HTTPS entrants per a aquest perfil (recorda segons el teu cas, sempre com a root o fet ús de sudo):
sudo ufw allow in “WWW Full”
Si heu configurat el dimoni HTTP per utilitzar un port diferent, haurà d'especificar el port apropiat. Per exemple, si el seu servidor HTTP està escoltant pel port 8080, pot utilitzar aquesta ordre per permetre connexions en aquest port i amb el protocol TCP:
root@server-angles:~# ufw allow 8080/tcp
Rule added
Rule added (v6)
root@server-angles:~#
Podeu fer una verificació immediata per verificar que tot ha sortit segons el planificat, si visitava l'adreça IP pública del servidor al vostre navegador web:
http://ip_servidor
Veureu la pàgina web predeterminada de l'Apache en Debian 9, Apache2 Debian Default Page, que hi ha per a fins informatius i de prova. Si veieu aquesta pàgina, el vostre servidor web està instal·lat correctament i es pot accedir a través del fireway.
Si no sabeu quina és l'adreça IP pública del vostre servidor, hi ha diverses maneres de trobar-la. En general, aquesta és l'adreça que utilitzeu per connectar-se al vostre servidor a través de SSH.
Hi han diferents maneres de fer-ho des de la línia d'ordres. En primer lloc, podeu utilitzar les eines iproute2 per obtenir la vostra adreça IP escrivint açò:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
On eth0 és la interfície de xarxa que en aquest cas és enp2s0, però normalment serà eno1.
La següent ordre ens donarà la configuració actual del nostre router, teclegem ip route show o ip route :
root@server-angles:~# ip route show
default via 192.168.1.2 dev enp2s0 onlink
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.6
Canviem eth0 per enp2s0, això us retornarà dues o tres línies. Totes són adreces correctes, però l'equip només pot utilitzar una d'elles, així que no dubteu a provar-ne una.:
root@server-angles:~# ip addr show enp2s0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
192.168.1.6
fe80::92e6:baff:fe77:6a09
Un mètode alternatiu és utilitzar la utilitat curl per contactar amb una part externa per dir-li com veu el vostre servidor. Això es fa demanant a un servidor específic quina és la vostra adreça IP:
sudo apt install curl
curl http://icanhazip.com
Independentment del mètode que utilitzeu per obtindre la vostra adreça IP, escriviu-lo a la barra d'adreces del vostre navegador web per veure la pàgina d'Apache predeterminada.
Instal·lació de MariaDB
Ara que teniu instal·lat el vostre servidor web, és hora d'instal·lar MariaDB. MariaDB és un sistema de gestió de bases de dades. Bàsicament organitzarà i proporcionarà accés a bases de dades on el vostre lloc pot emmagatzemar informació. MySQL és un sistema de gestió de bases de dades relacional (en anglès RDBMS - Relational DataBase Management System) multi fil (multithread) i multiusuari, que usa el llenguatge SQL (Structured Query Language).
Es pot fer ús de MySQL en aplicacions de tota mena (web, d'escriptori o d'altres), de forma lliure i gratuïta sota les condicions de la llicència GPL. Si es vol integrar MySQL com a part d'un producte privatiu cal adquirir una llicència d'ús específica per a aquest propòsit.
MariaDB és una forquilla comunitària de MySQL. A Debian 9, el servidor MySQL predeterminat és MariaDB 10.1, i el paquet mysql-server, que normalment s'utilitza per instal·lar MySQL, és un paquet de transició que realment instal·larà MariaDB. No obstant això, es recomana que instal·leu MariaDB amb el paquet real del programa mariadb-server.
De nou, utilitzeu apt per adquirir i instal·lar aquest programari:
apt install mariadb-server
Aquesta ordre també us mostrarà una llista dels paquets que s'instal·laran, juntament amb la quantitat d'espai al disc que ocuparan. Introduïu S per continuar. Quan s'haja completat la instal·lació, executeu un script de seguretat senzill que s'instal·larà amb MariaDB, que eliminarà alguns valors predeterminats insegurs i bloquejarà l'accés al vostre sistema de bases de dades. Comenceu el script interactiu executant:
mysql_secure_installation
Això us durà a terme una sèrie d'indicacions en què podeu fer alguns canvis a les opcions de seguretat de la instal·lació de MariaDB.
El primer missatge us demanarà que introduïu la contrasenya d'usuari de la base de dades actual. Aquest és un compte administratiu a MariaDB que ha augmentat els privilegis. Penseu que és similar al compte root del servidor (encara que el que esteu configurant ara és un compte específic de MariaDB). Com que acaba d'instal·lar MariaDB i encara no heu realitzat cap canvi de configuració, aquesta contrasenya estarà en blanc, així que només cal que pressione ENTER a l'indicatiu:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
El següent prompt us preguntarà si voleu configurar una contrasenya root de la base de dades. Escriviu n i, a continuació, premeu ENTER. En Debian, el compte de root de MariaDB està lligat estretament al manteniment automatitzat del sistema, de manera que no hem de canviar els mètodes d'autenticació configurats per a aquest compte. Si ho fa, és possible que una actualització del paquet trenque el sistema de bases de dades eliminant l'accés al compte administratiu. Més endavant veurem com configurar un compte administratiu addicional per obtenir accés a la contrasenya si l'autenticació del socket no és apropiada per al vostre cas d'ús:
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] n
Des d'aquí podeu pressionar Y i després ENTER per acceptar els paràmetres per defecte per a totes les preguntes subsegüents. Això eliminarà alguns usuaris anònims i la base de dades de prova, deshabilitarà els inicis de sessió de root remots i carregarà aquestes noves regles perquè MariaDB respecte immediatament els canvis realitzats:
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
En instal·lacions noves de sistemes Debian, l'usuari root de MariaDB està configurat per autenticar-se utilitzant el connector unix_socket per defecte en comptes amb una contrasenya. Això permet una major seguretat i usabilitat en molts casos, també pot complicar les coses quan necessiteu permetre un dret administratiu de programes externs (per exemple, phpMyAdmin).
Degut que el servidor utilitza el compte de root en tasques com ara la rotació de registre i el començament i la detenció del servidor, és millor no canviar els detalls d'autenticació del compte de root. Canviar les credencials del compte al /etc/mysql/debian.cnf pot funcionar inicialment, però les actualitzacions del paquet podrien sobreescriure aquests canvis. En lloc de modificar el compte root, els mantenidors del paquet recomanen crear un compte administratiu independent si necessiteu configurar l'accés basat en contrasenyes.
Per a això, crearem un nou compte anomenat roigdb amb les mateixes capacitats que el compte root, però configurat per l'autenticació amb contrasenya. Per fer-ho, obriu l'indicador MariaDB des del vostre terminal amb l'ordre mariadb:
root@server-angles:~# mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.1.37-MariaDB-0+deb9u1 Debian 9.6
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Ara, podem crear un nou usuari amb privilegis de root i accés basat en contrasenyes. Canvieu el nom d'usuari i la contrasenya per fer coincidir amb les vostres preferències:
GRANT ALL ON *.* TO 'nou_usuari'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
# Per eixample:
MariaDB [(none)]> GRANT ALL ON *.* TO 'roigdb'@'localhost' IDENTIFIED BY 'nou_password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
Descarregueu els privilegis per assegurar-se que estiguen guardats i disponibles en la sessió actual:
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
A continuació, sortiu de l'intèrpret de MariaDB:
MariaDB [(none)]> exit
Bye
Ara, en qualsevol moment que vulgueu accedir a la vostra base de dades amb el nou usuari administratiu, haureu d'autenticar-se com aquest usuari i amb la contrasenya que acabeu d'establir, amb l'ordre següent:
mariadb -u nou_usuari -p
# Per eixample:
root@server-angles:~# mariadb -u roigdb -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.37-MariaDB-0+deb9u1 Debian 9.6
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
En aquest punt, el vostre sistema de bases de dades està configurat i podeu continuar instal·lant PHP, el component final de la pila de LAMP.
Instal·lació del PHP
PHP és el component de configuració que processarà el codi per mostrar contingut dinàmic. Pot executar scripts, connectar-se a les bases de dades de MariaDB per obtenir informació i lliurar el contingut processat al servidor web per mostrar-lo. Una vegada més, aprofiteu el sistema apt per a instal·lar PHP. A més, incloeu alguns paquets d'ajuda, aquesta vegada perquè el codi PHP es puga executar sota el servidor Apache i comunicar-se amb la vostra base de dades MariaDB:
root@server-angles:~# apt install php libapache2-mod-php php-mysql
Això hauria d'instal·lar PHP sense cap problema. Ho provarem en un moment.
En la majoria dels casos, voldreu modificar la forma en què Apache serveix els fitxers quan es demana un directori. Actualment, si un usuari sol·licita un directori del servidor, Apache buscarà en primer lloc un fitxer anomenat index.html. Volem dir al servidor web que preferisca els fitxers PHP sobre altres, per fer-ho, escriviu aquesta ordre per obrir el fitxer dir.conf en un editor de text amb privilegis de root:
root@server-angles:~# nano -w /etc/apache2/mods-enabled/dir.conf
Sortida:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Mou el fitxer index.php (ressaltat anteriorment), a la primera posició després de l'especificació DirectoryIndex, d'aquesta manera:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Quan hàgeu acabat, deseu i tanqueu el fitxer prement CTRL+X , confirmeu amb S i a continuació, premeu ENTER per verificar la ubicació guardada del fitxer.
Després d'això, reinicieu el servidor web Apache per tal que es reconeguen els canvis, escrivint açò:
root@server-angles:~# systemctl restart apache2
També podeu consultar l'estat del servei apache2 usant systemctl:
root@server-angles:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-01-18 16:33:40 CET; 21s ago
Process: 9596 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 9602 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 9607 (apache2)
Tasks: 6 (limit: 4915)
CGroup: /system.slice/apache2.service
├─9607 /usr/sbin/apache2 -k start
├─9608 /usr/sbin/apache2 -k start
├─9609 /usr/sbin/apache2 -k start
├─9610 /usr/sbin/apache2 -k start
├─9611 /usr/sbin/apache2 -k start
└─9612 /usr/sbin/apache2 -k start
ene 18 16:33:40 server-angles systemd[1]: Starting The Apache HTTP Server...
ene 18 16:33:40 server-angles systemd[1]: Started The Apache HTTP Server.
Per millorar la funcionalitat de PHP, teniu l'opció d'instal·lar alguns mòduls addicionals. Per veure les opcions disponibles per als mòduls i biblioteques PHP, canalitzeu els resultats de la cerca a un menys, un paginador que us permetrà desplaçar-vos per la sortida d'altres ordres:
root@server-angles:~# apt search php- | less
Utilitzeu les tecles de fletxa per desplaçar-vos amunt i avall i premeu Q per sortir. Els resultats són tots els components opcionals que podeu instal·lar. Us donarà una breu descripció per a cadascun:
Sortida:
Sorting...
Full Text Search...
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/stable 2.2.9-1+b1 amd64
advanced Gtk+ text editor for web and software development
cacti/stable 0.8.8h+ds1-10 all
web interface for graphing of monitoring systems
cakephp-scripts/stable 2.8.5-1 all
rapid application development framework for PHP (scripts)
ganglia-webfrontend/stable 3.6.1-3 all
cluster monitoring toolkit - web front-end
haserl/stable 0.9.35-2+b1 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/stable 5.0.3-1 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/stable 5.0.3-1 all
transitional package for kdevelop-php-l10n
…
:
Per obtenir més informació sobre el que fa cada mòdul, podeu cercar a Internet. Alternativament, consulteu la descripció llarga del paquet escrivint:
Hi haurà molts resultats, amb un camp anomenat Description que tindrà una explicació més llarga de la funcionalitat que proporciona el mòdul. Per exemple, per saber què fa el mòdul php-cli podeu escriure açò:
apt show php-cli
Juntament amb una gran quantitat d'informació addicional, trobareu alguna cosa que tinga aquest aspecte:
…
Description: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian's default
PHP version (currently 7.0).
…
Si, després d'investigar, decidiu que voleu instal·lar un paquet, podeu fer-ho utilitzant l'ordre apt install, Si heu decidit que php-cli és alguna cosa que necessiteu, podeu escriure:
sudo apt install php-cli
En aquest punt, la vostra pila de LAMP està instal·lada i configurada. Tanmateix, abans de fer més canvis o implementar una aplicació, seria útil provar la configuració de PHP per si de cas hi haja algun problema que calga solucionar.
Provar el processament del PHP al servidor web
Per provar que el sistema estiga configurat correctament per al PHP, creeu un script PHP molt bàsic anomenat info.php. Per tal que Apache trobe aquest fitxer i el servisca correctament, s'ha de desar en un directori específic anomenat arrel web. En Debian 9, aquest directori es troba a /var/www/html/. Creeu el fitxer en aquesta ubicació executant:
root@server-angles:~# nano -w /var/www/html/info.php
Açò obrirà un fitxer en blanc. Afegiu el codi PHP següent, dins del fitxer:
<?php
phpinfo();
?>
Ara podeu provar si el vostre servidor web és capaç de mostrar correctament el contingut generat per aquest script PHP. Per provar-ho, visiteu aquesta pàgina al vostre navegador web. Necessitaràs de nou l'adreça IP pública del servidor. L'adreça que voleu visitar és:
http://ip_servidor/info.php
Aquesta pàgina proporciona informació bàsica sobre el vostre servidor des de la perspectiva de PHP. És útil per la depuració i per garantir que la vostra configuració s'aplique correctament. Si podeu veure aquesta pàgina al vostre navegador, el vostre PHP funcionarà com s'esperava.
És probable que vulgueu eliminar aquest fitxer després d'aquesta prova, ja que en realitat podria proporcionar informació sobre el vostre servidor a usuaris no autoritzats. Per fer-ho, executeu la següent ordre:
rm /var/www/html/info.php
Sempre podeu tornar a crear aquesta pàgina si necessiteu tornar a accedir a la informació més endavant.
Ara que teniu instal·lada la pila LAMP, teniu moltes opcions per fer el següent. Bàsicament, heu instal·lat una plataforma que us permetrà instal·lar la majoria de tota mena de llocs web i programari web al vostre servidor.
Fonts:

Torna a la portada