Como instalar e configurar o xamp e phpmyadmin na vps Ubuntu.

Aprenda a montar um ambiente equivalente ao XAMPP na sua VPS Linux usando Nginx, MariaDB, PHP-FPM e phpMyAdmin — passo a passo para iniciantes.

Este guia é voltado pra quem está montando sua primeira VPS. Vamos do servidor recém-provisionado até o phpMyAdmin acessível pelo navegador com uma página PHP funcionando.

Pré-requisitos

Antes de começar, confirme que você tem o ambiente mínimo.

Pré-requisitos

Você precisa de uma VPS com Ubuntu 24.04 LTS (Debian 12 também funciona com pequenos ajustes), acesso SSH como root ou usuário com sudo, e ao menos 1 GB de RAM livre. Tenha em mãos o IP público da máquina e, opcionalmente, um domínio apontado pra ela.

Sistema Ubuntu 24.04 LTS
RAM mínima 1 GB
Portas necessárias 22, 80, 443, 3306
Acesso SSH com sudo

Nenhum dos pacotes deste guia exige compilação manual. Tudo vem dos repositórios oficiais do Ubuntu.

Atualização do sistema

Comece com o sistema em estado limpo. Repositórios desatualizados causam metade dos problemas em tutoriais como este.

01

Atualize o índice de pacotes e aplique upgrades pendentes:

sudo apt update && sudo apt upgrade -y

Esse comando lê os repositórios em /etc/apt/sources.list, baixa os manifestos atualizados e instala qualquer versão mais nova dos pacotes já presentes. Pode levar de 30 segundos a alguns minutos.

02

Instale utilitários básicos que vamos usar no caminho:

sudo apt install -y curl wget unzip software-properties-common

Instalação do Nginx

O Nginx vai exercer o papel que o Apache desempenha no XAMPP padrão. Receber requisições HTTP e, quando o arquivo é PHP, repassar pro PHP-FPM via socket.

03

Instale o pacote do Nginx:

sudo apt install -y nginx
04

Habilite e inicie o serviço:

sudo systemctl enable --now nginx

Acessando http://SEU_IP no navegador, você deve ver a página padrão “Welcome to nginx”. Se o firewall estiver bloqueando, libere as portas HTTP/HTTPS (80 e 443):

sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
Não esqueça do SSH

Sempre libere a porta 22 (OpenSSH) antes de ativar o UFW. Esquecer essa regra desconecta sua sessão atual e bloqueia futuras conexões. Você precisaria do console emergencial do painel da VPS pra recuperar.

Instalação do MariaDB

MariaDB é um fork drop-in do MySQL e é o que vem por padrão no XAMPP atual. Os comandos mysql continuam funcionando igual.

05

Instale o servidor:

sudo apt install -y mariadb-server
06

Rode o assistente de segurança pra remover defaults inseguros:

sudo mysql_secure_installation

Responda às perguntas assim:

  • Enter current password for root: deixe em branco (Enter)
  • Switch to unix_socket authentication: n
  • Change the root password?: Y — defina uma senha forte e anote
  • Remove anonymous users?: Y
  • Disallow root login remotely?: Y
  • Remove test database?: Y
  • Reload privilege tables now?: Y
07

Crie um usuário administrativo separado pro phpMyAdmin (mais seguro do que usar root):

sudo mysql -u root -p

Dentro do prompt do MariaDB:

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'TROQUE_ESTA_SENHA';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Instalação do PHP-FPM

PHP-FPM (FastCGI Process Manager) é o processo que o Nginx vai chamar pra executar scripts PHP. No XAMPP isso fica embutido no Apache via mod_php; com Nginx separamos em um daemon próprio.

08

Instale o PHP e as extensões mais comuns:

sudo apt install -y php-fpm php-mysql php-mbstring php-zip php-gd \
  php-curl php-xml php-bcmath php-intl

No Ubuntu 24.04 isso instala PHP 8.3 por padrão. Confirme com:

php -v
09

Verifique se o socket do PHP-FPM está ativo:

sudo systemctl status php8.3-fpm

Deve mostrar active (running). O socket fica em /run/php/php8.3-fpm.sock — é esse caminho que o Nginx vai referenciar.

Configuração do Nginx para servir PHP

Agora vinculamos os três componentes. Vamos criar um site dedicado que substitui a configuração padrão.

10

Crie o diretório web e ajuste permissões:

sudo mkdir -p /var/www/local
sudo chown -R www-data:www-data /var/www/local
11

Crie o arquivo de configuração do site:

sudo nano /etc/nginx/sites-available/local

Cole o conteúdo abaixo (substitua seu_dominio.com pelo seu domínio ou pelo IP da VPS):

