dic 10

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 dhcp

assegno 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

ifconfig

che 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/Rome

e 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_user

E 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 magento

2.

cd magento

3.

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.bz2
cd eaccelerator-0.9.5.3
phpize
./configure
make

viene 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)

3 Responses to “Vmware Magento Commerce 1.3.2.4 su Debian Lenny 5 (64bit)”

  1. Mauro scrive:

    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

  2. Mauro scrive:

    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

  3. Mauro scrive:

    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

Leave a Reply

preload preload preload