venerdì 30 giugno 2017

Aumentare la dimensione massima di file caricabili sul server in post

Occorre intervenire su sulla configurazione di PHP e sul web server.
Ipotizziamo di utilizzare un macchina Ubuntu 16.04 con PHP 7.0 e web server nginx.
Per quanto riguarda php occorre modificare nel file php.ini i valori dei parametri

upload_max_filesize
post_max_size

Per quanto riguarda il server web, ipotizzando di utilizzare nginx,

  • in caso di modifica per tutto il server occorre modificare il file nginx.conf inserendo il valore client_max_body_size nel blocco http
  • in caso di modifica per un solo dominio occorre modificare il file di configurazione del dominio (/etc/nginx/sites-avalible/.conf) inserendo la stesso stringa nel blocco server

In caso di file di dimensioni particolarmente elevate occorre intervenire anche sul tempo massimo di durata dello script sia in PHP che in nginx

Finite le modifiche ricordarsi di riavviare PHP e nginx

sudo service php7.0-fpm restart
sudo service nginx restart

Riferimenti 

  • https://easyengine.io/tutorials/php/increase-file-upload-size-limit/
  • https://easyengine.io/tutorials/php/increase-script-execution-time/

giovedì 1 giugno 2017

Bloccare l'accesso dei BOT al sito


Questa la procedura migliore che ho trovato assemblando varie indicazioni trovate in rete:

1. Rilevare gli user-agent che hanno avuto accesso al server ordinandoli per numerosità di accessi interroganto il file access.log
cat access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n

2. Inserire degli user-agent dei bot nel file robots.txt con indicazione di blocco:
User-agent:
Disallow: /

3. Inserire la condizione di blocco nel file .htaccess
Condizione per il singolo user-agent:
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT} Twitterbot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Baiduspider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ApacheBench [NC]
  RewriteRule .* - [F,L]

Condizione per più user-agent:
  RewriteCond %{HTTP_USER_AGENT} ^(Twitterbot|Baiduspider|ApacheBench) [NC]
  RewriteRule .* - [F,L]

4. Inserire il blocco dell'ip del bot nel file htaccess
 deny aaa.bbb.ccc.ddd

Per un approccio più esteso considerare di trasferire il sito sotto Cloudflare

Riferimenti
- https://ma.ttias.be/block-user-agent-in-htaccess-for-apache-webserver/
- http://www.blogtips.org/web-crawlers-love-the-good-but-kill-the-bad-and-the-ugly/
- https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/

Script time evaluation in PHP

Piccolo promemoria del codice per valutare il tempo di esecuzione di uno script:

Registro l'inizio
$time_start = microtime(true);

Eseguo lo script script
...

Registro la fine
$time_end = microtime(true);

Calcolo la durata
$execution_time = ($time_end - $time_start);          

La stampo
echo 'Total Execution Time: '.$execution_time.' Secs'; //execution time of the cicle in seconds