Instalar uma stack LAMP num VPS Linux com Ubuntu 24.04

2 min
Alojamento VPS/VDS

Uma stack LAMP (Linux, Apache, MariaDB, PHP) é a base clássica do WordPress, do Laravel e da maioria das aplicações PHP. Neste guia, vai montá-la passo a passo num VPS Linux Infrawire novo com Ubuntu 24.04, com um virtual host dedicado e uma firewall que expõe apenas o necessário.

📋 Pré-requisitos

  • Um VPS KVM com Ubuntu 24.04 (o IP e a palavra-passe root estão na sua área de cliente)
  • Acesso SSH como root ou como utilizador com permissões sudo
  • Um domínio example.com cujos registos A (e AAAA) apontam para VPS_IP

Os comandos abaixo assumem que é root. Caso contrário, anteponha sudo.

1. Atualizar o sistema

Bash
apt update && apt upgrade -y

2. Instalar o Apache

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

O serviço arranca de imediato e inicia com o sistema.

3. Instalar o MariaDB

O MariaDB está nos repositórios do Ubuntu e substitui o MySQL sem alterações. Se preferir o MySQL da Oracle, instale mysql-server, mas nunca os dois na mesma máquina.

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

No assistente, mantenha a autenticação unix_socket para o root, defina uma palavra-passe forte se lhe for pedida, remova os utilizadores anónimos, proíba o login remoto do root e elimine a base de dados de teste. Depois crie uma base de dados e um utilizador dedicados à sua aplicação:

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. Instalar o PHP 8.3

O Ubuntu 24.04 inclui o PHP 8.3 nos repositórios predefinidos, por isso não precisa de nenhum PPA adicional.

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

O pacote libapache2-mod-php muda o Apache para o MPM prefork automaticamente e carrega o módulo PHP.

5. Criar um virtual host e ativar o mod_rewrite

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

AllowOverride All ativa os ficheiros .htaccess, dos quais dependem os URL amigáveis do WordPress ou do Laravel. Ative agora o módulo e o site e desative a página predefinida:

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

configtest deve responder Syntax OK antes de recarregar.

6. Configurar a firewall

Permita primeiro o SSH, caso contrário ficará bloqueado ao ativar a firewall.

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

O perfil Apache Full abre as portas 80 e 443. Não abra a porta 3306: o MariaDB só precisa de escutar localmente.

7. Testar o PHP e apagar o ficheiro de teste

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

Deverá obter HTTP/1.1 200 OK. Abra http://example.com/info.php no navegador para ver a página de configuração do PHP. Uma página phpinfo() revela versões, caminhos e módulos, por isso apague-a de imediato:

Bash
rm /var/www/example.com/public_html/info.php

Verifique também os restantes componentes:

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ Resolução de problemas

A página predefinida do Apache continua a aparecer. O site predefinido ainda está ativo ou o DNS ainda não propagou. Execute a2dissite 000-default.conf, recarregue o Apache e teste com curl -I -H 'Host: example.com' http://VPS_IP/.

403 Forbidden. Verifique se o diretório tem Require all granted, se o www-data consegue ler os ficheiros (ls -ld /var/www/example.com/public_html) e consulte o registo /var/log/apache2/example.com-error.log.

O navegador descarrega o ficheiro PHP em vez de o executar. O módulo PHP não está carregado. Execute apache2ctl -M | grep php e depois systemctl restart apache2. Se nada aparecer, reinstale o libapache2-mod-php.

As regras de reescrita são ignoradas (404 em URL amigáveis). Confirme que executou a2enmod rewrite e que o seu bloco <Directory> contém AllowOverride All.


🎉 A sua stack LAMP está pronta: Apache, MariaDB e PHP 8.3 preparados para alojar o seu primeiro site.

Fique a par das últimas ofertas, descontos e promoções especiais.

Ver promoções

Utilizamos cookies

Utilizamos cookies analíticos para melhorar a sua experiência no nosso site. Nenhum dado é vendido a terceiros. Saiba mais na nossa política de privacidade.