Instalação da stack LEMP no Ubuntu 20.04

Instalação da Stack LEMP (Linux, Nginx, MySQL, PHP) no Ubuntu 20.04
Instalação da Stack LEMP (Linux, Nginx, MySQL, PHP) no Ubuntu 20.04

Stack LEMP?

A stack LEMP é um conjunto de diferentes softwares, necessários para servir grande parte dos actuais websites.

O nome LEMP é o acrónico das palavras Linux, Nginx (pronunciado Engine X), MySQL e PHP.

O Linux é o sistema operativo em questão, sendo que neste tutorial vamos utilizar o Ubuntu, uma distruíção com base no Linux.

O Nginx é o Servidor Web, responsável por servir as páginas web.

O MySQL é o sistema de base de dados.

O PHP é a linguagem de programação, adoptada em grande parte pela internet.

Instalação

Este tutorial pressupõe que já dispõem de uma máquina com o sistema operativo Ubuntu, pronto a funcionar.

Caso não seja este o caso, aqui fica um tutorial de como o fazer:

Nginx

A instalação do Nginx é bastante simples, pois encontra-se disponível nos repositórios oficiais do Ubuntu.

Antes de proceder à instalação de qualquer software, devem de realizar uma atualização dos respositórios:

sudo apt update && sudo apt upgrade

Em seguida instalamos o Nginx:

sudo apt install nginx

Com a instalação concluída o servidor web já se encontra em funcionamento, ao aceder ao mesmo será exibida a seguinte página:

MySQL

A instalação do MySQL é também bastante simples, basta correr o seguinte comando:

sudo apt install mysql-server

Com o MySQL instalado vamos configurar o mesmo com o seguinte comando:

sudo mysql_secure_installation

Este comando irá reforçar a segurança da nossa instalação, serão feitos vários ajustes, desde a verificação do tipo de passwords, bem como a remoção das contas e base de dados de teste.

No momento de criação deste tutorial, a versão de MySQL instalada encontra-se configurada de forma a não permitir o acesso root ao MySQL, usando uma password.

É possível alterar este comportamento com o seguinte comando:

sudo msyql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password_escolhida';
FLUSH PRIVILEGES;
exit

Como isto a vossa base de dados MySQL encontra-se pronta a usar.

PHP

A instalação do PHP não foge à norma, como na instalação dos restantes softwares, este encontra-se nos repositórios oficiais do Ubuntu.

sudo apt install php7.4-fpm php7.4-mysql

Neste momento o PHP encontra-se instalado e pronto a usar.

Ainda existem alguns ajustes a serem feitos, nomeadamente configurar o Nginx a interagir com o PHP.

Vamos então criar um novo ficheiro:

sudo nano /etc/nginx/sites-available/packagedroid.com

O Nginx utiliza server blocks onde configuramos as propriedades de cada servidor web.

Isto permite servir vários websites, com diferentes domínios e configurações na mesma máquina.

Dentro do novo ficheiro vamos introduzir a seguinte configuração:

server {
    listen 80;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name packagedroid.com;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
    location ~ /.ht {
        deny all;
    }
}

A configuração aqui apresentada encontra-se disponível no website oficial do Nginx, podem consultar aqui.

Com o ficheiro criado, vamos criar um symlink, de forma a indicar ao Nginx que configuração usar.

sudo ln -s /etc/nginx/sites-available/packgedroid.com /etc/nginx/sites-enabled/

E removemos o symlink da configuração default

sudo unlink /etc/nginx/sites-enabled/default

Agora basta verificar por erros de configuração ou syntax na configuração criada

sudo nginx -t

E recarregar o serviço do Nginx de forma a utilizar a nova configuração

sudo systemctl reload nginx

Com isto vamos então testar a nossa instalação do PHP em conjunto com o Nginx, para isso criamos um ficheiro na pasta root do webserver:

sudo nano /var/www/html/info.php

E escrevemos o seguinte bloco de código:

<?php
phpinfo();

Agora basta aceder ao mesmo URL que anteriormente acedemos para testar o Nginx, com a indicação do ficheiro em questão info.php, que resultará na seguinte página: