sabato 10 gennaio 2015

Comandi utili da terminale su Debian / Ubuntu / Mint

Lista di comandi utili per ottenere informazioni da termina su un web server LAMP (Linux Apache MySQL PHP)



Nell’ordinaria amministrazione di un server web vengono utilizzati vari comandi ed istruzioni da eseguire su terminale per ottenere informazioni e/o compiere rapide operazioni su cartelle e file.


Presento di seguito i più comuni, spesso determinanti per risparmiare tempo su un server di sviluppo, vanno utilizzati con cautela su un server in produzione, magari solo per ottenere delle informazioni veloci e poi contattare l’amministratore di sistema. Ovviamente, se siete voi l’amministratore di sistema, dovreste già conoscerli e la lista di seguito può essere utile solo per un veloce ripasso. Le istruzioni sono state testate su un server Debian / Ubuntu / Mint


sudo -s
Accedi come amministratore (non ti sarà nuovamente richiesta la password)


du -h
Mostra la dimensione di tutte le sottocartelle della cartella corrente


du -h --max-depth=1
Mostra la dimensione di un livello di sottocartelle della cartella corrente. Se l’output è troppo lungo si può usare du -h --max-depth=1
-s è un’opzione che sta per “summarize”, mostra quindi solo la lunghezza

du -a /var | sort -n -r | head -n 10
Mostra le 10 cartelle più grandi presenti sul sistema

truncate -s 0 /path/to/log.log
Pulire un file log


Miniguide
Sono sequenze di operazioni semplici che sono utili in diverse situazioni.

  1. Vai alla directory dei log di Apache


cd /var/log/apache2/


  1. Rimuovi tutti i file


