MP08 - UF1: Servidors web i de transferència de fitxers
Instal·lació de mòduls en Apache i Nginx (iv)
Recordeu que Apache segueix una estructura modular en el qual es poden afegir nous mòduls i així afegir o activar noves funcionalitats.
Un exemple clar és, el mòdul per poder treballar amb PHP.
Podríem no instal·lar el mòdul i utilitzar un servei de php, però de moment ho farem així
Cal que el sistema pugui interpretar el PHP i el mòdul ho lligui amb l'Apache. Si instal·leu el mòdul, per dependències ja us instal·larà el motor base de PHP. Arribats a aquest punt, toca investigar una mica i que activeu i desactiveu el mòdul de PHP vosaltres mateixos.
Per comprovar la versió que m'instal·larà podem utilitzar la comanda, semblant a la instal·lació del servidor Apache2 apt-cache policy libapache2-mod-php
.
Instal·la i habilita el mòdul libapache2-mod-php
.
El que fa el mòdul és passar pel motor de PHP (a través d'un handler) tots aquells fitxers amb extensió .php
(i phps
, phtml
, phar
).
El PHP també té fitxers de configuració per definir certs paràmetres. Caldrà que reviseu la part específica dels fitxers de /etc/php/versió/apache2/
si necessiteu alguna cosa especial o hi ha algun problema. En el nostre cas /etc/php/8.1/apache2
.
Per fer un test ràpid el millor és utilitzar la comanda phpinfo();
dins un fitxer d'extensió php
.
Habilitem el PHP de backend
Recordeu que Apache segueix una estructura modular en el qual es poden afegir nous mòduls i així afegir o activar noves funcionalitats.
Si decidim accedir a fitxers php que tinguem al directori /var/www/html
, el servidor apache, encara no sap que ha d'interpretar el llenguatge php. Afegiu el fitxer info.php al directori /var/www/html
i accedim a http://ipDelServidor.cat/info.php.
Instal·larem el llenguatge PHP i el mòdul de PHP per apache i habilitarem el mòdul per poder treballar amb PHP.
apt install -y php libapache2-mod-php
i la sortida semblant a...
#apt install -y php libapache2-mod-php
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:
libapache2-mod-php8.3 php8.3 php8.3-cli php8.3-common php8.3-opcache php8.3-readline
Paquets suggerits:
php-pear
S'instal·laran els paquets NOUS següents:
libapache2-mod-php libapache2-mod-php8.3 php php8.3 php8.3-cli php8.3-common php8.3-opcache php8.3-readline
0 actualitzats, 8 nous a instal·lar, 0 a suprimir i 43 no actualitzats.
S'ha d'obtenir 4.975 kB d'arxius.
Després d'aquesta operació s'utilitzaran 22,3 MB d'espai en disc addicional.
Voleu continuar? [S/n]
Bai:1 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.3-common amd64 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [760 kB]
Bai:2 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.3-opcache amd64 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [372 kB]
Bai:3 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.3-readline amd64 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [13,5 kB]
Bai:4 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.3-cli amd64 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [1.924 kB]
Bai:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 libapache2-mod-php8.3 amd64 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [1.858 kB]
Bai:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 libapache2-mod-php all 2:8.3+94+ubuntu22.04.1+deb.sury.org+2 [7.432 B]
Bai:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.3 all 8.3.9-1+ubuntu22.04.1+deb.sury.org+1 [32,8 kB]
Bai:8 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php all 2:8.3+94+ubuntu22.04.1+deb.sury.org+2 [7.194 B]
S'ha baixat 4.975 kB en 1s (8.371 kB/s)
S'està seleccionant el paquet php8.3-common prèviament no seleccionat.
(S'està llegint la base de dades… hi ha 125807 fitxers i directoris instal·lats actualment.)
S'està preparant per a desempaquetar …/0-php8.3-common_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_amd64.deb…
S'està desempaquetant php8.3-common (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet php8.3-opcache prèviament no seleccionat.
S'està preparant per a desempaquetar …/1-php8.3-opcache_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_amd64.deb…
S'està desempaquetant php8.3-opcache (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet php8.3-readline prèviament no seleccionat.
S'està preparant per a desempaquetar …/2-php8.3-readline_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_amd64.deb…
S'està desempaquetant php8.3-readline (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet php8.3-cli prèviament no seleccionat.
S'està preparant per a desempaquetar …/3-php8.3-cli_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_amd64.deb…
S'està desempaquetant php8.3-cli (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet libapache2-mod-php8.3 prèviament no seleccionat.
S'està preparant per a desempaquetar …/4-libapache2-mod-php8.3_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_amd64.deb…
S'està desempaquetant libapache2-mod-php8.3 (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet libapache2-mod-php prèviament no seleccionat.
S'està preparant per a desempaquetar …/5-libapache2-mod-php_2%3a8.3+94+ubuntu22.04.1+deb.sury.org+2_all.deb…
S'està desempaquetant libapache2-mod-php (2:8.3+94+ubuntu22.04.1+deb.sury.org+2)…
S'està seleccionant el paquet php8.3 prèviament no seleccionat.
S'està preparant per a desempaquetar …/6-php8.3_8.3.9-1+ubuntu22.04.1+deb.sury.org+1_all.deb…
S'està desempaquetant php8.3 (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està seleccionant el paquet php prèviament no seleccionat.
S'està preparant per a desempaquetar …/7-php_2%3a8.3+94+ubuntu22.04.1+deb.sury.org+2_all.deb…
S'està desempaquetant php (2:8.3+94+ubuntu22.04.1+deb.sury.org+2)…
S'està configurant php8.3-common (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
Creating config file /etc/php/8.3/mods-available/calendar.ini with new version
Creating config file /etc/php/8.3/mods-available/ctype.ini with new version
Creating config file /etc/php/8.3/mods-available/exif.ini with new version
Creating config file /etc/php/8.3/mods-available/fileinfo.ini with new version
Creating config file /etc/php/8.3/mods-available/ffi.ini with new version
Creating config file /etc/php/8.3/mods-available/ftp.ini with new version
Creating config file /etc/php/8.3/mods-available/gettext.ini with new version
Creating config file /etc/php/8.3/mods-available/iconv.ini with new version
Creating config file /etc/php/8.3/mods-available/pdo.ini with new version
Creating config file /etc/php/8.3/mods-available/phar.ini with new version
Creating config file /etc/php/8.3/mods-available/posix.ini with new version
Creating config file /etc/php/8.3/mods-available/shmop.ini with new version
Creating config file /etc/php/8.3/mods-available/sockets.ini with new version
Creating config file /etc/php/8.3/mods-available/sysvmsg.ini with new version
Creating config file /etc/php/8.3/mods-available/sysvsem.ini with new version
Creating config file /etc/php/8.3/mods-available/sysvshm.ini with new version
Creating config file /etc/php/8.3/mods-available/tokenizer.ini with new version
S'està configurant php8.3-readline (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
Creating config file /etc/php/8.3/mods-available/readline.ini with new version
S'està configurant php8.3-opcache (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
Creating config file /etc/php/8.3/mods-available/opcache.ini with new version
S'està configurant php8.3-cli (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
update-alternatives: s'està emprant /usr/bin/php8.3 per a proveir /usr/bin/php (php) en mode automàtic
update-alternatives: s'està emprant /usr/bin/phar8.3 per a proveir /usr/bin/phar (phar) en mode automàtic
update-alternatives: s'està emprant /usr/bin/phar.phar8.3 per a proveir /usr/bin/phar.phar (phar.phar) en mode automàtic
Creating config file /etc/php/8.3/cli/php.ini with new version
S'està configurant libapache2-mod-php8.3 (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
Creating config file /etc/php/8.3/apache2/php.ini with new version
libapache2-mod-php8.3: php7.4 module already enabled, not enabling PHP 8.3
S'està configurant php8.3 (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'està configurant libapache2-mod-php (2:8.3+94+ubuntu22.04.1+deb.sury.org+2)…
S'està configurant php (2:8.3+94+ubuntu22.04.1+deb.sury.org+2)…
S'estan processant els activadors per a man-db (2.10.2-1)…
S'estan processant els activadors per a php8.3-cli (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
S'estan processant els activadors per a libapache2-mod-php8.3 (8.3.9-1+ubuntu22.04.1+deb.sury.org+1)…
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.
Si reiniciem l'apache systemctl restart apache2.service
i accedim a http://ipDelServidor.cat/info.php ja funcionarà, ja que la instal·lació ens ha habilitat el mòdul PHP de l'apache.
En cas que no funcionés caldria habilitar el mòdul manualment.
Per habilitar el mòdul i reiniciar el servei caldria executar les comandes
a2enmod php8.3
service apache2 restart
Arribats a aquest punt, toca investigar una mica i que activeu i desactiveu el mòdul de PHP vosaltres mateixos.
Amb els mòduls, trobareu dos tipus de fitxers, els acabats en .load i els acabats en .conf.
- Els .load contenen la ruta al binari de la llibreria
- Els .conf, la configuració a aplicar.
Per gestionar els mòduls (activar/desactivar) tenim les següents comandes
a2enmod nomdelmodul
a2dismod nomdelmodul
Fer aquest tipus de canvis ens obliga a fer un reinici del servei.
a2dismod php8.1
service apache2 restart
Si ara provem d'accedir a una pàgina php, no s'executarà el codi i ens descarregaria el fitxer .php
a2enmod php8.1
service apache2 restart
El que fa el mòdul és passar al motor de PHP (a través d'un handler) tots aquells fitxers amb extensió .php (i d'altres).
El PHP també té fitxers de configuració per definir certs paràmetres. Caldrà que reviseu la part específica dels fitxers de /etc/php/versió/apache2/
si necessiteu alguna cosa especial o hi ha algun problema. En el nostre cas /etc/php/8.1/apache2
.
Per fer un test ràpid el millor és utilitzar la comanda php phpinfo();
dins un fitxer en php tal com hem fet amb el fitxer info.php.
Per Nginx caldrà fer la instal·lació del servei php-fpm
i configurar posteriorment el servidor Nginx.
Això està explicat més endavant en el tema de Multiversió.
i Nginx?
Per saber amb quins mòduls s'ha compilat el nostre servidor Nginx executarem la comanda
nginx -V 2>&1|xargs -n1|grep module
i una possible sortida serà
--modules-path=/usr/lib/nginx/modules
--with-http_ssl_module
--with-http_stub_status_module
--with-http_realip_module
--with-http_auth_request_module
--with-http_v2_module
--with-http_dav_module
--with-http_slice_module
--add-dynamic-module=/build/nginx-zctdR4/nginx-1.18.0/debian/modules/http-geoip2
--with-http_addition_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_sub_module