Salta el contingut

MP08 - UF1: Servidors web i de transferència de fitxers

Servidor web - Apache i Nginx (i)

Apache HTTP Server és un servidor web de codi obert i multiplataforma. Va ser cerat el 1995. L'objectiu principal de l'Apache és proporcionar un servidor web segur, estable i flexible. Per exemple, Apache gestiona mòduls multiprocés per mantenir la mateixa connexió de diferents maneres. Brindant com a avantatge principal el fet que els administradors puguin aplicar criteris per a cada connexió.

Nginx és un servidor web de codi obert, multiplataforma, lleuger i d'alt rendiment. Va començar a existir el 2002. A nivell tècnic, un servidor Nginx utilitza una arquitectura de subprocés asíncron. Això vol dir que quan es genera una sol·licitud, no crea un nou procés al processador del servidor, augmentant així el rendiment del servidor.

Aquests dos servidors web són els més polulars i governen pràcticament tot el mercat de servidors web.

  • Apache és molt més popular

  • Nginx respon molt millor a les peticions dels clients. Va ser cerat per solucionar el problema C10k. No consumeix tanta memòria RAM.

  • Apache és un servidor molt més flexible ja que admet més de 60 mòduls diferents.

Inicialment treballarem amb la darrera versió LTS del sistema operatiu Ubuntu (Linux), basat en Debian.

Les primeres pràctiques les realitzarem en màquines servidor Ubuntu que trobarem disponibles a l'entorn IsardVDI. Recordeu que l'usuari de les màquines és isard i la clau és pirineus. Abans d'instal·lar qualsevol paquet cal actualitzar els repositoris amb la comanda apt-get update

La manera general d'instal·lar un paquet és mitjançant la comanda apt install <nom_paquet>

Abans d'instal·lar un paquet es pot consultar la versió disponible amb la comanda apt-cache policy <nom_paquet>

Per fer la instal·lació hem de ser root, per tant utilitzarem la comanda sudo al davant de cada comanda

sudo apt-cache policy apache2
apache2:
Instal·lat: (cap)
Candidat:   2.4.52-1ubuntu4.9
Taula de versions:
    2.4.52-1ubuntu4.9 500
        500 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
    2.4.52-1ubuntu4 500
        500 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
sudo apt-cache policy nginx
nginx:
Instal·lat: (cap)
Candidat:   1.18.0-6ubuntu14.4
Taula de versions:
    1.18.0-6ubuntu14.4 500
        500 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
    1.18.0-6ubuntu14.3 500
        500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
    1.18.0-6ubuntu14 500
        500 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

Instal·lació inicial

Per tant executarem les dues comandes una rere l'altra. Al install hi afegirem el paràmetre -y per tal que no ens demani confirmació de res.

