Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🛠 Desenvolvimento remoto de WordPress com VS Code no Amazon EC2

🛠 Desenvolvimento remoto de WordPress com VS Code no Amazon EC2

Já perdeu um dia inteiro a tentar montar uma stack local de WordPress que, no fim, se comporta de forma diferente do seu servidor de produção? XAMPP, Docker, máquinas virtuais: cada opção falha no pior momento possível. A versão do PHP está errada, falta uma extensão ou o cliente abre uma página e vê um ecrã branco que nunca lhe apareceu localmente.

O Visual Studio Code consegue ligar-se a um servidor remoto via SSH com a mesma facilidade com que abre uma pasta no seu portátil. Não há magia envolvida: o seu código vai diretamente para uma instância Amazon EC2 onde já está a correr um servidor web completo com WordPress.

Abaixo encontra um guia passo a passo para configurar o VS Code + AWS EC2 para desenvolvimento de plugins e temas WordPress. Desde a criação de um utilizador Linux até guardar o seu espaço de trabalho, sem falhas e com explicação de cada passo.

💡 Visão geral rápida:

  • Criar um utilizador sudo num servidor Ubuntu e configurar chaves SSH
  • Preparar o seu cliente Windows: OpenSSH, ficheiro de configuração e chave privada
  • Ligar o VS Code ao servidor via Remote-SSH e abrir a sua pasta do WordPress
  • Guardar o espaço de trabalho para acesso rápido ao seu projeto

Pré-requisitos

Antes de configurar o desenvolvimento remoto, certifique-se de que o lado do servidor está pronto. Parto do princípio de que está em Windows 10 ou posterior e a começar a aprender sobre infraestrutura na cloud. Salte os passos que já concluiu.

Instância Amazon EC2 com Ubuntu e OpenLiteSpeed

Usamos uma Amazon Machine Image baseada em Ubuntu com o servidor web OpenLiteSpeed e uma stack LAMP completa otimizada para WordPress. Se ainda não configurou o servidor, os requisitos mínimos são Ubuntu 20.04 ou 22.04 LTS e pelo menos 2 GB de RAM. Com menos de 2 GB, o composer e o wp-cli irão falhar com erros de falta de memória em projetos de dimensão média.

Utilizador Linux com sudo

O acesso root é desnecessário e perigoso para o trabalho diário. Crie um utilizador normal com privilégios sudo. A DigitalOcean explica o processo no seu guia. Em resumo, dois comandos a partir do root ou com o prefixo sudo:

1adduser example

Introduza a palavra-passe duas vezes; para as restantes perguntas, pode simplesmente premir Enter. Depois adicione o utilizador ao grupo sudo:

1usermod -aG sudo example

Par de chaves SSH

O acesso SSH baseia-se num par de chaves. A chave privada (um ficheiro sem extensão ou .pem) é guardada na sua máquina Windows. A chave pública (um ficheiro .pub) é colocada no servidor na lista de chaves autorizadas. Vamos gerar um par diretamente no servidor:

1su - example
2mkdir .ssh
3chmod 700 .ssh
4touch .ssh/authorized_keys
5chmod 600 .ssh/authorized_keys
6ssh-keygen

Quando o ssh-keygen fizer perguntas, prima Enter três vezes (deixe a frase-passe vazia; no nosso cenário, não é necessária). Agora adicione a chave pública à lista de autorizadas e mostre a chave privada no ecrã:

1cat .ssh/id_rsa.pub >> .ssh/authorized_keys
2cat .ssh/id_rsa

Verá um bloco como este:

1-----BEGIN RSA PRIVATE KEY-----
2...
3-----END RSA PRIVATE KEY-----

Copie todo o conteúdo (incluindo as linhas delimitadoras) e guarde-o num ficheiro de texto no seu computador. O caminho poderá ser algo como:

1C:\Users\Example\.ssh\aws-example-user.pem

O nome do ficheiro é arbitrário. Crie a pasta .ssh dentro do seu perfil do Windows, na mesma localização do ficheiro de configuração do passo seguinte.

Ficheiro de configuração SSH para o Visual Studio Code

O VS Code lê as definições de ligação do ficheiro de configuração SSH padrão. Crie um ficheiro de texto com o nome config (sem extensão) na pasta C:\Users\Example\.ssh\ com o seguinte conteúdo (para mais detalhes sobre o formato, consulte man ssh_config):

