Macchine Linux Mr.Digital: differenze tra le versioni

Da Webmobili Wiki.
m SimoneVincenzi ha spostato la pagina Macchine Linux a Macchine Linux Mr.Digital: Nome troppo generico, ora si riferisce a un contesto specifico
 
(3 versioni intermedie di un altro utente non mostrate)
Riga 45: Riga 45:




==== Python PIP ====.
==== Python PIP ====
Appena installato '''python3''' soffre di un bug quando si cerca di usare PIP.<br/>
Appena installato '''python3''' soffre di un bug quando si cerca di usare PIP.<br/>
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/<br/>
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/<br/>
Riga 55: Riga 55:
</syntaxhighlight>
</syntaxhighlight>
Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.
Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.
==== MariaDB miglioramento performance ====
Per MariaDB abbiamo aumentato il valore del valore <code>innodb_buffer_pool_size</code> all''''80% della RAM'''
<syntaxhighlight lang="bash">
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
</syntaxhighlight>
Cercare <code>innodb_buffer_pool_size</code> e impostare l'80% della RAM
<syntaxhighlight lang="bash">
innodb_buffer_pool_size = 6G
</syntaxhighlight>
Fonte: https://mariadb.com/kb/en/configuring-mariadb-for-optimal-performance/


== Mulan ==
== Mulan ==
Riga 205: Riga 221:
* '''DNS Server''' interno per i domini di sviluppo (es <code>svn.office.webmobili.it - ariel.office.webmobili.it ...</code>)
* '''DNS Server''' interno per i domini di sviluppo (es <code>svn.office.webmobili.it - ariel.office.webmobili.it ...</code>)


Monta il sistema operativo '''Raspbian''' basato su ''Debian 11''.
Monta il sistema operativo '''Raspbian''' basato su ''Debian 12''.




=== Upgrade Debian 10 to Debian 11 ===
=== Upgrade Debian 10 to Debian 11 (vecchia) ===
Dopo l'upgrade alla nuova versione, Raspbian perde completamente i riferimenti alla rete ethernet perché una configurazione di sistema cambia cartella ma l'update non ne tiene conto<br/>
Dopo l'upgrade alla nuova versione, Raspbian perde completamente i riferimenti alla rete ethernet perché una configurazione di sistema cambia cartella ma l'update non ne tiene conto<br/>
Seguita questa guida dopo aver finito le bestemmie perché dopo il riavvio non vedete più in rete il Raspberry.
Seguita questa guida dopo aver finito le bestemmie perché dopo il riavvio non vedete più in rete il Raspberry.

Versione attuale delle 08:56, 13 giu 2024

Le nostre macchine Linux sono

  • MERIDA
  • MULAN
  • POCAHONTAS
  • JARVIS
  • ULTRON

Merida

[modifica]

Ospita i mini siti e tutte le istanze Wordpress di Designbest (webmobili, magazine, outlet).

Manutenzione

[modifica]

Al momento esegue una Debian 12.

Multiple versioni di PHP

[modifica]

A causa della presenza di diversi siti, la macchina può eseguire diverse versioni di PHP, tramite PHP FPM
PHP FPM - Configurare multiple versioni di PHP.
Ad esempio,

  • al momento (febbraio 2024) Wordpress non è ancora pronto ad accogliere pienamente PHP8, ma solo PHP7.4 (fonte)
  • il programma dei rimborsi è stato fatto in PHP5 e non guarisce più.

A causa dei limiti di Wordpress, abbiamo configurato Apache per l'utilizzo di PHP 7.4 di default.

Configurazione PHP per Wordpress

[modifica]

A causa della presenza di più istanze Wordpress abbiamo convenuto di modificare i valori di /etc/php/7.4/fpm/php.ini nel seguente modo

upload_max_filesize = 128M
post_max_size = 256M
max_execution_time = 900
max_input_vars = 5000
memory_limit = 2048M
max_input_time = 400

Problema PhpMyAdmin

[modifica]

Siccome abbiamo impostato Apache che utilizzi di default la versione PHP7.4,
Quando si installa phpmyadmin su Debian 12, ovviamente è impostato per funzionare con PHP8 e quindi restituisce un errore 500.
Per rimediare al bug bisogna andare nel file di configurazione a dirgli di utilizzare la versione 8 invece di usare la default.
Editare /etc/apache2/conf-avalaible/phpmyadmin.conf e aggiungere queste righe all'interno di <Directory>

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>


Python PIP

[modifica]

Appena installato python3 soffre di un bug quando si cerca di usare PIP.
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/

La soluzione è quella di cancellare un file di testo presente nella cartella di installazione:

cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED

Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.


MariaDB miglioramento performance

[modifica]

