Visão geral da LÂMPADA
Neste tutorial, vou explicar como instalar um servidor LAMP no Ubuntu 22.04.
LAMP significa Linux Apache MariaDB PHP, é um conjunto de software que encontramos frequentemente quando queremos correr um servidor Web.
Com o LAMP pode operar:
- O CMS mais famoso como o WordPress
- GLPI
- Nextcloud
- Aplicações usando Symfony, CakePHP
- …
Para a parte Linux, irei utilizar a distribuição Ubuntu 22.04.
Para além da instalação dos componentes, darei algumas explicações neste tutorial, bem como alguns elementos de configuração.
Não vou falar sobre a instalação do Ubuntu neste tutorial e iremos directamente para a parte do software AMP.
Apache2 – Servidor Web
O Apache2 será o serviço web, será responsável pelo processamento dos pedidos HTTP e HTTPS.
Instalar o Apache2 no Ubuntu 22.04
Para instalar o Apache2 digite o seguinte comando:
sudo apt install apache2
Confirme a instalação dos pacotes, pode adicionar -y ao comando de instalação para não ter confirmação
Aguarde enquanto instala o Apache2…
O servidor Apache2 está instalado.
Teste como funciona o Apache 2
A forma mais fácil de testar a operação é aceder ao servidor.
Inicie um browser e introduza o endereço IP do servidor como url http://w.x.y.z
Deverá chegar à seguinte página:
A página de índice encontra-se na seguinte pasta: /var/www/html
Esta pasta contém o conteúdo padrão do site.
Ficheiros de configuração do Apache2
Os ficheiros de configuração do Apache estão localizados no seguinte local no Ubuntu 22.04: /etc/apache2
O ficheiro de configuração principal do Apache2 é o apache2.conf.
No Ubuntu e no Debian encontramos várias pastas como esta:
- xxxxx-available
- xxxxx-enabled
Nas pastas xxxxx disponíveis iremos encontrar os elementos de configuração disponíveis não aplicados ao Apache2 e na pasta xxxxx-enabled iremos encontrar as configurações que estão carregadas.
Geralmente para aplicar uma configuração, disponibilizamos um link simbólico do ficheiro localizado em xxxxx na pasta habilitada para xxxxx.
Alguns comandos úteis para o Apache2
Aqui está uma lista de comandos para o Apache2:
Ver estado do serviço:
sudo systemctl status apache2
Recarregue a configuração do Apache2
sudo systemctl reload apache2
Pare o serviço Apache2:
sudo systemctl stop apache2
Inicie o serviço Apache2:
sudo systemctl start apache2
Reinicie o serviço Apache2:
sudo systemctl restart apache2
Activer le service Apache2 au démarrage de Ubuntu :
sudo systemctl enable apache2
Teste a configuração dos ficheiros Apache2;
sudo apachectl configtest
Apache2: criar um host virtual baseado no nome
Adicionar um host virtual permite executar vários sites no mesmo servidor web Apache2.
O facto de ser baseado no nome (URL) permite que vários hosts virtuais utilizem o mesmo endereço IP e as portas 80 e 443. O Apache2 utilizará o url (nome de domínio) para processar pedidos e entregar o conteúdo correto.
Para ilustrar este tutorial, vou criar um virtualhost com base no nome que terá o url lamp.rdr-it.com
Comece por criar uma pasta que irá receber os ficheiros:
sudo mkdir /var/www/lamp
Na pasta /etc/apache2/sites-available, iremos criar um ficheiro que conterá a configuração do site.
sudo nano /etc/apache2/sites-available/lamp.rdr-it.com.conf
Aqui está o conteúdo do ficheiro:
Elementos a modificar:
- Linha 2: ServerName é o nome de domínio do site
- Linha 5: DocumentRoot indica o caminho onde os ficheiros do site estão armazenados no servidor (corresponde à pasta criada anteriormente).
- Linha 7 e 8: Nome dos ficheiros de registo do Apache2
Vamos agora criar um link simbólico do ficheiro na pasta /etc/apache2/sites-enables para activar a configuração do virtualhost.
sudo ln -s /etc/apache2/sites-available/lamp.rdr-it.com.conf /etc/apache2/sites-enabled/
Teste a configuração do Apache 2:
sudo apachectl configtest
Se não for devolvido nenhum erro de bloqueio, reinicie o serviço Apache2:
sudo systemctl restart apache2
Agora tem um site que pode responder ao URL http://lamp.rdr-it.com.
Para que o virtualhost funcione, deve apontar o nome de domínio para o IP do servidor Apache2 e criar pelo menos um ficheiro index.html.
Adicione regras UFW para Apache2
Se tiver activado a firewall no Ubuntu 22.04 com UFW, precisa de adicionar regras para permitir o tráfego para as portas 80 e 443 do Apache.
Existem várias soluções para tal:
Utilize os aplicativos:
sudo ufw allow Apache Full
Por portas para permitir o tráfego nas portas 80 e 443:
sudo ufw allow 80
sudo ufw allow 443
MariaDB – Servidor de base de dados
Passaremos agora para o servidor de base de dados que irá armazenar os dados, neste tutorial irei utilizar o MariaDB, para o MySQL é quase a mesma coisa.
Instalar MariaDB no Ubuntu 22.04
Para instalar o servidor de base de dados MariaDB digite o seguinte comando:
sudo apt install mariadb-server -y
Na captura não coloquei a opção -y, tive de confirmar a escolha.
Assim que a instalação estiver concluída, verifique o funcionamento do servidor MariaDB:
sudo systemctl status mariadb
O servidor MariaDB está instalado e funcional.
Criando uma base de dados e um utilizador
Vamos agora criar uma base de dados (lâmpada) e um utilizador (lâmpada) no servidor MariaDB.
Para começar, deve ligar-se ao servidor MariaDB com o seguinte comando :
sudo mysql
Vamos agora utilizar a linguagem SQL para a criação da base de dados, do utilizador e da atribuição de direitos.
Para criar a base de dados:
CREATE DATABASE lamp;
Para verificar se a base de dados foi criada, insira a seguinte consulta:
SHOW DATABASES;
Vamos agora criar o utilizador da lâmpada que terá a password lamp-password e que poderá ligar-se a partir de qualquer endereço IP:
CREATE USER 'lamp'@'%' IDENTIFIED BY 'lamp-password';
O % permite ligar a partir de qualquer endereço IP, para limitar a ligação ao local, substitua por localhost.
Agora deve conceder os direitos da base de dados ao utilizador, para tal, faça os seguintes pedidos:
GRANT ALL PRIVILEGES ON lamp.* TO 'lamp'@'%';
FLUSH PRIVILEGES;
O primeiro pedido concede todos os direitos às tabelas (.*) na base de dados de lâmpadas ao utilizador ‘lamp’@’%’
A segunda solicitação permite recarregar os direitos.
No MariaDB, um utilizador é identificado pelo seu login e de onde se pode ligar, por isso o utilizador é xxx@yyy e não apenas xxx, o que permite atribuir diferentes direitos consoante o local onde o utilizador faz login.
Para visualizar as permissões de um utilizador:
SHOW GRANTS FOR 'lamp'@'%';
Complementos MariaDB
Aqui estão algumas informações adicionais sobre o MariaDB.
Os ficheiros de configuração encontram-se na seguinte pasta: /etc/mysql
Por motivos de compatibilidade, o nome da pasta é mysql
Nos comandos, pode-se utilizar o mysql ou o mariadb.
Os ficheiros da base de dados estão localizados em: /var/lib/mysql.
Os logs do MariaDB estão localizados na pasta: /var/log/mysql.
PHP
O último componente da pilha LAMP é o PHP, que é uma linguagem de programação/script muito utilizada no desenvolvimento.
Com o Apache, existem duas formas de fazer o PHP funcionar:
- Módulo PHP que integra PHP através de um módulo Apache que não requer configuração
- PHP-FPM que opera como um serviço independente e permite mais flexibilidade e configuração
Neste tutorial, vou mostrar-vos os dois.
Pessoalmente prefiro utilizar o PHP-FPM que utiliza um serviço separado que permite dissociar o Apache do PHP.
Além disso, a utilização do PHP-FPM permite executar várias versões diferentes do PHP em simultâneo.
À data em que este tutorial foi escrito, nos repositórios Ubuntu 22.04, a versão fornecida era o PHP 8.1
Se quiser outra versão do PHP, deve passar pelo repositório ppa:ondrej/php.
Instale o PHP como módulo Apache
Para instalar o PHP digite o seguinte comando:
sudo apt install php libapache2-mod-php php-mysqli -y
Assim que a instalação estiver concluída, digite o seguinte comando para testar o PHP:
php -v
Este comando apresenta a versão do PHP
Vamos agora testar o PHP através do Apache com um ficheiro php que colocaremos na pasta /var/www/html.
Crie o ficheiro phpinfo.php
sudo nano /var/www/html/phpinfo.php
Copie o seguinte conteúdo para o ficheiro:
Num browser, aceda ao seguinte endereço: http://ip-lamp-server/phpinfo.php
A seguinte página é apresentada:
A API do servidor informa-nos o Apache 2.0 Handler, o que indica que foi utilizado o módulo Apache PHP
PHP-FPM com Apache2
Veremos agora como usar o PHP-FPM com o Apache2.
Se tiver instalado o módulo Apache PHP, iremos primeiro desativá-lo:
sudo a2dismod php8.1
Reinicie o Apache:
sudo systemctl restart apache2
Para validar que o Módulo PHP está desativado apresenta a página phpinfo.php, deve ter o código na página pois o código PHP já não é interpretado.
Instale o PHP-FPM:
sudo apt install php php-fpm php-mysql
Verifique se o serviço php-fpm foi iniciado:
sudo systemctl status php8.1-fpm
Para funcionar, deve ativar dois módulos no Apache:
sudo a2enmod proxy_fcgi proxy
Reinicie o Apache para ter em conta os novos módulos:
sudo systemclt restart apache2
Poderemos passar para a configuração do virtualhost, antes de exibirmos os processos PHP:
ll /run/php
Aqui só tenho um processo para PHP 8.1 em FPM (php8.1-fpm.sock)
Agora, deve informar o Apache que os ficheiros . php devem ser processados pelo php-fpm.
Esta directiva é feita nos ficheiros virtualhost.
Aqui, iremos modificar o virtualhost padrão:
sudo nano /etc/apache2/sites-available/000-default.conf
Na parte VirtualHost adicione:
Teste a configuração do Apache:
sudo apachectl configtest
Reinicie o Apache:
sudo systemctl restart apache2
Mostre novamente a página phpinfo.php.
Aqui podemos ver ao nível da API do servidor que temos FPM/FastCGI
Agora já sabe como instalar um servidor LAMP no Ubuntu 22.04.
Este tutorial deverá poder ser aplicado no Ubuntu 20.04 e no Debian.