1Host aws-ec2
2 HostName your-server-ip-or-domain.com
3 User example
4 IdentityFile C:\Users\Example\.ssh\aws-example-user.pem

Explicação das diretivas:

  • Host: um nome arbitrário apresentado no VS Code (título da janela e indicador de ligação no canto inferior esquerdo);
  • HostName: o endereço IP ou domínio da sua instância EC2;
  • User: o nome de utilizador Ubuntu criado anteriormente;
  • IdentityFile: o caminho absoluto para a chave privada na sua máquina Windows.

Cliente OpenSSH no Windows

O Windows 10 e 11 incluem um cliente SSH integrado, mas pode estar desativado por predefinição. Abra Definições → Aplicações → Funcionalidades opcionais → Adicionar uma funcionalidade. Localize OpenSSH Client na lista e clique em Instalar.

Instalar o cliente OpenSSH nas funcionalidades opcionais do Windows

Visual Studio Code e a extensão Remote Development

Transfira o VS Code: pode optar pela versão estável (ícone azul) ou pela edição Insiders (ícone verde, atualizações mais frequentes). Não há diferença para o desenvolvimento remoto.

Imediatamente após a instalação, adicione o pacote de extensões Remote Development da Microsoft. O pacote inclui três extensões. Duas delas (Remote, Containers e WSL) podem ser desativadas; não são necessárias para a nossa tarefa. Mantenha apenas Remote, SSH.

Configurar o desenvolvimento remoto

Ligar ao servidor

Selecionar o comando Remote-SSH: Connect to Host na paleta do VS Code
  • Prima F1 ou clique no botão laranja-escuro no canto inferior esquerdo da janela.
  • Comece a escrever Remote-SSH; a sugestão de preenchimento automático Remote-SSH: Connect to Host… aparecerá. Selecione-a e prima Enter.
  • Na lista pendente, escolha o nome especificado na diretiva Host do seu ficheiro de configuração, por exemplo, SSH: aws-ec2. O VS Code obtém a lista de anfitriões diretamente do seu config.
  • Pronto, está ligado. Uma nova janela será aberta; pode fechar a anterior.

A ligação é rápida e o editor parece responsivo porque apenas as diferenças dos ficheiros são enviadas pela rede, e não toda a interface.

Indicador de ligação SSH aws-ec2 no canto inferior esquerdo da janela do VS Code

Criar uma área de trabalho

  • Abra Ficheiro → Abrir Pasta… (ou prima Ctrl+K, depois Ctrl+O; prima as teclas sequencialmente, não em simultâneo).
  • No navegador de ficheiros que aparece, navegue até à raiz do WordPress, por exemplo, /var/www/example.com/. Pode colar o caminho manualmente e clicar em OK.

Todos os ficheiros do WordPress aparecerão no painel do Explorador, à esquerda. Para adicionar outras pastas do servidor à área de trabalho (por exemplo, o diretório de outro plugin ou tema), use Ficheiro → Adicionar Pasta à Área de Trabalho….

Árvore de ficheiros do WordPress na barra lateral do VS Code após ligação ao servidor

Agora guarde esta vista como uma área de trabalho para poder regressar ao projeto com um único clique:

  • Prima F1, comece a escrever save work e selecione Áreas de Trabalho: Guardar Área de Trabalho Como….
  • Guarde o ficheiro com o nome wp.code-workspace num local conveniente no servidor (a extensão .code-workspace será adicionada automaticamente).
  • Feche e reabra o VS Code; a área de trabalho aparecerá em Ficheiro → Recentes ou será carregada automaticamente se tiver sido a última a ser aberta.

Para alternar entre várias áreas de trabalho, use F1open work → selecione na lista.

Área de trabalho wp.code-workspace guardada na lista de projetos recentes do VS Code

Ligação simbólica (opcional)

Se estiver a desenvolver um plugin específico, é conveniente colocar os seus ficheiros de origem no diretório pessoal do utilizador e criar uma ligação simbólica para eles dentro do WordPress:

1ln -s /home/example/wp /var/www/dev.example.com/wp-content/plugins/my-plugin

O caminho da esquerda é a pasta real do projeto; o caminho da direita é a ligação simbólica dentro de wp-content/plugins. Isto isola o código do plugin do núcleo do WordPress e simplifica o controlo de versões.

⁉️🤔 Perguntas frequentes

Tenho de usar o Amazon EC2 ou outro VPS funciona?

