Magento: Baixe e instale via SSH.

magento-logo

introdução

Neste artigo, vamos abordar a instalação do Magento, via SSH, no seu site. Ou seja, vamos usar uma shell para fazer o download e deixar o aplicativo pronto para ser configurado em seu servidor.
O uso do SSH vai tornar este processo mais fácil e rápido e, como vamos fazer tudo no servidor, haverá, provavelmente, o benefício da velocidade de download de todo os pacotes necessários.
Dependendo das suas necessidades, os seguintes artigos também podem ser úteis:

Se o seu servidor já estiver pronto, com PHP, MySQL e uma senha para acesso SSH, siga em frente.

Instalação do pacote completo


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

(Substitua o número  1.7.0.2 nos comandos pela versão que você deseja instalar. Você pode ver os números das versões disponíveis para download na página do MagentoCommerce).
Feito o download, descompacte o arquivo dentro do diretório no qual o Magento será instalado:

tar -zxvf magento-1.7.0.2.tar.gz

No próximo comando moveremos o conteúdo da pasta Magento para o nosso diretório atual, onde estamos instalando o aplicativo:

mv magento/* magento/.htaccess .

Vamos alterar as permissões iniciais dos arquivos e diretórios do Magento:

chmod o+w var var/.htaccess app/etc
chmod -R o+w media

2013-05-23-1369341950_1024x1368
O comando para remover os pacotes de instalação, bem como o que restou de seus arquivos, é opcional – ou você pode deixar para fazer isto mais tarde, quando o seu site estiver configurado e funcionando bem:

rm -rf magento/ magento-1.7.0.2.tar.gz

Cluster MySQL: Glossário.

MySQL.svg

O que é um Cluster?

No sentido genérico, um cluster é um conjunto de computadores funcionando em unidade para realizar uma determinada tarefa.

Cluster (Imagem: WikiMedia.)
Cluster (Imagem: WikiMedia.)

Um Cluster NDB é um mecanismo de armazenamento, usado pelo MySQL, para implementar o armazenamento de dados, recuperação e gestão distribuída entre os vários computadores que compõem o sistema.

O que é um Cluster MySQL

O termo MySQL Cluster se refere a um grupo de computadores fazendo uso de um mecanismo NDB para dar suporte ao banco de dados em um arquitetura shared-nothing com um sistema de armazenamento em memória principal (in memory).

O que é arquitetura shared-nothing?

A tradução literal livre é “nada compartilhado” e se refere a um sistema de computação distribuída, com unidades auto suficientes, sem ponto crítico de falha e que não compartilham armazenamento em memória ou disco. (Fonte: Wikipedia.)

O glossário

Para melhor ajudar iniciantes que desejam aprender sobre como construir um cluster MySQL, seguem mais termos, de acordo com os manuais oficiais da Oracle. Note que a maioria dos termos se encontra em inglês – por que desejamos facilitar a vida de quem está buscando este glossário para entender melhor algum outro material em inglês.

Configuration files

São arquivos contendo diretivas de funcionamento e informações concernentes ao nosso cluster, seus hosts (unidades hospedeiras, anfitriãs) e seus nós. São lidos pelo sistema assim que o cluster é iniciado.

Backup

Uma cópia integral dos dados do cluster, suas transações e seus arquivos de log salvos em discos ou em outros dispositivos de armazenamento.

Restauro

Ato de levar o cluster a um estado préviamente salvo no backup.

Checkpoint

Grosso modo, quando os dados são gravados em disco, diz-se que chegamos a um checkpoint. No caso do Cluster, para sermos mais específicos, é um ponto no tempo em que todas as transações autorizadas já foram armazenadas em disco.
No que tange o mecanismo de armazenamento NDB, podemos citar dois tipos de checkpoints que trabalham em conjunto para assegurar que uma visão consistente dos dados do cluster seja mantida:

  • Local Checkpoint (LCP): Este é o checkpoint que se refere especificamente a um nó. Um LCP envolve a gravação de todos os dados de um nó no disco, o que ocorre a cada x minutos — o intervalo x varia em função de fatores tais como a quantidade de dados contida em cada nó, o nível de atividade do cluster, entre outros.
  • Global Checkpoint (GCP): Este ocorre a cada x segundos, quando as transações para todos os nós são sincronizadas e o redo-log é liberado pro disco.
Cluster host

Um computador que seja parte de um Cluster MySQL. Um cluster tem tanto uma estrutura física como lógica. Fisicamente, consiste de um conjunto de computadores (cluster hosts) ou hosts. Consulte os termos (node) ou grupo de nós (group nodes).

Node, cluster node

…ou , refere-se a uma unidade lógica ou funcional de um Cluster MySQL. Dentre do contexto do Cluster MySQL, usamos o termo antes para nos referir a um processo em vez de um componente físico.
Há 3 tipos diferentes de nós requeridos para implementar um Cluster MySQL funcional. São os seguintes:

  1. Management (MGM) nodes ou nós de gestão/gerenciamento:
    • organizam os outros nós dentro do Cluster MySQL;
    • fornecem dados de configuração aos outros nós;
    • iniciam e terminam nós (processos);
    • entre outras funções.
  2. Nós SQL (SQL nodes): instâncias do servidor MySQL que funcionam como front ends pros dados mantidos nos nós de armazenamento do cluster. Clientes que desejem armazenar, recuperar ou alterar dados podem acessar um nó SQL tal como se estivessem acessando qualquer outro Servidor MySQL — fazendo uso das APIs e dos métodos de autenticação costumeiros; a distribuição subjacente de dados entre os node groups é transparente entre os usuários e os aplicativos. Os SQL nodes acessam integralmente os dados no banco do cluster sem se “preocuparem” com a forma como se encontram distribuídos entre os diferentes nós de armazenamento ou cluster hosts.
  3. Data nodes: também conhecidos como storage nodes ou, em bom português (quanta pretensão da minha parte!), nós de dados ou nós de armazenamento. Enfim, a função destes nós é armazenar os dados reais. A tabela de dados fragmentados é guardada em um conjunto de node groups — cada qual guarda um subconjunto diferente da tabela de dados. Cada nó, sendo parte de um grupo de nós, armazena uma réplica do fragmento pelo qual o grupo é responsável. Atualmente, um único cluster pode carregar um total de 48 nós de dados;

Nada impede que mais de um nó coexistam em uma única máquina. Mais do que isto: é possível ter um cluster completo rodando dentro de uma única máquina — embora seja totalmente desaconselhável em um ambiente de produção, pode ser um cenário muito útil e até recomendável em um ambiente de aprendizado.
Lembre-se, no contexto de um Cluster MySQL, quando falamos em hospedeiros, ou hosts, nos referimos a um componente físico do cluster, no qual um nó é um compoente lógico ou funcional (ou seja, um processo).

Node group

Um conjunto de nós de dados (data nodes). Todos os nós de dados em um conjunto, contém os mesmos dados (fragmentos) e cada nó pertencente a um determinado grupo precisa estar hospedado em uma máquina diferente.

Node failure

Um Cluster MySQL não precisa de cada um de seus nós para funcionar. O cluster pode continuar rodando, mesmo com a falha de um ou mais nós. O número preciso de falhas em nós que um cluster pode tolerar depende do número total destes e das configurações do sistema.

Node restart

É o processo de reiniciar um dos nós do cluster que tenha falhado.

Initial node restart

É o processo de iniciar um nó cluster sem o seu sistema de arquivos. É útil em alguns casos de upgrade de software e em outras circunstâncias específicas.

System crash ou system failure

Falhas no sistema, como um todo, podem ocorrer em casos de haver tantos nós do cluster com erros que a estabilidade geral do sistema fica comprometida ou não pode ser mais garantida.

System restart

É o processo de reiniciar o cluster e seu estado a partir de logs de disco e checkpoints.

Fragmento

Uma porção de uma tabela. Em um mecanismo de armazenamento NDB, uma tabela é fracionada e armazenada em fragmentos. No Cluster MySQL as tabelas são fragmentadas para facilitar o balanceamento da carga entre máquinas e nós.
Nota: É possível encontrar o termo “partição” (partition) na documentação formal do MySQL, com o mesmo significado. No entanto, o termo recomendado é “fragmento” (fragment).

Replica

No mecanismo NDB de armazenamento, cada fragmento de tabela armazena os números de replicas contidos em outros nós de armazenamento — para manter a redundância. Atualmente, pode haver até quatro réplicas por fragmento.

Transporter

Protocolo que proporciona transferência de dados entre nós. O Cluster MySQL atualmente suporta até 4 tipos diferentes de transporter connections: TCP/IP (local), TCP/IP (remoto), SCI, e SHM.

  • O TCP/IP é, naturalmente, aquele mesmo protocolo que dá sustentação ao HTTP, FTP etc na Internet, que você já conhece;
  • O SCI (Scalable Coherent Interface) é um protocolo veloz usado na montagem de sistemas multiprocessador e aplicações de processamento paralelo. O uso deste protocolo com o Cluster MySQL requer hardware especializado;
  • SHM é sigla para Unix-style shared memory segments ou segmentos de memória compartilhada “no estilo do Unix”, em uma tradução literal.

Nota: O transporter do cluster é um protocolo interno. Aplicações usando o MySQL se comunicam com os nós SQL tal como o fazem com outras versões do MySQL Server (via TCP/IP ou Windows named pipes/Unix Sockets). Através de suas APIs padrão, podemos enviar queries e receber resultados.

NDB

Sigla para Network Database. Refere-se ao mecanismo de armazenamento usado para fazer funcionar o MySQL Cluster. O NDB suporta os tipos mais comuns de colunas e comandos MySQL, além de ser ACID-compliant. Este mecanismo também oferece suporte pleno a transações (commits e rollbacks).

share-nothing architecture

Conceito de arquitetura ideal para um Cluster MySQL. Em um ambiente genuinamente share-nothing, cada nó roda em um host separado. A vantagem desta concepção é que, nela, nenhum host ou nó pode sozinho derrubar ou se tornar um gargalo pras atividades do sistema como um todo.

In-memory storage

Toda informação armazenada em cada nó de dado é guardado na memória do computador em que este se encontra hospedado. Para cada nó de dados (data node) no conjunto, é necessário ter disponível uma quantidade de RAM igual ao tamanho dos dados multiplicado pelo número de replicas, dividido pelo número de nós de dados.
Para exemplificar, se o banco de dados ocupa um gigabyte de memória, e você deseja configurar o cluster com quatro replicas e 8 nós de dados, uma reserva de, no mínimo, 500 MB de memória será necessária por nó. Some a este valor os requisitos necessários para rodar o sistema operacional e os demais aplicativos da máquina.

Tabela

Como de hábito, no contexto de um banco de dados relacional, o termo “tabela” denota um conjunto ordenado de registros estruturados e idênticos. Em um Cluster MySQL, um banco de dados é armazenado em um nó de dados na forma de um conjunto de fragmentos — cada um dos quais é replicado em outros nós de dados. Este conjunto de dados, que reproduz o mesmo fragmento ou conjunto de fragmentos, é chamado de grupo de nós (node group).

programas do Cluster

São programas em linha de comando usados para rodar, configurar e administrar o Cluster MySQL. O que inclui ambos daemons de servidor:

  • ndbd – daemon que executa o processo de dados do nó;
  • ndb_mgmd – executa o servidor de gestão.
Programas clientes
  • ndb_mgm – O cliente de gestão (oferece uma interface para executar os programas de gestão)
  • ndb_waiter – Usado para verificar o status de todos os nós em um cluster
  • ndb_restore – Recupera dados do cluster do backup
Event log

O Cluster MySQL registra (log) os eventos por categoria (início, desligamento, erros, checkpoints etc.), prioridade e pela sua gravidade.
Os registros são divididos em 2 tipos:

  • Cluster log – mantém um registro de todos os eventos relacionados ao cluster, como um todo;
  • Node log – um registro (log) separado é criado e mantido para cada nó individualmente.

Sob circunstâncias normais, é necessário e suficiente manter e examinar apenas o log do cluster (cluster log). Os node logs, normalmente só são necessários para desenvolvedores de aplicativos e para fins de depuração.

Como instalar um servidor FTP no Linux Debian (vale pro Ubuntu também)

Instalar um servidor FTP é tão simples que eu não precisaria de mais de um parágrafo para tratar deste assunto objetivamente.
Mas este artigo vai falar além da instalação. Vou abordar alguns aspectos que surgem após a instalação e a configuração do FTP para que ele te sirva melhor.
As dicas aqui são voltadas para quem tem um sistema Linux baseado na distro Debian (é o caso do Ubuntu). Mas podem ser facilmente adaptadas a outras distros.

Como instalar o FTP

O servidor FTP do qual vamos tratar aqui é o popular proFTPd. Sua instalação pode ser feita em uma única linha de comando:

  • Abra uma terminal (Ctrl + Alt + T)
  • Dê o seguinte comando:sudo apt-get install proftpd

Durante o processo de instalação, o Debconf vai perguntar se você deseja usar o inetd ou o autônomo (versão em português). A última costuma ser a mais indicada para a maioria das pessoas – além do fato de que usar o inetd vai pedir outras configurações…

2013-04-22-1366655411_1024x600

Como configurar proftpd

Feita a instalação, alguns ajustes podem ser benvindos no arquivo de configuração. No Debian ele costuma ser /etc/proftpd/proftpd.conf. No Ubuntu ele é /etc/proftpd.conf.
Uma dica rápida: com o comando man proftpd você pode descobrir onde ficam os arquivos de configurações deste ou outro aplicativo, dentro da seção FILES.
apague-me-Sem título

O diretório home do usuário FTP

Para que cada usuário tenha acesso apenas aos seus próprios arquivos, descomente a linha
DefaultRoot ~.

Como permitir acesso anônimo ao servidor FTP

Há uma seção dentro do proftpd.conf  que trata disto. Normalmente, basta descomentar as linhas desta seção. Veja como está no meu arquivo. Se for o caso, adapte para as suas necessidades:

<Anonymous ~ftp>
User ftp
Group nogroup
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp

# Cosmetic changes, all files belongs to ftp user
DirFakeUser on ftp
DirFakeGroup on ftp

RequireValidShell off

# Limit the maximum number of anonymous logins
MaxClients 10

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
<Limit>
<Directory>
</Anonymous>

Com estas opções os seus usuários poderão acessar o seu servidor como anonymous e ftp. Não poderão fazer uploads, apagar ou alterar arquivos. O acesso, neste caso, é só para leitura.

Mensagem de boas vindas

A mensagem de boas vindas (welcome message) do seu servidor proFTPd pode ser alterado em /home/ftp/welcome.msg. Trata-se de um arquivo de texto simples que é exibido pros usuários assim que autenticam.

Por último…

… mas, nem por isto, menos importante. Para que as alterações feitas ao arquivo de configuração tenham efeito, é necessário reiniciar o servidor FTP:
sudo /etc/init.d/proftpd restart

Divirta-se e não se esqueça de compartilhar! 😀

Como configurar o VI para fazer realce de sintaxe.

Aqui, o assunto vai ser um editor de textos simples presente em quase todas as distro Linux, justamente por ser extremamente leve (acho que este não é bem o caso do vim) e, além de tudo, é extremamente ‘espartano’ no seu visual.
Não se engane com “as roupas simples” do nosso amigo. Ele tem mais recursos que o leafpad, gEdit ou o Notepad (Windows).
Gosto de algumas coisas no vi. A possibilidade de executá-lo dentro de um terminal transparente e poder editar os meus arquivos de configuração e contemplar o meu papel de parede preferido enquanto trabalho, é uma delas. A leveza deste aplicativo completo salta aos olhos.
Gostaria de dizer ao leitor, da maneira mais polida possível, que, se você não sabe o que é o vi ou o vim, este texto provavelmente não é pra você. Desculpe. 😉

Alternativas ao editor vi

há várias outras alternativas disponíveis por aí. É sempre disso que estamos falando, quando o assunto é software livre: escolhas e liberdade de escolha.
Uma, que eu gosto muito é o nano e ele já tem o recurso syntax highlighting disponível como padrão e costuma vir ‘empacotado’ na maioria das distro.

Como ativar o syntax highlighting no vi

O caso, aqui, é simples para ser resolvido.
Inicie o vi, com o arquivo código do seu programa (eu vou usar o ‘startx’, no exemplo):

vi /usr/bin/startx

Dentro do editor, digite o seguinte comando:

:set syntax on

Isto deve resolver o problema.

Ops! Mensagem de erro E319…

Você ainda está aqui? Recebeu uma mensagem de erro?
vimrc-config2
A versão mais simplificada do vi não tem o recurso de realce da sintaxe do código. Isto gera a mensagem de erro: “E319: Sorry, this command is not available in this version”.
Para resolver isto, instale a versão mais avançada, vim (vi improved):

sudo apt-get install vim

, nas distro debian based, como é o caso do Ubuntu.

Editando o arquivo de configuração do vim

Uma solução definitiva e melhor é editar o arquivo de configuração do vim.
Abra-o com o seu editor favorito e edite a linha syntax off para syntax on. Se estiver apenas comentado, retire os “#”, tal como na figura:
vimrc-config
No Ubuntu, o arquivo de configuração do vim é /etc/vim/vimrc. Ao editá-lo, a solução torna-se definitiva.
Happy coding!

Como copiar arquivos recursivamente no linux (no terminal)

Você provavelmente veio parar aqui por que usou um comando semelhante a este:
cp -r /origem/*.mp3 /destino/
e não funcionou.
Há várias formas de fazer isto, com arquivos de qualquer extensão (*.mp3, *.jpg, *.txt etc.). Como você já sabe, cp -r não é uma delas.

Como copiar arquivos recursivamente com os comandos find e cpio

Estes comandos dão conta do recado. O primeiro encontra os arquivos do tipo desejado, recursivamente. O outro faz a cópia, mantendo a estrutura de diretórios.
Adapte a linha de comando, que segue, para que ela atenda às suas necessidades.
$ find /caminho/de/origem/ -name ‘*.mp3’ | cpio -pdm /caminho/de/destino/

LEIA MAIS

Veja o que as opções ‘-pdm’ fazem:

  • -p habilita a operação de cópia recursiva
  • -d cria a estrutura de diretórios no destino, de acordo com a original
  • -m preserva as datas de modificação dos arquivos