Per MariaDB abbiamo aumentato il valore del valore innodb_buffer_pool_size all'80% della RAM

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Cercare innodb_buffer_pool_size e impostare l'80% della RAM

innodb_buffer_pool_size = 6G

Fonte: https://mariadb.com/kb/en/configuring-mariadb-for-optimal-performance/

Mulan

[modifica]

È un reverse-proxy che ha il compito di controllare il flusso delle richieste gestendo eventuali attacchi DDOS prima di passare la palla ad IIS sulla macchina ARIEL.
Oltre a questo si occupa della compressione e caching delle risorse.
Al momento si pone di fronte al solo Designbest.

NGINX

[modifica]

Configurazione Virtual Host

[modifica]
upstream www.designbest.com {
	server 192.168.250.10:443;
}
upstream designbest.com {
	server 192.168.250.10:80;
}
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

##
# DESIGNBEST.COM 
#

# Porta 80, forwardo e lascio gestire redirect da IIS
server {
	listen 80;

	server_name designbest.com www.designbest.com;

	#access_log /var/log/nginx/dbdemo47.com/access.log;
	error_log /var/log/nginx/designbest.com/error.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_pass http://designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_pass http://designbest.com;
		include /etc/nginx/proxy_params;
	}
}

# Porta 443
server {
	if ($host = designbest.com) {
		return 301 https://www.$host$request_uri;
	}

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

	index index.html index.htm index.nginx-debian.html;
	server_name designbest.com www.designbest.com;

	# upload che di default è 1M
	client_max_body_size 100M;

	ssl_certificate /etc/nginx/ssl/designbest.com_ssl_certificate_bundle.crt;
	ssl_certificate_key /etc/nginx/ssl/designbest.com_private_key.key;

	error_log /var/log/nginx/designbest.com/error.log;
	#access_log /var/log/nginx/designbest.com/access.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
	}
}


##
# IMMAGINI.DESIGNBEST.COM
#
server {
	# SSL configuration
	#
	listen 443 ssl;
	listen [::]:443 ssl;

	#root /var/www/html;

	index index.html index.htm index.nginx-debian.html;

	server_name immagini.designbest.com;

	ssl_certificate /etc/nginx/ssl/designbest.com_ssl_certificate_bundle.crt;
	ssl_certificate_key /etc/nginx/ssl/designbest.com_private_key.key;

	error_log /var/log/nginx/immagini.designbest.com/error.log;
	#access_log /media/discodati/logs/immagini.designbest.com/access.log;

	location ~ ^/(it|fr|de|en) {
		limit_req zone=mylimit burst=20 nodelay;
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
		limit_req_status 429;
	}

	location / {
		proxy_ssl_server_name on;
		proxy_pass https://www.designbest.com;
		include /etc/nginx/proxy_params;
	}
}

Questa guida mostra come NGINX può integrare il controllo del flusso.

Testing con Apache Bench
[modifica]

Suppose we want to see how fast Yahoo can handle 100 requests, with a maximum of 10 requests running concurrently:

ab -n 100 -c 10 -l http://www.yahoo.com/

Nota bene: Se non si mette l'ultimo slash (/) il comando non funziona. https://www.petefreitag.com/item/689.cfm

Protocollo http2

[modifica]

Il nuovo nginx supporta nativamente il protocollo http2.
Basta aggiungere http2 dietro all'istruzione listen 443 ssl

listen 443 ssl http2;

Compressione Brotli

[modifica]

La nuova compressione che va a sostituire la classica gzip
è stata approfondita nell'apposito paragrafo Nginx modulo Brotli (text compression)

JARVIS

[modifica]

Jarvis è il Raspberry aziendale che si occupa di fornire i seguenti servizi:

  • SVN Server per lo sviluppo
  • VPN Server per il lavoro in Smart-Working
  • DNS Server interno per i domini di sviluppo (es svn.office.webmobili.it - ariel.office.webmobili.it ...)

Monta il sistema operativo Raspbian basato su Debian 12.


Upgrade Debian 10 to Debian 11 (vecchia)

[modifica]

Dopo l'upgrade alla nuova versione, Raspbian perde completamente i riferimenti alla rete ethernet perché una configurazione di sistema cambia cartella ma l'update non ne tiene conto
Seguita questa guida dopo aver finito le bestemmie perché dopo il riavvio non vedete più in rete il Raspberry.

sudo nano /etc/systemd/system/dhcpcd.service.d/wait.conf
e da

[Service]
ExecStart=
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w

cambiare in

[Service]
ExecStart=
ExecStart=/usr/sbin/dhcpcd -q -w

E riavviare
Esiste una micro SD con un backup di una versione funzionante di Debian 11 aggiornata al 22 dicembre 2021, dovrebbe essere attaccata con lo scotch sul Raspberry ☠.