sudo apt-get update && sudo apt install -y apache2
Sortida Possible
isard@apache-server:~$ sudo apt-get update && sudo apt install -y apache2
Bai:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Obj:2 http://gb.archive.ubuntu.com/ubuntu jammy InRelease
Bai:3 http://gb.archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Bai:4 http://gb.archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
Bai:5 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1.712 kB]
Bai:6 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [316 kB]
Bai:7 http://gb.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1.966 kB]
Bai:8 http://gb.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [335 kB]
Bai:9 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1.497 kB]
Bai:10 http://gb.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1.085 kB]
Bai:11 http://gb.archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [250 kB]
Bai:12 http://gb.archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [43,0 kB]
Bai:13 http://gb.archive.ubuntu.com/ubuntu jammy-updates/multiverse Translation-en [10,7 kB]
Bai:14 http://gb.archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [67,1 kB]
Bai:15 http://gb.archive.ubuntu.com/ubuntu jammy-backports/main Translation-en [11,0 kB]
Bai:16 http://gb.archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [27,2 kB]
Bai:17 http://gb.archive.ubuntu.com/ubuntu jammy-backports/universe Translation-en [16,3 kB]
Bai:18 http://security.ubuntu.com/ubuntu jammy-security/main Translation-en [257 kB]
Bai:19 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [1.910 kB]
Bai:20 http://security.ubuntu.com/ubuntu jammy-security/restricted Translation-en [324 kB]
Bai:21 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [856 kB]
Bai:22 http://security.ubuntu.com/ubuntu jammy-security/universe Translation-en [165 kB]
Bai:23 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [37,2 kB]
Bai:24 http://security.ubuntu.com/ubuntu jammy-security/multiverse Translation-en [7.588 B]
S'ha baixat 11,3 MB en 2s (6.523 kB/s)
S'està llegint la llista de paquets… Fet
S'està llegint la llista de paquets… Fet
S'està construint l'arbre de dependències… Fet
S'està llegint la informació de l'estat… Fet
El paquet següent s'ha instal·lat automàticament i ja no és necessari:
python3-debian
Empreu «sudo apt autoremove» per a suprimir-lo.
S'instal·laran els següents paquets extres:
apache2-bin apache2-data apache2-utils bzip2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
liblua5.3-0 mailcap mime-support ssl-cert
Paquets suggerits:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser bzip2-doc
S'instal·laran els paquets NOUS següents:
apache2 apache2-bin apache2-data apache2-utils bzip2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap liblua5.3-0 mailcap mime-support ssl-cert
0 actualitzats, 13 nous a instal·lar, 0 a suprimir i 84 no actualitzats.
S'ha d'obtenir 2.139 kB d'arxius.
Després d'aquesta operació s'utilitzaran 8.521 kB d'espai en disc addicional.
Bai:1 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libapr1 amd64 1.7.0-8ubuntu0.22.04.1 [108 kB]
Bai:2 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libaprutil1 amd64 1.6.1-5ubuntu4.22.04.2 [92,8 kB]
Bai:3 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libaprutil1-dbd-sqlite3 amd64 1.6.1-5ubuntu4.22.04.2 [11,3 kB]
Bai:4 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libaprutil1-ldap amd64 1.6.1-5ubuntu4.22.04.2 [9.170 B]
Bai:5 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 liblua5.3-0 amd64 5.3.6-1build1 [140 kB]
Bai:6 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 apache2-bin amd64 2.4.52-1ubuntu4.9 [1.347 kB]
Bai:7 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 apache2-data all 2.4.52-1ubuntu4.9 [165 kB]
Bai:8 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 apache2-utils amd64 2.4.52-1ubuntu4.9 [88,7 kB]
Bai:9 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 mailcap all 3.70+nmu1ubuntu1 [23,8 kB]
Bai:10 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 mime-support all 3.66 [3.696 B]
Bai:11 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 apache2 amd64 2.4.52-1ubuntu4.9 [97,9 kB]
Bai:12 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 bzip2 amd64 1.0.8-5build1 [34,8 kB]
Bai:13 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 ssl-cert all 1.1.2 [17,4 kB]
S'ha baixat 2.139 kB en 1s (3.955 kB/s)
S'estan preconfigurant els paquets...
S'està seleccionant el paquet libapr1:amd64 prèviament no seleccionat.
(S'està llegint la base de dades… hi ha 89380 fitxers i directoris instal·lats actualment.)
S'està preparant per a desempaquetar …/00-libapr1_1.7.0-8ubuntu0.22.04.1_amd64.deb…
S'està desempaquetant libapr1:amd64 (1.7.0-8ubuntu0.22.04.1)…
S'està seleccionant el paquet libaprutil1:amd64 prèviament no seleccionat.
S'està preparant per a desempaquetar …/01-libaprutil1_1.6.1-5ubuntu4.22.04.2_amd64.deb…
S'està desempaquetant libaprutil1:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està seleccionant el paquet libaprutil1-dbd-sqlite3:amd64 prèviament no seleccionat.
S'està preparant per a desempaquetar …/02-libaprutil1-dbd-sqlite3_1.6.1-5ubuntu4.22.04.2_amd64.deb…
S'està desempaquetant libaprutil1-dbd-sqlite3:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està seleccionant el paquet libaprutil1-ldap:amd64 prèviament no seleccionat.
S'està preparant per a desempaquetar …/03-libaprutil1-ldap_1.6.1-5ubuntu4.22.04.2_amd64.deb…
S'està desempaquetant libaprutil1-ldap:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està seleccionant el paquet liblua5.3-0:amd64 prèviament no seleccionat.
S'està preparant per a desempaquetar …/04-liblua5.3-0_5.3.6-1build1_amd64.deb…
S'està desempaquetant liblua5.3-0:amd64 (5.3.6-1build1)…
S'està seleccionant el paquet apache2-bin prèviament no seleccionat.
S'està preparant per a desempaquetar …/05-apache2-bin_2.4.52-1ubuntu4.9_amd64.deb…
S'està desempaquetant apache2-bin (2.4.52-1ubuntu4.9)…
S'està seleccionant el paquet apache2-data prèviament no seleccionat.
S'està preparant per a desempaquetar …/06-apache2-data_2.4.52-1ubuntu4.9_all.deb…
S'està desempaquetant apache2-data (2.4.52-1ubuntu4.9)…
S'està seleccionant el paquet apache2-utils prèviament no seleccionat.
S'està preparant per a desempaquetar …/07-apache2-utils_2.4.52-1ubuntu4.9_amd64.deb…
S'està desempaquetant apache2-utils (2.4.52-1ubuntu4.9)…
S'està seleccionant el paquet mailcap prèviament no seleccionat.
S'està preparant per a desempaquetar …/08-mailcap_3.70+nmu1ubuntu1_all.deb…
S'està desempaquetant mailcap (3.70+nmu1ubuntu1)…
S'està seleccionant el paquet mime-support prèviament no seleccionat.
S'està preparant per a desempaquetar …/09-mime-support_3.66_all.deb…
S'està desempaquetant mime-support (3.66)…
S'està seleccionant el paquet apache2 prèviament no seleccionat.
S'està preparant per a desempaquetar …/10-apache2_2.4.52-1ubuntu4.9_amd64.deb…
S'està desempaquetant apache2 (2.4.52-1ubuntu4.9)…
S'està seleccionant el paquet bzip2 prèviament no seleccionat.
S'està preparant per a desempaquetar …/11-bzip2_1.0.8-5build1_amd64.deb…
S'està desempaquetant bzip2 (1.0.8-5build1)…
S'està seleccionant el paquet ssl-cert prèviament no seleccionat.
S'està preparant per a desempaquetar …/12-ssl-cert_1.1.2_all.deb…
S'està desempaquetant ssl-cert (1.1.2)…
S'està configurant libapr1:amd64 (1.7.0-8ubuntu0.22.04.1)…
S'està configurant bzip2 (1.0.8-5build1)…
S'està configurant ssl-cert (1.1.2)…
S'està configurant liblua5.3-0:amd64 (5.3.6-1build1)…
S'està configurant apache2-data (2.4.52-1ubuntu4.9)…
S'està configurant mailcap (3.70+nmu1ubuntu1)…
S'està configurant libaprutil1:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està configurant mime-support (3.66)…
S'està configurant libaprutil1-ldap:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està configurant libaprutil1-dbd-sqlite3:amd64 (1.6.1-5ubuntu4.22.04.2)…
S'està configurant apache2-utils (2.4.52-1ubuntu4.9)…
S'està configurant apache2-bin (2.4.52-1ubuntu4.9)…
S'està configurant apache2 (2.4.52-1ubuntu4.9)…
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.service.
S'estan processant els activadors per a ufw (0.36.1-4ubuntu0.1)…
S'estan processant els activadors per a man-db (2.10.2-1)…
S'estan processant els activadors per a libc-bin (2.35-0ubuntu3.6)…
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
isard@apache-server:~$
sudo apt-get update && sudo apt install -y nginx
Sortida Possible
isard@nginx-server:~$ sudo apt-get update && sudo apt install -y nginx
Obj:1 http://gb.archive.ubuntu.com/ubuntu jammy InRelease
Bai:2 http://gb.archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Obj:3 http://gb.archive.ubuntu.com/ubuntu jammy-backports InRelease
Obj:4 http://security.ubuntu.com/ubuntu jammy-security InRelease
S'ha baixat 128 kB en 0s (406 kB/s)
S'està llegint la llista de paquets… Fet
S'està llegint la llista de paquets… Fet
S'està construint l'arbre de dependències… Fet
S'està llegint la informació de l'estat… Fet
El paquet següent s'ha instal·lat automàticament i ja no és necessari:
python3-debian
Empreu «sudo apt autoremove» per a suprimir-lo.
S'instal·laran els següents paquets extres:
libgd3 libnginx-mod-http-geoip2 libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter
libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip2 libxpm4 nginx-common nginx-core
Paquets suggerits:
libgd-tools fcgiwrap nginx-doc ssl-cert
S'instal·laran els paquets NOUS següents:
libgd3 libnginx-mod-http-geoip2 libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter
libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip2 libxpm4 nginx nginx-common nginx-core
0 actualitzats, 11 nous a instal·lar, 0 a suprimir i 84 no actualitzats.
S'ha d'obtenir 863 kB d'arxius.
Després d'aquesta operació s'utilitzaran 2.958 kB d'espai en disc addicional.
Bai:1 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libxpm4 amd64 1:3.5.12-1ubuntu0.22.04.2 [36,7 kB]
Bai:2 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 libgd3 amd64 2.3.0-2ubuntu2 [129 kB]
Bai:3 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 nginx-common all 1.18.0-6ubuntu14.4 [40,0 kB]
Bai:4 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-http-geoip2 amd64 1.18.0-6ubuntu14.4 [11,9 kB]
Bai:5 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-http-image-filter amd64 1.18.0-6ubuntu14.4 [15,4 kB]
Bai:6 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-http-xslt-filter amd64 1.18.0-6ubuntu14.4 [13,7 kB]
Bai:7 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-mail amd64 1.18.0-6ubuntu14.4 [45,7 kB]
Bai:8 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-stream amd64 1.18.0-6ubuntu14.4 [72,9 kB]
Bai:9 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libnginx-mod-stream-geoip2 amd64 1.18.0-6ubuntu14.4 [10,1 kB]
Bai:10 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 nginx-core amd64 1.18.0-6ubuntu14.4 [484 kB]
Bai:11 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 nginx amd64 1.18.0-6ubuntu14.4 [3.872 B]
S'ha baixat 863 kB en 3s (293 kB/s)
S'estan preconfigurant els paquets...
S'està seleccionant el paquet libxpm4:amd64 prèviament no seleccionat.
(S'està llegint la base de dades… hi ha 89380 fitxers i directoris instal·lats actualment.)
S'està preparant per a desempaquetar …/00-libxpm4_1%3a3.5.12-1ubuntu0.22.04.2_amd64.deb…
S'està desempaquetant libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2)…
S'està seleccionant el paquet libgd3:amd64 prèviament no seleccionat.
S'està preparant per a desempaquetar …/01-libgd3_2.3.0-2ubuntu2_amd64.deb…
S'està desempaquetant libgd3:amd64 (2.3.0-2ubuntu2)…
S'està seleccionant el paquet nginx-common prèviament no seleccionat.
S'està preparant per a desempaquetar …/02-nginx-common_1.18.0-6ubuntu14.4_all.deb…
S'està desempaquetant nginx-common (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-http-geoip2 prèviament no seleccionat.
S'està preparant per a desempaquetar …/03-libnginx-mod-http-geoip2_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-http-geoip2 (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-http-image-filter prèviament no seleccionat.
S'està preparant per a desempaquetar …/04-libnginx-mod-http-image-filter_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-http-image-filter (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-http-xslt-filter prèviament no seleccionat.
S'està preparant per a desempaquetar …/05-libnginx-mod-http-xslt-filter_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-http-xslt-filter (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-mail prèviament no seleccionat.
S'està preparant per a desempaquetar …/06-libnginx-mod-mail_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-mail (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-stream prèviament no seleccionat.
S'està preparant per a desempaquetar …/07-libnginx-mod-stream_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-stream (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet libnginx-mod-stream-geoip2 prèviament no seleccionat.
S'està preparant per a desempaquetar …/08-libnginx-mod-stream-geoip2_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant libnginx-mod-stream-geoip2 (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet nginx-core prèviament no seleccionat.
S'està preparant per a desempaquetar …/09-nginx-core_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant nginx-core (1.18.0-6ubuntu14.4)…
S'està seleccionant el paquet nginx prèviament no seleccionat.
S'està preparant per a desempaquetar …/10-nginx_1.18.0-6ubuntu14.4_amd64.deb…
S'està desempaquetant nginx (1.18.0-6ubuntu14.4)…
S'està configurant libxpm4:amd64 (1:3.5.12-1ubuntu0.22.04.2)…
S'està configurant nginx-common (1.18.0-6ubuntu14.4)…
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service  /lib/systemd/system/nginx.service.
S'està configurant libnginx-mod-http-xslt-filter (1.18.0-6ubuntu14.4)…
S'està configurant libgd3:amd64 (2.3.0-2ubuntu2)…
S'està configurant libnginx-mod-http-geoip2 (1.18.0-6ubuntu14.4)…
S'està configurant libnginx-mod-mail (1.18.0-6ubuntu14.4)…
S'està configurant libnginx-mod-http-image-filter (1.18.0-6ubuntu14.4)…
S'està configurant libnginx-mod-stream (1.18.0-6ubuntu14.4)…
S'està configurant libnginx-mod-stream-geoip2 (1.18.0-6ubuntu14.4)…
S'està configurant nginx-core (1.18.0-6ubuntu14.4)…
* Upgrading binary nginx                                                                            [ OK ]
S'està configurant nginx (1.18.0-6ubuntu14.4)…
S'estan processant els activadors per a ufw (0.36.1-4ubuntu0.1)…
S'estan processant els activadors per a man-db (2.10.2-1)…
S'estan processant els activadors per a libc-bin (2.35-0ubuntu3.6)…
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
isard@nginx-server:~$

Inici del servidor

Una vegada instal·lat el servidor apache ja podem iniciar el servei amb la comanda systemctl start apache2.service o service apache2 start i provar-ho accedint a http://ipDelServidor.cat/ o a http://localhost/.

Màquina real
sudo systemctl start apache2.service
Docker
service apache2 start
Màquina real
sudo systemctl start nginx.service
Docker
service nginx start

Si ens surt la pàgina per defecte,

En Docker la URL serà http://localhost/

Apache funcionant

Nginx funcionant

senyal que estem en bon camí.

Com un servei

Apache s'ha instal·lat com a un servei, per tant, es pot controlar el seu estat.

  • systemctl [start|stop|restart|reload|status] apache2.service

  • service apache2 <ordre>

    • start: per iniciar el servidor
    • stop: per aturar el servidor
    • restart: per reiniciar el servidor.
    • status: per saber-ne l'estat

Com un servei

Nginx s'ha instal·lat com a un servei, per tant, es pot controlar el seu estat.

  • systemctl [start|stop|restart|reload|status] nginx.service

  • service nginx <ordre>

    • start: per iniciar el servidor
    • stop: per aturar el servidor
    • restart: per reiniciar el servidor.
    • status: per saber-ne l'estat

Actualment caldria utilitzar l'eina systemctl, dins del sistema SystemD.

Com que systemctl no està disponible en els contenidors, utilitzarem service

Per a més informació: https://danielmiessler.com/study/the-difference-between-system-v-and-systemd/ i https://www.2daygeek.com/sysvinit-vs-systemd-cheatsheet-systemctl-command-usage/

Ja tenim el servidor funcionant però... és capaç d'executar comandes php?

Apache segueix una estructura modular en el qual es poden afegir nous moduls i així afegir o activar noves funcionalitats. Per exemple, el mòdul per poder treballar amb PHP.

Nginx necessita poder connectar-se amb el servei PHP-FPM que caldrà instal·lar prèviament. Apache també pot connectar-se amb aquest servei si el tenim instal·lat.

El servei PHP-FPM, a més, ens permet tenir més d'una versió de PHP instal·lada i utilitzar la que més ens convingui. Fins i tot podem configurar el servidor perquè utilitzi una o altra versió de php, segons el site o hosting virtual.

Control d'Apache i Nginx

Apache

Apache proporciona la seva pròpia eina de control

apache2ctl [ start|restart|graceful|graceful-stop|stop]

L'opció graceful és un reinici suau, on es deixen finalitzar les peticions que estan establertes i el servidor no es reinicia fins que aquestes acaben.

A part podem obtenir més informació:

  • apache2ctl -t : Comprova la sintaxi del fitxer de configuració.
  • apache2ctl -M : Llista els mòduls carregats.
  • apache2ctl -S : Llista els llocs/sites virtuals i les opcions de configuració.
  • apache2ctl -V : Llista les opcions de compilació.
Per tal que funcioni la comanda apache2ctl staus caldrà instal·lar lynx

sudo apt install lynx

Nginx

Una vegada hem iniciat el servidor nginx, tenim la comanda nginx per realitzar algunes tasques

nginx -h
nginx version: nginx/1.18.0 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version, compiler version, and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

Tant en Apache com en Nginx la opció -t és aconsellable executar-la abans de reiniciar un servei, per comprovar que no hi ha errors de sintaxis. Algunes vegades, caldrà utlitzar l'usuari root o la comanda sudo.

apache2ctl -t
nginx -t

Més comandes (algunes no estan disponibles en el contenidor)

Amb les comandes de sistema podem fer més checks

  • Des del client, amb un telnet al port 80, podem comprovar si el servidor web contesta. Fins i tot podriem fer-li alguna pregunta i veure'n la resposta:

    GET / HTTP/1.1
    Host: nomdelservidor.cat
    

    i rebrem quelcom semblant a

    HTTP/1.1 200 OK
    Date: DDD, DD MMM AAAA HH:MI:SS GMT
    Server: Apache/2.4.52 (Ubuntu)
    Last-Modified: DDD, DD MMM AAAA HH:MI:SS GMT
    ETag: "29af-61a85ab0a103c"
    Accept-Ranges: bytes
    Content-Length: 10671
    Vary: Accept-Encoding
    Content-Type: text/html
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                            <html xmlns="http://www.w3.or
    
    HTTP/1.1 200 OK
    Server: nginx/1.18.0 (Ubuntu)
    Date: DDD, DD MMM AAAA HH:MI:SS GMT
    Content-Type: text/html
    Content-Length: 612
    Last-Modified: DDD, DD MMM AAAA HH:MI:SS GMT
    Connection: keep-alive
    ETag: "6666c614-264"
    Accept-Ranges: bytes
    
    <!DOCTYPE html>
    <html>
        <head>
            <title>Welcome to nginx!</title>
            <style>
    
  • Al mateix servidor, amb la comanda sudo ss -l | grep http podem veure si el port està escoltant per rebre peticions. També ens mostra el nom i PID del procés

  • El podem buscar també amb la comanda ps awux i filtrant amb grep

    ps awux | grep -e apache -e nginx
    
  • El propietari del procés es l'usuari www-data

  • Així doncs, quan arriba una petició de client sota protocol HTTP, el procés Apache o Nginx la captura.

isard@ubuntu:~$ ps awux | grep -e apache -e nginx
root        1024  0.0  0.1   6768  4780 ?        Ss   12:33   0:00 /usr/sbin/apache2 -k start
www-data    1025  0.0  0.1 752984  4668 ?        Sl   12:33   0:00 /usr/sbin/apache2 -k start
www-data    1026  0.0  0.1 752984  4668 ?        Sl   12:33   0:00 /usr/sbin/apache2 -k start
isard       1114  0.0  0.0   6476  2268 pts/0    S+   12:39   0:00 grep --color=auto apache
ps awux | grep -e apache -e nginx
root         773  0.0  0.0  55232  1688 ?        Ss   12:38   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data     774  0.0  0.0  55880  5608 ?        S    12:38   0:00 nginx: worker process
www-data     775  0.0  0.0  55880  5608 ?        S    12:38   0:00 nginx: worker process
www-data     776  0.0  0.0  55880  5608 ?        S    12:38   0:00 nginx: worker process
www-data     777  0.0  0.0  55880  5608 ?        S    12:38   0:00 nginx: worker process
isard       1159  0.0  0.0   6480  2420 pts/0    S+   13:05   0:00 grep --color=auto -e apache -e nginx