Macchine Linux Mr.Digital

Da Webmobili Wiki.

Le nostre macchine Linux sono

  • MERIDA
  • MULAN
  • POCAHONTAS
  • JARVIS
  • ULTRON

Merida

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

Manutenzione

Al momento esegue una Debian 12.

Multiple versioni di PHP

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

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

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>


Mulan

È 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.

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;
	}
	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.