Qualquer servidor com Ubuntu e acesso SSH funciona. DigitalOcean, Linode, Vultr, Hetzner: o processo de configuração é idêntico. O único requisito são pelo menos 2 GB de RAM para um desenvolvimento confortável em WordPress com debugging. Esta abordagem não funciona em alojamento partilhado; precisa de acesso root ou sudo. O VS Code Remote SSH não está vinculado a um fornecedor de cloud específico: pode ligar-se a qualquer máquina com o sshd ativo, até mesmo um Raspberry Pi na sua rede local. A única diferença é a latência; quanto mais próximo o datacenter, mais responsivo é o editor.

Tenho de pagar tráfego ao trabalhar através do VS Code Remote SSH?

O tráfego é mínimo. O VS Code envia apenas alterações de ficheiros e comandos de terminal por SSH; não são transmitidos pixels da interface nem binários de extensões. Um dia típico de desenvolvimento fica-se pelas dezenas de megabytes. As extensões (incluindo o próprio Remote-SSH) são instaladas no servidor uma vez, durante a primeira ligação, o que representa um custo único de algumas centenas de megabytes. Se tiver um limite de tráfego rigoroso, desative as atualizações automáticas das extensões no anfitrião remoto através de F1 → Preferences: Configure Runtime Arguments e adicione "remote.extensionDownloader.enabled": false. Mas para a grande maioria dos utilizadores, isto é desnecessário.

Posso trabalhar a partir de um servidor remoto num tablet ou telemóvel?

Tecnicamente, sim, através do VS Code for the Web num browser, mas com ressalvas. A versão de browser não suporta Remote SSH diretamente. Uma alternativa: configure o VS Code Server na instância (um produto separado, não o confunda com o Remote SSH) e ligue-se a ele a partir do seu browser. Para um tablet com teclado, é um cenário viável; para um telemóvel, é mais uma curiosidade. Uma opção mais prática é levar um portátil leve ou um Chromebook com subsistema Linux: toda a carga computacional permanece no servidor e o cliente consome recursos mínimos.

O que devo fazer se a ligação cair durante longos períodos de inatividade?

Configure o keepalive na sua configuração SSH. Adicione duas linhas à secção do seu anfitrião no ficheiro C:\Users\Example\.ssh\config: ServerAliveInterval 60 e ServerAliveCountMax 5. O cliente enviará um pacote keepalive a cada 60 segundos e manterá a ligação durante até cinco pacotes perdidos consecutivos, pelo que a ligação pode sobreviver até 5 minutos de silêncio total na rede. Uma alternativa: execute tmux ou screen no servidor para processos de longa duração, para evitar perder a sessão do terminal se a ligação cair.

É seguro guardar uma chave privada em texto simples numa máquina Windows?

Um ficheiro .pem sem frase-passe é, de facto, um texto simples que qualquer pessoa com acesso à sua conta Windows pode ler. Medidas de proteção por ordem crescente de segurança: (1) defina uma frase-passe ao criar a chave (o ssh-keygen perguntará; não prima Enter, introduza antes uma frase-passe); (2) guarde a chave numa partição encriptada (o BitLocker está ativo por defeito no Windows 11 Pro); (3) para ambientes de produção, utilize um agente SSH com uma chave física (YubiKey). Para um ambiente de desenvolvimento, uma opção de compromisso é uma chave com frase-passe: o VS Code recordá-la-á durante a sessão, só precisará de a introduzir uma vez por dia, mas a chave torna-se inútil sem a frase-passe, mesmo que o ficheiro seja comprometido.

O que escolher para o trabalho diário: Remote SSH ou uma stack local

O Remote SSH através do VS Code não é uma solução milagrosa. Se está a escrever um plugin que só precisa do wp-cli e de testes unitários, uma configuração local em Docker com o wordpress-develop compila num minuto e não requer acesso à internet. Mas se está a depurar a integração com uma API externa, a testar compatibilidade entre navegadores ou a mostrar o progresso a um cliente, um servidor remoto com um ambiente de produção ganha.

Para uma abordagem combinada, mantenha uma instância EC2 de desenvolvimento a correr continuamente (uma t3.small reservada tem um preço razoável) e ligue-se a ela a qualquer momento, de qualquer lugar. O código reside no servidor, as cópias de segurança automáticas estão ativas e não fica preso a uma máquina específica. Experimente: após uma semana de desenvolvimento remoto, não vai querer voltar ao XAMPP.