Obbiettivo: realizzare una virtualizzazione vmware con l’ultima release stable di magento ovvero la 1.3.2.4, per utilizzarla nelle fasi di sviluppo e testing.
La virtualizzazione è scaricabile qui >> Magento_full_installation_on_Debian_5.zip (917 MB)
Dopo aver provato e riprovato l’installazione su Centos 5 e aver sbattuto la testa per ore sui problemi di repository (incluso il Remi collect suggerito dalla Varien) getto la spugna e intraprendo la strada di una Debian Lenny . Il problema infatti della Centos è che il repository ufficiale rilascia php 5.1 non compatibile con Magento e il repository Remi è invece arrivato alla 5.3, altrettanto instabile con Magento che attualmente vuole la 5.2 (SI qualcuno è riuscito a far girare magento sulla php 5.3 modificando un paio di funzioni del core che utilizzavano una sintassi deprecata, NO non posso pensare che il problema sia seriamente confinato a queste due problematiche e il mio istinto di sviluppatore mi suggerisce di guardare oltre).
Vi tralascio tutti i tentativi di far convivere il tutto con le versioni di apache e mysql che afferiscono alla sfera del delirio puro e semplice.
Comincio il viaggio con Debian quindi, scarico l’ultima versione downlodabile qui (http://www.debian.org/distrib/netinst) senza dover scaricare tutto mi limito a masterizzare lo stretto necessario, anche perchè non installerò di proposito nulla al di fuori del sistema di base per evitare di avere servizi/programmi inutili.
Lancio l’installazione e selezioni banali a parte mi limito a scegliere di installare solo il “system default”. Chiaramente avendo scelto una netinst dovrò avere a disposizione un dhcp nella mia rete pena la possibilità di scaricaricare ed installare da remoto.
Reboot e sono pronto a configurare il resto.
Parto per sicurezza aggiornando gli header del kernel, necessari alla successiva installazione del Vmware Tools. Chiaramente questi sono utili una volta eseguita la virtualizzaizone con il player Vmware per non perdere in focus passando da una finestra all’altra ma sono indispensabili se la virtualizzaizone viene deployata in una infrastruttura Vmware ESX per tutta una serie di ragioni che passano dall’esporre maggiori informazioni all’hypervisor fino ad una ottimizzazione della memoria condivisa dalle macchine.
apt-get install linux-headers-$(uname -r)
Fatto questo riavvio (non necessario ma nel dubbio…):
reboot
Per togliermi dalla consolle dell’hypervisor Vmware Esx installo ssh così da amministrare il tutto via putty.
apt-get install ssh openssh-server
Passo ad installare Vim, perchè sotto Debian vi ha qualche comportamento strano, almeno per me.
apt-get install vim-nox
Adesso passo alla configurazione di rete. Avendo un dhcp l’ifconfig mi riporterà correttamente un indirizzo della mia classe del tipo
eth0 192.168.3…. ma per una destinazione stabile è sicuramente meglio se gli associo un indirizzo statico.
vim /etc/network/interfaces
Al momento dovrebbe avere le seguenti linee
# The loopback network interface
auto lo
iface lo inet loopback# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcpassegno un indirizzo definitivo invece e un gateway di riferimento, commento le due righe precedenti allow…. e inserisco un nuovo blocco
# The loopback network interface
auto lo
iface lo inet loopback# The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.3.51 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255 gateway 192.168.3.253
I dati che ho inserito chiaramente non andranno bene per la vostra rete, sarà necessario adattarli al vostro contesto. Riavvio il servizio di networking:
/etc/init.d/networking restart
controllo con
ifconfigche tutto sia stato caricato correttamente
eth0 Link encap:Ethernet HWaddr 00:0c:29:62:68:4e inet addr:192.168.3.51 Bcast:192.168.3.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe62:684e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:81600 errors:0 dropped:0 overruns:0 frame:0 TX packets:43794 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:118300472 (112.8 MiB) TX bytes:2967863 (2.8 MiB)
e provo anche un ping ad un sito esterno per verificare che la macchina acceda ad internet via gateway (
ping www.debian.org).
Il ping mi risponde perchè nel primo giro il dhcp deve aver propagato nel resolv.conf gli indirizzi dei dns.Se così non fosse andate a d editare il
vim /etc/resolv.conf
per aggiungere le entry necessarie.
A questo punto provo la connessione con putty al nuovo indirizzo ovvero 192.168.3.51 (d’ora in poi questo sarà per me l’indirizzo della macchina, per voi potrebbe essere qualunque altro).
Bene sono dentro con putty, comincio aggiornando la distribuzione alle ultime versioni:
apt-get update apt-get upgrade
La sincronizzaizone con l’ora è fondamentale in Magento, mi è capitato di aver un server non sincronizzato che non mi dava più l’accesso alla sezione di back-end perchè i cookie scadevano prima di essere impostati sulla macchina client. In altri casi le operazioni in cron per Magento devono essere perfettamente allineate con quanto ci si aspetta e installo quindi il demone ntp
apt-get install ntp ntpdate
Controllate che il vostro firewall consenta il transito sulla porta udp dell’ ntp ovvero la 123. (io ho perso parecchio tempo prima di arrivarci…)
localizzo alla nostra timezone (nel mio caso durante l’installazione non ho selezionato la timezone corretta) e quindi edito
vim /etc/timezone
inserendo
Europe/Romee quindi
rm -f /etc/localtime
sudo cp -f /usr/share/zoneinfo/Europe/Rome/ etc/localtime
lancio un date e finalmente mi dà un valore corretto.
Installo mysql
aptitude install mysql-server mysql-client
L’installer mi chiede la password di default che provvedo ad inserire.
Passo ad Apache 2 che installo con i moduli base tenendomi aperta la possibilità di gestire Magento via SSL
aptitude install apache2 apache2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
Attivo i moduli che mi servono per Magento
a2enmod suexec rewrite ssl actions include expires deflate mime dir authz_host authz_userE finalmente passo a php.
apt-get install libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp
La php5-common contiene la libreria PDO necessaria a Magento per il layer di comunicazione con Mysql, aggiungo le librerie SOAP per poter utilizzare le api via web service
apt-get install php-SOAP
A questo punto passo al tutorial fornito dalla Varien per l’installazione di Magento vero e proprio che riporto per completezza.
Creo un db di appoggio
mysqladmin create magentoshow -u root -p
Mi sposto in /var/www/
1.
mkdir magento2.
cd magento3.
wget http://www.magentocommerce.com/downloads/assets/1.3.2.4/magento-1.3.2.4.tar.gz
4.
wget http://www.magentocommerce.com/downloads/assets/1.2.0/magento-sample-data-1.2.0.tar.gz
5.
tar -zxvf magento-1.3.2.4.tar.gz
6.
tar -zxvf magento-sample-data-1.2.0.tar.gz
7.
mv magento-sample-data-1.2.0/media/* magento/media/
8.
mv magento-sample-data-1.2.0/magento_sample_data_for_1.2.0.sql magento/data.sql
9.
mv magento/* magento/.htaccess .
10.
chmod o+w var var/.htaccess app/etc
11.
chmod -R o+w media
12.
mysql -h localhost -u root -p magentoshow < data.sql</pre > 13.
./pear mage-setup .14.
./pear install magento-core/Mage_All_Latest-stable
Sicuramente avrete avuto come me questo problema al punto 14
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 157496 bytes) in /var/www/magento/downloader/pearlib/php/PEAR/Registry.php on line 1255
Di fatto l’interprete php da riga di comando (CLI) ha un suo php.ini con una limitazione sul memory_limit da cambiare:
vim /etc/php5/cli/php.ini
E andate a modificare la riga di gestione della memory come segue
memory_limit = 64M ; Maximum amount of memory a script may consume (32MB)
E’ necessario installare anche le Curl :
apt-get install php5-curl
Quindi potete proseguire con i punti rimanenti
15.
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
16.
rm -rf magento/ magento-sample-data-1.2.0/
17.
rm -rf magento-1.3.2.4.tar.gz magento-sample-data-1.2.0.tar.gz data.sql
A questo punto devo far puntare apache2 alla cartella corretta e visto che ho solo questo dominio
non perdo tempo a definire un virtual host ma vado a modificare la directory di default:
vim /etc/apache2/sites-available/default
E adatto il virtual host di default alle mie esigenze
<virtualhost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/magento <directory /> Options FollowSymLinks AllowOverride None <directory /var/www/magento> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </directory></virtualhost>
Quello che ho fatto è esclusivamente far puntare il virtualhost a /var/www/magento. Riavvio
/etc/init.d/apache2 restart
Apro un browser e lo faccio puntare su
http://192.168.3.51
Se tutto è andato bene posso finalmente vedere il tool di installazione di Magento. Bene.
Preparo un account mysql per il db Magento che mi servirà durante l’installazione:
mysql -u root -p
grant all on magentoshow.* to 'maguser'@'localhost' identified by 'lamiapassword';
flush privileges;
Procedo con il setup di Magento, tralascio i dettagli ovvi lasciando a voi l’iniziativa.
Suggerisco di modificare il path del back-end di magento per evitare che sia troppo riconoscibile e attivo la modalità Mod Rewrites.
Passo a configurare l’account amministrativo e sono pronto a lanciare il front-end…. o quasi …. tanto per cominciare ho un bell’errore che mi accoglie
dalle ricerche è un problema di cache vado a rimuovere un file
rm /var/www/magento/app/etc/use_cache.ser
rilancio e sembra funzionare, clicco su un prodotto ma ho un’altro errore, questa volate è colpa mia il modulo Mod Rewrite di Magento funziona solo se il modRewrite di apache è attivo, non essendolo di default devo permettere all’.htaccess della root di Magento di invocarlo ma per fare questo la mia definizione di virtual directory va modificata
vim /etc/apache2/sites-available/default
<virtualhost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/magento <directory /> Options FollowSymLinks AllowOverride All <directory /var/www/magento> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </directory></virtualhost>
Modifico AllowOverride None in AllowOverride All e tolgo la direttiva Indexes che in caso di mancanza di un file di default in una cartella qualunque fa vedere la lista dei file (piuttosto fastidioso).
Riavvio Apache 2, non ho più il problema ma devo rigenerare i permalink accedo al backend
http://192.168.3.51/index.php/percorsodelbackend/
Vado in System / Cache Management e premo su refresh Catalog Rewrites, torno la front-end e FINALMENTE CI SONO !.
Per finire in bellezza installo un php eaccelerator che in questo caso dovrebbe abbassare i tempi di elaborazione notevolmente (fonte Datasheet sulle ottimizzazioni di Magento Enterprise Edition).
Per testare il corretta funzionamento
apt-get install build-essential php5-dev
cd /tmp
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvfj eaccelerator-0.9.5.3.tar.bz2cd eaccelerator-0.9.5.3phpize
./configuremakeviene generata la libreria in
/usr/lib/php5/20060613/
per far caricare il modulo ad Apache2 vado a creare il file di configurazione nella cartella adeguata
vim /etc/php5/cgi/conf.d/eaccelerator.ini
extension="eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/var/cache/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
per i dettagli sulla configurazione seguire questo link:
http://www.eaccelerator.net/wiki/Settings
la cache che creiamo sarà su disco e di fatto dobbiamo creare lo spazio necessario
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
a questo punto riavviamo apache
/etc/init.d/apache2 restart
Mi creo un file nella root del sito che chiamo test.php dentro metto una istruzione di outup della configurazione di php
< ? phpinfo(); ?>
lo chiamo dal browser http://192.168.3.51/test.php e verifico che ci sia la voce dell’eaccelerator.
Per finire io ho dovuto installare anche i vmware tools attività che comunque vi risparmio.
Per ora è tutto, nel prossimo post cercherò di aggiornarvi sulle politiche di ottimizzazione per mysql/apache e php che sto provando in questi giorni.
La virtualizzazione è scaricabile qui >> Magento_full_installation_on_Debian_5.zip (917 MB)

Ho scaricato la vs. macchina virtuale, se accettate un feedback vi segnalo che:
1. quasto magento non è aggiornabile via Magento connect x via dei diritti sulle cartelle
2. c’è stato un piccolo errore nel nominare i files, sono tutti Magneto… anziche Magento…
cmq. bel lavoro !
idee:
1. fare un’installazione vuota, senza dati demo
2. aggiungere la lingua italiana e l’estensione per cancellare gli ordini
3. mettere un template multilingua
Saluti
Mauro
ah, altra cosa, la prima volta che ho usato questa VM, ho provato ad aggiornarla con apt-get upgrade e non funziona più ! non so se avete provato anche voi
Ho notato altre due cose:
1. abilitando i diritti di scrittura sulle cartelle di magento, magento connect funziona ma non mostra l’elenco completo dei moduli
2. in fase di shutdown di debian, appare un errore “LVM… failed… bla bla”
Saluti