server {
    listen 80;
    server_name seu_dominio.com;

    root /var/www/local;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
12

Ative o site, desative o padrão e recarregue o Nginx:

sudo ln -s /etc/nginx/sites-available/local /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

O comando nginx -t valida a sintaxe antes do reload. Se mostrar syntax is ok e test is successful, está pronto.

13

Crie um arquivo de teste pra confirmar que o PHP está sendo processado:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/local/info.php

Acesse http://SEU_IP/info.php no navegador. Você deve ver a tela colorida do phpinfo() com todas as informações da versão. Depois de confirmar, apague o arquivo — ele expõe detalhes que não devem ser públicos:

sudo rm /var/www/local/info.php

Instalação do phpMyAdmin

Com Nginx, PHP e MariaDB funcionando, agora adicionamos o painel de administração do banco.

14

Instale o pacote:

sudo apt install -y phpmyadmin

Durante a instalação:

  • Quando perguntar Web server to reconfigure automatically, não selecione nada (Apache nem Lighttpd) — pressione Tab e Enter pra pular. O Nginx não está na lista.
  • Em Configure database for phpmyadmin with dbconfig-common: Yes
  • Defina uma senha pro usuário interno do phpMyAdmin
15

Crie um symlink do phpMyAdmin pro diretório web:

sudo ln -s /usr/share/phpmyadmin /var/www/local/phpmyadmin
16

Acesse http://SEU_IP/phpmyadmin no navegador. Faça login com o usuário admin e a senha definida no Passo 07.

Restrinja o acesso ao phpMyAdmin

Expor /phpmyadmin publicamente é um vetor comum de ataque por força bruta. Em produção, adicione restrição por IP no bloco de location ou proteja com autenticação básica do Nginx via auth_basic e arquivo .htpasswd.

Verificação final

Uma série rápida de checagens confirma que tudo está conectado.

systemctl is-active nginx php8.3-fpm mariadb

O output deve ser três linhas com active. Caso algum mostre inactive ou failed, rode systemctl status NOME_DO_SERVICO pra ver o motivo.

No navegador, valide os dois endpoints:

  • http://SEU_IP/ — página em branco ou listagem (sem index.php ainda, é esperado)
  • http://SEU_IP/phpmyadmin — tela de login do phpMyAdmin

Resolução de problemas

Erro 502 Bad Gateway ao acessar arquivo PHP

Quase sempre é o caminho do socket do PHP-FPM errado. Verifique a versão real instalada:

ls /run/php/

Se o arquivo for php8.2-fpm.sock em vez de php8.3-fpm.sock, ajuste a linha fastcgi_pass no arquivo de configuração do Nginx e recarregue.

phpMyAdmin retorna 404

O symlink não foi criado ou o diretório web está diferente. Confira:

ls -la /var/www/local/phpmyadmin

Deve aparecer uma seta apontando pra /usr/share/phpmyadmin. Se não, refaça o ln -s do Passo 15.

Acesso negado ao logar no phpMyAdmin

O usuário admin precisa existir no MariaDB. Entre como root:

sudo mysql -u root -p

E rode SELECT User, Host FROM mysql.user;. Se admin não aparecer, refaça o CREATE USER do Passo 07.

Próximos passos

Com a stack funcionando, considere os próximos pontos:

  • HTTPS com Let’s Encrypt: instale o certbot e gere certificado gratuito pro seu domínio com sudo certbot --nginx.
  • Backups automáticos do MariaDB: configure mysqldump em cron diário com rotação semanal.
  • Ajuste de pools do PHP-FPM: em /etc/php/8.3/fpm/pool.d/www.conf, calibre pm.max_children conforme a RAM disponível.
  • Separação de usuário pra cada site: rode cada projeto sob um usuário Linux dedicado pra isolar permissões.

Se você está colocando essa stack em produção, uma VPS Hostini já vem com filtro de pacotes em kernel pra mitigar ataques DDoS — relevante quando o phpMyAdmin fica exposto, mesmo com restrição de IP.

Perguntas frequentes

Posso instalar o XAMPP original em uma VPS Linux ao invés de montar a stack manualmente?

Tecnicamente sim, o XAMPP tem instalador `.run` pra Linux, mas não é recomendado em servidor: ele roda como root por padrão, fica fora do gerenciador de pacotes (sem atualizações de segurança via apt), traz binários próprios que conflitam com os do sistema e usa Apache. Pra ambiente de produção, montar Nginx + PHP-FPM + MariaDB nativamente é mais seguro e leve.

Por que o Nginx não aparece na lista de servidores web quando instalo o phpMyAdmin?

O pacote `phpmyadmin` do Debian/Ubuntu só oferece configuração automática pra Apache e Lighttpd. Pra usar com Nginx, você pula essa etapa e cria manualmente um symlink do diretório `/usr/share/phpmyadmin` pra dentro do seu web root, como mostrado no tutorial.

Qual a diferença entre PHP-FPM e mod_php do Apache?

O `mod_php` roda dentro do processo do Apache, então cada requisição (mesmo de arquivos estáticos) carrega o interpretador PHP em memória. O PHP-FPM é um daemon separado que processa só requisições PHP, chamado via FastCGI pelo Nginx. Resultado: menor consumo de RAM e melhor isolamento entre o servidor web e o runtime PHP.

Preciso reiniciar o PHP-FPM toda vez que mudo um arquivo PHP?

Não. Arquivos `.php` são lidos a cada requisição automaticamente. Você só precisa reiniciar o PHP-FPM (`sudo systemctl restart php8.3-fpm`) quando muda configurações do próprio PHP — arquivos em `/etc/php/8.3/fpm/` como `php.ini` ou os pools.

É seguro deixar o phpMyAdmin acessível em /phpmyadmin?

Não em produção. Esse path é alvo constante de bots tentando força bruta. As mitigações comuns são: mover pra URL não-óbvia (ex: `/admin-db-x7k2`), restringir por IP no bloco location do Nginx (`allow IP; deny all;`), adicionar autenticação HTTP básica antes do login do phpMyAdmin, ou acessar só via túnel SSH.

Como sei qual versão do PHP foi instalada e como atualizo?

Rode `php -v` pra ver a versão atual. No Ubuntu 24.04 vem PHP 8.3 por padrão. Pra usar uma versão mais nova (ex: 8.4) você precisa do PPA `ondrej/php`: `sudo add-apt-repository ppa:ondrej/php && sudo apt update && sudo apt install php8.4-fpm`. Lembre de atualizar o caminho do socket no Nginx ao trocar a versão.

Próximos passos Cloud Ryzen com NVMe e proteção DDoS sempre ativa.Coloque em produção numa VPS Hostini →
Esse tutorial foi útil?
Falar no WhatsApp