Uma variável de ambiente é um valor que a aplicação lê de fora do código: a palavra-passe da base de dados, uma chave de API, o endereço de um serviço. Põe-se fora do código por duas razões: o código vai para o Git e para outras pessoas, e o mesmo código corre em sítios diferentes (a sua máquina, o ensaio, a produção) com valores diferentes. O que muda é onde se define cada variável, consoante onde a aplicação corre.
Onde se define, em cada caso
| Onde corre |
Onde pôr as variáveis |
Depois |
| Node.js no cPanel |
No ecrã da aplicação, na parte das variáveis de ambiente (nome e valor). |
Guarde e reinicie a aplicação. |
| Python no cPanel |
No ecrã da aplicação, na parte das variáveis de ambiente. |
Guarde e reinicie. |
| PHP |
Num ficheiro .env fora da pasta pública, lido pelo código. Veja palavras-passe fora do código PHP. |
O código lê-o em cada pedido. |
| VPS com Node.js e PM2 |
No ecosystem.config.js, ou no ambiente do utilizador que corre a aplicação. |
pm2 restart nome --update-env. |
| VPS com systemd |
Num ficheiro apontado por EnvironmentFile= na unidade do serviço. |
sudo systemctl restart nome. |
| Docker Compose |
Num .env ao lado do compose.yaml (com env_file:), ou em environment:. |
docker compose up -d recria o contentor. |
Passo a passo, no cPanel
| 1 |
Escreva o código para ler a variável, não o valor. Em Node.js: process.env.DB_PASSWORD. Em Python: os.environ["DB_PASSWORD"] (ou os.environ.get("DB_PASSWORD") se pode faltar). Em PHP: getenv("DB_PASSWORD").
|
|
| 2 |
Abra «Setup Node.js App» ou «Setup Python App» e a sua aplicação.
|
|
| 3 |
Acrescente a variável: o nome (por convenção em maiúsculas, com sublinhados) e o valor. Guarde.
|
|
| 4 |
Reinicie a aplicação. Um processo só lê o ambiente quando arranca; uma variável nova ou alterada não chega a um processo que já estava a correr.
|
|
| 5 |
Confirme sem a mostrar. Faça a aplicação dizer apenas se a variável existe («definida» ou «em falta»), nunca o valor.
|
|
Numa unidade do systemd, no VPS, fica assim:[Service]
User=appuser
WorkingDirectory=/home/appuser/app
EnvironmentFile=/home/appuser/app/.env
ExecStart=/usr/bin/node app.js
Restart=on-failureO ficheiro tem uma linha NOME=valor por variável, sem export. O caminho do node confirma-se com which node. Depois: sudo systemctl daemon-reload e sudo systemctl enable --now nome.
|
Um segredo no código já é um segredo perdido. Se uma palavra-passe foi parar a um repositório, mesmo que depois apague a linha, ela fica no histórico: mude-a. Ponha o .env no .gitignore, dê-lhe permissões só para o dono (chmod 600 .env), e não o guarde na pasta pública do site. Não escreva o valor nos registos, nem em mensagens de erro.
|
|
No navegador não há segredos. As variáveis que as ferramentas de interface incluem no JavaScript do navegador (as que levam prefixos como NEXT_PUBLIC_ ou VITE_) ficam visíveis a qualquer visitante. Ali ponha só o que pode ser público; as chaves a sério ficam no servidor.
|
|
Use valores diferentes em cada sítio (ensaio e produção) e uma chave por serviço, com as permissões mínimas. Se uma chave vazar, muda-se uma só. Para obter e guardar chaves de IA, veja chaves de API de modelos. A ligação à base de dados tem os seus próprios detalhes em ligar a partir de Python e Node.js.
|
|
Pôs a variável e a aplicação continua a não a ver? Diga-nos o domínio e o nome da variável (nunca o valor), e vemos o que o servidor passa à aplicação.
Abrir um pedido de suporte
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |