Como escalar automaticamente uma aplicação WordPress

2 de Julho de 2013 - 11:06
Por Grant Shipley, PaaS Evangelist (artigo original)
Traduzido por Mateus Caruccio, CEO na getupcloud.com

 

Sabemos como o WordPress é amplamente utilizado e na Getup não é diferente, diariamente são criadas novas aplicações usando WP. Só que o WordPress criado através do nosso Quickstart ou Instant App não é escalável por padrão. Isso se deve a forma como o WP armazena as mídias (imagens, uploads, etc).
Neste artigo, postado originalmente pelo Grant Shipley, vamos mostrar como criar uma aplicação escalável usando WordPress + Amazon S3.

Criando uma instância WordPress

Crie uma aplicação escalável na Getup para hospedar sua instância WordPress. Tudo o que você precisa fazer é executar o seguinte comando:

$ rhc app create wordpress php-5.3 -s

A opção -s informa que você quer criar sua aplicação escalável. Com isso os gears de aplicação serão acessados através de um balanceador de carga HAProxy e o MySQL será criado em um gear separado do gear de aplicação.
Para informações mais detalhadas sobre escalabilidade recomendamos uma leitura em um artigo publicado no blog do OpenShift ou em nossa base de conhecimento.

Adicionando MySQL

Como você sabe, WordPress requer o uso de um banco MySQL. Felizmente, o processo de adicionar um banco a aplicação recém criada é simples. Para adicionar suporte a banco para sua aplicação execute o seguinte comando:

$ rhc cartridge add mysql-5.1 -a wordpress

Após a execução deste comando, o nome de usuário e senha do administrador será mostrados no terminal. Anote estes dados, você irá precisar deles.
Se precisar resgatar estes valores, basta executar o seguinte comando:

$ rhc app show wordpress

Baixando o código WordPress

É mantido um quickstart que torna a instalação do WordPress realmente simples. Bastam apenas alguns comandos:

Nota: Execute o seguinte comando de dentro de seu repositório git, clonado para sua máquina local após a criação da aplicação WordPress:

$ git remote add upstream -m master git://github.com/openshift/wordpress-example.git
$ git pull -s recursive -X theirs upstream master

Criando os diretórios para seus temas e plugins

O código fonte do quickstart recém baixado assume que o usuário não quer utilizar um WordPress escalável. Por causa disso, o código cria um link simbólico para o diretório de temas e plugins que apontam para seu diretório de dados ($OPENSHIFT_DATA_DIR). Infelizmente, quando a aplicação escala, o diretório de dados não é sincronizado para o novo gear WordPress. Para corrigir isso, precisamos criar estes diretórios.
Troque para o diretório wordpress/php/wp-content e execute os seguintes comandos:

$ mkdir plugins
$ mkdir themes

Deploy de sua instância WordPress

Neste ponto, temos uma infraestrutura escalável criada, um banco MySQL instalado e configurado, e o código WordPress em seu repositório git local. Tudo que precisamos fazer agora é o deploy da aplicação:

$ git add .
$ git commit -am "My first deploy"
$ git push

Gerenciando temas e plugins

Para sincronizar corretamente seus temas e plugins entre os novos nós a medida que são criados, não se pode utilizar a interface web do WordPress para instalar estes items. Isto ocorre porque quando se utiliza a interface do WordPress para instalar temas, estes são armazenados no sistema de arquivos do primeiro gear da aplicação WordPress. Quando um novo gear é criado, o serviço sincroniza seu código a partir do repositório git, fazendo com que seja necessário instalar novamente os temas e plugins.

Para instalar um novo tema ou plugin, basta baixar o arquivo .zip do item desejado e extrair o conteúdo no diretório correspondente em sua máquina local. Por exemplo, para instalar um novo tema você salvaria o arquivo no diretório /php/wp-content/themes do WordPress e executaria os seguintes comandos:

$ unzip themeName.zip
$ rm themName.zip
$ git add .
$ git commit -am "Adding new theme"
$ git push

Assim que o push terminar, basta entrar no console web do WordPress e ativar o tema. O processo é o mesmo para os plugins.

E para escalar minhas mídias?

Por padrão, quando você faz upload de imagens ou outras mídias para o WordPress, o sistema armazena os dados no sistema de arquivos local. Isto se torna problemático pela mesma razão discutida a cerca dos temas e plugins. Felizmente existem diversos plugins que você pode instalar para gravar o upoad de suas mídias para um storage na nuvem. Para este artigo, estou armazenando todas as imagens no Amazon S3 para garantir que minhas mídias possam escalar assim como minha instância WordPress. Estou utilizando um plugin chamado Amazon S3 and Cloudfront.

Backups?

Sou paranóico quando o assunto é backup de meu software. Decidi adotar outro plugin chamado Updraft que faz backup de meu blog diariamente para minha conta dropbox.

Isto escala mesmo?

SIM! Rodei um teste de carga contra meu blog e por fim desliguei o teste após escalar até 10 servidores. O site estava rápipo e responsivo mesmo sob carga pesada, e todo o conteúdo e mídia foi servido corretamente.

Divirta-se e feliz scaling!

Tem mais dúvidas? Envie uma solicitação

0 Comentários

Por favor, entre para comentar.
Powered by Zendesk