Seria ótimo se tivesse um botão no admin para fazer a atualização, mas não é tão simples assim. Você pode estar pensando, “mas e Magento Connect?” Ele não é tão eficiente assim, acredite. Hoje neste tutorial irei explicar como fazer a atualização de sua loja Magento. Este tutorial foi testado com a versão 1.5.1.0 para 1.9.0.1.

Para este tutorial você irá precisar:

* Acesso SSH ao servidor
* Conhecimento de comandos Shell
* Conhecimentos do Magento
* Conhecimentos de MySQL

Caso você não tenha conhecimento necessário PARE agora e contrate alguém para fazer a sua atualização. Este tutorial PODE e IRÁ quebrar a sua loja se você não souber o que está fazendo. Qualquer problema causado por este tutorial não é de responsabilidade da MagentoBR e não há nenhuma garantia de funcionamento ou de suporte!

Nós recomendamos que a atualização seja feito em ambiente de desenvolvimento e não no ambiente de produção! Faça vários testes no seu ambiente de desenvolvimento antes de atualizar o ambiente de produção.

Antes de tudo você precisa fazer BACKUP!

Para este passo você precisa verificar qual o caminho para a sua loja.
No meu exemplo: /var/www/vhosts/loja.com
Vamos abrir a pasta /var/www/vhosts:

cd /var/www/vhosts

Agora que vamos salvar toda a pasta loja.com:

tar -cvf backup_loja.tar loja.com

Agora já temos o backup dos arquivos, precisamos fazer um backup do banco de dados. Você precisa saber qual o nome do banco de dados que você utiliza, para nosso exemplo será: loja_magento.
Execute o seguinte comando (será necessário informar a senha):

mysqldump -u root -p loja_magento > loja_magentosql

Agora que já temos o backup vamos atualizar o Magento. Primeiro abra a pasta onde está o Magento.

cd /var/www/vhosts/loja.com

Nosso segundo passo é baixar o Magento 1.9:

wget http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz
tar xvf magento-1.9.0.1.tar.gz

Vamos abrir o arquivo .htaccess e alterar o máximo de memória que pode utilizar e o tempo máximo de execução do PHP. Tome muito cuidado com os números, diminue ou aumente caso seja necessário.

php_value memory_limit 2048M
php_value max_execution_time 90000

Agora vamos limpar todos os caches e atualizar o apache/nginx. Caso você utilize Ubuntu/Debian utilize apache2, no exemplo utilizamos CentOS/RHEL. Caso tenha Varnish adicione mais uma linha com o Varnish.

rm -rf var/cache/* var/session/* var/locks/* var/full_page_cache/* tmp/*
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
service httpd restart

Vamos remover agora a pasta downloader e app/design/frontend/base. Vamos remover estes arquivos para não ter problemas com arquivos que foram alterados. Execute o comando:

rm -rf downloader
rm -rf app/design/frontend/base

O nosso próximo passo é copiar os estas pastas que removemos direto da versão nova, execute o comando:

cp -a magento/downloader .
cp -a magento/app/design/frontend/base/ app/design/frontend/

Vamos utilizar também o arquivo mage da versão nova. Execute:

cp magento/mage .
chmod 755 ./mage

Antes de fazer a atualização nós precisamos ter certeza que o Connect está configurado para Stable. Execute o comando:

./mage config-set preferred_state stable

Vamos agora copiar todos os arquivos do Magento novo. Para ter certeza que todos os arquivos foram copiados, vamos rodar o mesmo comando 3 vezes. Execute o seguinte comando:

for i in {1..3}; do yes | cp -Rf magento/* .; done

Agora vamos fazer a atualização utilizando mage, para isso execute o comando:

./mage mage-setup .
./mage sync --force
./mage install http://connect20.magentocommerce.com/community Mage_All_Latest --force

Depois de terminar a atualização vamos limpar o cache e alterar a permissão do arquivo mage. Execute:

rm -rf var/cache/* var/session/* var/locks/* var/full_page_cache/* tmp/*
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
chmod 755 mage

Vamos atualizar  os índices da loja. Você poderá encontrar um erro neste passo, ignore e continue com o tutorial. Execute o comando:

php shell/indexer.php reindexall

Calma que ainda falta. Vamos agora atualizar os módulos que não são de base do Magento.

./mage upgrade-all --force

Agora que terminamos de atualizar os arquivos do Magento, vamos setar as permissões corretas:

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 777 {} \;
chmod 755 mage
chmod o+w var var/.htaccess app/etc
chmod -R o+w media
chmod -R 777 var/package var/locks var/report var/export downloader

Lembre de atualizar a permissão de usuário na pasta do Magento. Neste exemplo utilizarei o apache (CentOS/RHEL). Para Ubuntu/Debian utilize www-data:

chown -R apache:apache *

Pronto, a atualização dos ARQUIVOS está completa. Falta atualizar o banco de dados. Esta parte é automatizada, você somente precisa abrir a sua loja.
Logo você verá que a loja não irá abrir, fica somente lendo e nada. Isto significa que o banco de dados está sendo atualizado. Este passo pode demorar VÁRIOS minutos e você terá que ser paciente.
Recomendo que você vá ver TV, jogar algo, comer, o que seja. Para você ver se algo está acontecendo no seu banco de dados você pode executar o comando:

watch -n 5 mysqladmin -p processlist

Caso acontece algum erro, como aconteceu comigo, o erro irá aparecer na página inicial. Normalmente é alguma tabela no banco de dados que não existe, esta informação estará no erro. Nós precisamos criar esta tabela no banco de dados, mas precisamos saber qual a estrutura dela. Para isso acesse o seguinte site que contém todas as tabelas: http://www.magereverse.com/index/magento-sql-structure/version/1-7-0-2

Faça a busca pela tabela que está no erro e copie a parte referente à tabela. Agora utilizando algum sistema de administração do MySQL (phpMyAdmin) você pode criar a tabela necessária utilizando a informação que foi copiada.
Depois de criar a tabela você pode atualizar a página inicial de sua loja e você verá que a página irá ficar lendo novamente sem abrir. Caso a loja pare de funcionar, verifique no banco de dados se algo está acontecendo. Pode ser que o tempo máximo de execução do PHP tenha acabado.

Depois de ter sido atualizado você precisará remover alguns arquivos do Google Checkout devido à um erro que acontece ao abrir o admin, execute o comando abaixo:

rm -rf app/code/core/Mage/GoogleCheckout/etc/adminhtml.xml
rm -rf app/code/core/Mage/GoogleCheckout/etc/system.xml
rm -rf app/code/core/Mage/GoogleCheckout/etc/wsdl.xml
rm -rf app/code/core/Mage/GoogleCheckout/etc/wsi.xml

Vamos atualizar os índices novamente e desta vez não deve aparecer nenhum erro:

php shell/indexer.php reindexall

Sua loja já deve estar sem problemas para acessar e o admin também já deve estar funcionando. Mas logo no começo deste tutorial nós removemos a pasta app/design/frontend/base e vários módulos colocam seus arquivos aqui. Será necessário fazer o upload dos arquivos de seu módulo que vão aqui.

Este tutorial tem como fonte: http://duntuk.com/magento-upgrade

Espero que este tutorial tenha lhe ajudado à atualizar a sua loja.

Até a próxima!