rm -rf /var/log/apache2/*


  1. Ricarica apache

service apache2 reload

domenica 4 gennaio 2015

Magento mettere offline un sito web proteggendo la SEO

Come mettere off-line un sito realizzato con Magento?

Dovete aggiornare il Vs. sito web Magento e avete la necessità di metterlo off-line per qualche tempo finchè lo modificate?


Una prima soluzione potrebbe essere “spegnerlo” e mettere una pagina di sito in costruzione, scaricare il sito in locale e poi rimetterlo on-line quando le modifiche sono state effettuate. In questo caso però, oltre agli ordini inevitabilmente persi, potrebbero esserci degli altri effetti collaterali, primo fra tutti la SEO del sito.


Google & colleghi, infatti, non trovando più le pagine del sito (se ricevono un errore 404) potrebbero decidere di penalizzarle e perderebbero quindi qualche posizione nelle SERP.

Utilizzare un errore 503

La soluzione può essere quindi di creare una pagina con errore 503 con questo codice:


<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 300);
?>


in questo modo gli header inviati agli spider dei motori riceverebbero il messaggio di errore 503 e di ritornare dopo 300 secondi (generate questo valore dinamicamente in modo da stabilire un tempo di rimessa on-line del sito accettabile).

Utilizzare la pagina errore 503 di Magento

In Magento 1.4 e successivi è stata introdotta una gestione nativa degli errori 503 in modo da poter mettere il sito in mantainance mode.


Si tratta di una funzione molto utile perchè mantiene attivi tutti gli url del sito restituendo un erorre 503.


Per attivare la pagina è sufficiente inserire un file maintainance.flag nella root del sito web, non è importante il contenuto del file, basta che esista.

Personalizzare l’aspetto della pagina 503 di Magento

La pagina di errore 503 viene impostata in base ad un file specifico che si chiama 503.phtml e si trova nella cartella /errors/default (qui troverete anche i file e gli stili della pagina).


Potete quindi mostrare la grafica più adatta al design del vostro sito web e tutte le customizzazioni utili per ottenere una adeguata personalizzazione dei contenuti della Vostra pagina di errore 503 su Magento.


Gestione avanzata della pagina 503 e accesso per l’amministratore (o altri utenti specifici)

Mentre in sito è in mantenimento alcuni utenti potrebbero avere la necessità di accedere comunque (testers e sviluppatori).


Per fare questo è possibile utilizzare questo codice:


//definisco  un array di ip autorizzati
$ip = $_SERVER['REMOTE_ADDR'];
$allowed = array('127.0.0.1','89.23.233.10'); // these are the IP's that are allowed to view the site.


poi cambiare la linea del codice


if ( file_exists($maintenanceFile) ) {


in


if (file_exists($maintenanceFile) && !in_array($ip, $allowed)) {


in questo modo se il file maintainance.flag viene trovato e l’ip dell’utente non è compreso nella lista $allowed il sito va in mainanance mode, restituisce quindi un errore 503.


SEO blackhat


Potreste rendere l’accesso libero ai motori di ricerca mentre il sito è in maintainance mode, in questo modo non esisterebbe neanche la necessità di gestire un errore 503 - agli utenti non interessa gran che se è un 404 o un 503, in genere guardano solo il contenuto della pagina :-)


Si tratta però di una tecnica rischiosa perchè se i motori di ricerca si accorgono dell’utilizzo di tecniche di Cloaking possono decidere di bannare il dominio con danni notevolmente maggiori rispetto ai vantaggi ottenibili.


Cambiare la pagina di errore 503


La formattazione della pagina 503 standard di Magento potrebbe non essere coerente con il design del Vostro sito web, quindi potrebbe servire una customizzazione più radicale.


Per ottenere questo si può modificare la seguente riga della pagina index.php di Magento:


include_once dirname(__FILE__) . '/errors/503.php';


in


include_once dirname(__FILE__) . '/503/index.php';

quindi potete inserire nel codice della pagina index.php (contenuta in una cartella 503 che si trova sulla root) il codice che preferite.

giovedì 1 gennaio 2015

Eseguire un’importazione in Magento da riga di comando

Come eseguire un’importazione di prodotti con DataFlow nel catalogo di Magento da terminale



L’opzione Dataflow-Profile permette di effettuare aggiornamenti del catalogo senza dover scrivere codice PHP.


Tuttavia a volte può verificarsi un timeout del web server e rendere impossibile l’effettuazione dell’operazione, abbiamo già visto nel post relativo agli indici bloccati.


Eseguire un’importazione di prodotti da riga di comando può sembrare un’operazione un po’ complicata per chi non l’abbia mai effettuata ma talvolta può essere necessaria se il web server va in timeout.


Il codice PHP necessario



In effetti per eseguire un’importazione di dati da Magento utilizzando il DataFlow sono sufficienti poche righe di codice:


<?php
//verifichiamo che lo script venga eseguito da riga di comando
if (php_sapi_name() !== 'cli') {
    die ("Esegui lo script solo da shell");
}


//identifico l’ID del profilo di importazione Dataflow
$profileId = 7;


//includo Magento
require_once 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);


//instanzio il model dataflow/profile  
$profile = Mage::getModel('dataflow/profile');


//imposto l’utente che eseguirà lo script
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);
Mage::getSingleton('admin/session')->setUser($userModel);


//carico il profilo di importazione
$profile->load($profileId);

//controllo che il profilo esista realmente
if (!$profile->getId()) {
   Mage::getSingleton('adminhtml/session')->addError('ERROR: Incorrect profile id');
}
 
Mage::register('current_convert_profile', $profile);


//eseguo il profilo
$profile->run();
$recordCount = 0;
$batchModel = Mage::getSingleton('dataflow/batch');


//comunico nell’output che il profilo è stato eseguito
echo "EXPORT COMPLETE. BATCHID: " . $batchModel->getId();
?>


Come lanciare lo script PHP da riga di comando


Dicevamo che lo script deve essere eseguito da riga di comando, quindi andiamo su terminale e digitiamo:


php export.php

fatto.