1. Instal·lació del servidor HTTP Apache
Instal·lem el servidor amb la comanda apt-get:
root@server:~# apt install apache2
S'està llegint la llista de paquets… Fet
S'està construint l'arbre de dependències
S'està llegint la informació de l'estat… Fet
El paquets següents s'han instal·lat automàticament i ja no serà necessaris:
python-dbus python-gi python-wicd rfkill wicd-daemon wicd-gtk wireless-tools
Empreu «apt autoremove» per a suprimir-los.
S'instal·laran els següents paquets extres:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
Paquets suggerits:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom
S'instal·laran els paquets NOUS següents:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
0 actualitzats, 8 nous a instal·lar, 0 a suprimir i 164 no actualitzats.
S'ha d'obtenir 2189 kB d'arxius.
Després d'aquesta operació s'empraran 7567 kB d'espai en disc addicional.
Voleu continuar? [S/n]
Podem obtenir una informació detallada del programari Apache instal·lat (versió, arquitectura, dependències, etc.) amb la comanda dpkg:
root@server:~# dpkg -s apache2
Package: apache2
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 599
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Architecture: amd64
Version: 2.4.38-3+deb10u3
Replaces: apache2.2-bin, apache2.2-common, libapache2-mod-proxy-uwsgi (<< 2.4.33)
Provides: httpd, httpd-cgi
Depends: apache2-bin (= 2.4.38-3+deb10u3), apache2-data (= 2.4.38-3+deb10u3), apache2-utils (= 2.4.38-3+deb10u3), lsb-base, mime-support, perl:any, procps
Pre-Depends: dpkg (>= 1.17.14)
Recommends: ssl-cert
Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser
Breaks: libapache2-mod-proxy-uwsgi (<< 2.4.33)
Conflicts: apache2.2-bin, apache2.2-common
Conffiles:
/etc/apache2/apache2.conf 20589b50379161ebc8cb35f761af2646
...
2. Components
Podem classificar els components en 3 categories:
Fitxers executables
Fitxers de configuració
Fitxers de documentació
A través del paquet de la instal·lació podem observar quins són els fitxers executables, de configuració i de documentació, simplement aplicant algun filtre:
root@server:~# dpkg -L apache2 | grep bin/
/usr/sbin/a2enmod
/usr/sbin/a2query
/usr/sbin/apache2ctl
/usr/sbin/a2disconf
/usr/sbin/a2dismod
/usr/sbin/a2dissite
/usr/sbin/a2enconf
/usr/sbin/a2ensite
/usr/sbin/apachectl
root@server:~#
Podem incloure també els scripts:
root@server:~# dpkg -L apache2 | grep init.d/
/etc/init.d/apache-htcacheclean
/etc/init.d/apache2
root@server:~#
root@server:~# dpkg -L apache2 | grep etc/apache2
/etc/apache2
/etc/apache2/apache2.conf
/etc/apache2/conf-available
/etc/apache2/conf-available/charset.conf
/etc/apache2/conf-available/localized-error-pages.conf
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/conf-enabled
/etc/apache2/envvars
/etc/apache2/magic
/etc/apache2/mods-available
/etc/apache2/mods-available/access_compat.load
/etc/apache2/mods-available/actions.conf
/etc/apache2/mods-available/actions.load
/etc/apache2/mods-available/alias.conf
...
root@server:~# dpkg -L apache2 | grep share/
/usr/share/apache2
/usr/share/apache2/apache2-maintscript-helper
/usr/share/apache2/ask-for-passphrase
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/a2enmod
/usr/share/bug
/usr/share/bug/apache2
/usr/share/doc
/usr/share/doc/apache2
/usr/share/doc/apache2/NEWS.Debian.gz
/usr/share/doc/apache2/PACKAGING.gz
/usr/share/doc/apache2/README.Debian.gz
/usr/share/doc/apache2/README.backtrace
/usr/share/doc/apache2/README.multiple-instances
/usr/share/doc/apache2/changelog.Debian.gz
/usr/share/doc/apache2/changelog.gz
/usr/share/doc/apache2/copyright
/usr/share/doc/apache2/examples
/usr/share/doc/apache2/examples/apache2.monit
/usr/share/doc/apache2/examples/secondary-init-script
/usr/share/doc/apache2/examples/setup-instance
...
Els directoris importants de la instal·lació són:
Directori dels fitxers de configuració: /etc/apache2/.
Directori de publicació de les pàgines web: /var/www/html/.
Directori del registre de logs: /var/log/apache2/.
3. Estat del servei
Per saber l’estat del servei i quines opcions tenim:
root@server:~# /etc/init.d/apache2
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}
root@server:~#
Les accions més bàsiques que es poden fer són:
start: inicia el servei.
stop: atura el servei.
reload: recarrega els fitxers de configuració.
restart: reinicia el servei.
status: mostra l’estat del servei.
Per al correcte funcionament del servidor hem de comprovar que el servei està actiu i executant-se (running):
root@server:~# /etc/init.d/apache2 status
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-09-07 21:29:24 CEST; 14min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2349 (apache2)
Tasks: 55 (limit: 1138)
Memory: 8.8M
CGroup: /system.slice/apache2.service
├─2349 /usr/sbin/apache2 -k start
├─2351 /usr/sbin/apache2 -k start
└─2352 /usr/sbin/apache2 -k start
de set. 07 21:29:24 server.ioc.cat systemd[1]: Starting The Apache HTTP Server...
de set. 07 21:29:24 server.ioc.cat apachectl[2338]: AH00558: apache2: Could not reliably determine the server's fully qu…message
de set. 07 21:29:24 server.ioc.cat systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
root@server:~#
4. Monitorització
Els fitxers de monitorització dels serveis bàsics es troben usualment en el directori /var/log. Algun programari, com és el cas, opta per crear una carpeta dins d’aquesta estructura i així, els fitxers de log estan a /var/log/apache2.
root@server:~# ls /var/log/apache2
access.log error.log other_vhosts_access.log
root@server:~#
El servidor Apache manté diversos fils (threads) per poder atendre millor a les diferents peticions de pàgines web de forma independent. Hi ha un procés principal, que s’especifica quan comprovem l’estat del servei. Per poder veure la resta de processos associats i l’usuari que els executa:
root@server:~# ps uax | grep apache2
root 2349 0.0 0.4 8428 4328 ? Ss 21:29 0:00 /usr/sbin/apache2 -k start
www-data 2351 0.0 0.6 754604 6080 ? Sl 21:29 0:00 /usr/sbin/apache2 -k start
www-data 2352 0.0 0.6 754604 6080 ? Sl 21:29 0:00 /usr/sbin/apache2 -k start
root 3128 0.0 0.0 6092 892 pts/0 S+ 21:54 0:00 grep apache2
root@server:~#
Si es vol veure el nombre complet de processos associats al servei i en forma d’arbre (dependència entre ells), es pot fer amb la comanda pstree:
root@server:~# pstree -p | grep apache2
|-apache2(2349)-+-apache2(2351)-+-{apache2}(2382)
| | |-{apache2}(2383)
| | |-{apache2}(2384)
| | |-{apache2}(2385)
| | |-{apache2}(2386)
| | |-{apache2}(2387)
| | |-{apache2}(2388)
...
5. Configuració de la pàgina web principal
Per tal de configurar la pàgina principal del servidor Apache cal crea un fitxer anomenat index.html (de fet, ja existeix un per defecte) a la carpeta /var/www/html/. Per exemple amb el següent codi HTML:
<html>
<head>
<title>Pàgina principal</title>
</head>
<body>
<h1>Pàgina principal</h1>
<p>Servidor Apache</p>
</body>
</html>
La pàgina web principal es pot comprovar fàcilment amb un navegador des del mateix servidor introduint-li la següent URL:
http://localhost
6. Comprovació del funcionament del servidor amb la comanda telnet
Amb la petició GET es pot observar com s’obté la pàgina demanada.
root@server:~# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /index.html HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 08 Sep 2020 04:48:29 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Mon, 07 Sep 2020 20:01:44 GMT
ETag: "a8-5aebeb015df61"
Accept-Ranges: bytes
Content-Length: 168
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
<html>
<head>
<title>Pàgina principal</title>
</head>
<body>
<h1>Pàgina principal</h1>
<p>Servidor Apache</p>
</body>
</html>
Connection closed by foreign host.
root@server:~#