Instalar Linux, Nginx, MariaDB, PHP (LEMP stack) no Debian 10

Escrito por

em

,

Tutorial otimizado para Debian 10 “buster”.

Pré-requisitos: Servidor Debian 10,

Introdução

“LEMP” é o acrónimo de Linux operating system, com o servidor web (E)Nginx . Os dados são armazenado na MariaDB e o processamento dinâmico é tratado pelo PHP.

Instalar Nginx

Atualizar a lista de pacotes

sudo apt update

Instalar Nginx

sudo apt install nginx

Depois de instalado, por norma, o servidor web fica funcional. Para testar abrimos um browser e verificamos com o ip do Servidor abre a página. Caso não abra pode ser de alguma firewall que possa estar a impedir. Em seguida vamos configurar a firewall para permitir ligações na porta 80.

Configurar Firewall ufw, se estiver instalada

Listar as configurações de aplicativos com as quais o ufw sabe trabalhar só com a adição do nome:

sudo ufw app list

Aparece algo do género:

sudo ufw app list | grep Nginx

Output:

Nginx Full
Nginx HTTP
Nginx HTTPS
  • Nginx Full: Este perfil abre as duas porta: 80 e a porta 443 (TLS/SSL tráfego criptografado)
  • Nginx HTTP: Este perfil abre a porta: 80 
  • Nginx HTTPS: Este perfil abre a porta: 443

Se só pretendermos permitir o tráfego para a port porta 80, fazemos:

sudo ufw allow 'Nginx HTTP'

Se tudo for feito direito já iremos conseguir aceder à página num Browser com o ip do Servidor.

Instalar MariaDB (sistema de Base de Dados)

MariaDB uma base de dados forcada da MySQL com total intenção de manter a compatibilidade. Uma aplicação gestora de conteúdos web como o WordPress originalmente criada para usar a base de dados MySQL deve funcionar sem qualquer problema na MariaDB. A instalação é feita com o uso do pacote “mariadb-server

sudo apt install mariadb-server

Depois da instalação concluída é recomendável configurá-la para que fique segura.

sudo mysql_secure_installation
  • Após correr o comando será perguntado se queremos configurar a pass do utilizador root. Com <Enter> respondemos que Sim.
  • Seguida colocamos a pass pretendida e clicar em <Enter>, repetimos a pass e pressionamos <enter>.
  • As próximas questões são respondidas com um <enter>, isto é, de forma positiva a:
    • Remover utilizadores anonimos
    • Desativar a utilização remota do utilizador root
    • Remover a Base de dados de teste e o acesso a esta
    • Recarregar os privilégios à tabelas existente

Instalar o PHP

Para o Nginx o pacote a usar é o php-fpm e para que o php passa ligações à Base de Dados é necessário o php-mysql.

sudo apt install php-fpm php-mysql

Configurar Nginx para usar o PHP

O Nginx no Debian 10 vem configurado, por norma, para servir documentos na pasta “/var/www/html“. Para múltiplas página seré melhor usar algo como “/var/www/o.meu.dominio“. No meu caso “/var/www/raulramos.pt“.

Comelar por criar a pasta de raiz para os documentos do domínio da forma seguinte:

sudo mkdir /var/www/raulramos.pt

Atribuir propriedade do pasta com a variável de ambiente $USER, que deve referenciar o utilizador atual do sistema:

sudo chown -R $USER:$USER /var/www/raulramos.pt

Criar um um novo ficheiro de configuração na pasta “nginx/sites-available” com o nome do domínio usado para criar a pasta de raiz dos documentos web. Aqui podemos usar um editor de ficheiros ao nosso gosto, o que me parece mais simples é o nano.

sudo nano /etc/nginx/sites-available/raulramos.pt

Aparecerá um ficheiro em branco e deve levar o código seguinte:

server {
    listen 80;
    listen [::]:80;
#na linha em baixo ficam os vários domínios a apontar para esta pasta (apagar esta linha) 
    server_name o.teu.dominio www.o.teu.dominio;

    root /var/www/o.teu.dominio;
    index index.php index.html index.htm;

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

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

No caso deste site em vez de “o.teu.dominio” ficaria “raulramos.pt“. Depois de adicionado e alterado o respetivo código, faz-se ctrl+x no teclado e <enter> para confirmar o caminho e nome do ficheiro.

Depois de criar o ficheiro a configuração ficará na pasta "/etc/nginx/sites-available/" mas nós queremos que a configuração fique na pasta "/etc/nginx/sites-enabled/", acho que o nome da pasta justifica ação.

sudo ln -s /etc/nginx/sites-available/o.teu.dominio /etc/nginx/sites-enabled/

O comando ln cria um link na pasta "/etc/nginx/sites-enabled/" para o caminho na pasta e ficheiro "/etc/nginx/sites-available/o.teu.sominio" e assim o ficheiro vai ser lido na próxima vez que as configurações forem carregadas . Para testar, fazer “sudo nginx -t“. Se tudo estiver ok e com sucesso podemos fazer o novo carregamento das configurações com:

sudo systemctl reload nginx

Criar ficheiro de teste:

nano /var/www/o.teu.dominio/info.php

Escrever no editor;

<?php
phpinfo();

Guardar com ctrl+x e <enter>. Testar num browser com o endereço http://o.teu.dominio/info.php. Se tudo correr bem o browser apresenta uma página da informação do php. Muito importante é remover o ficheiro depois de visualizar a informação.

Remover o ficheiro:

rm /var/www/o.teu.dominio/info.php

Próximos tutoriais: Criar um Certificado SSL para o Nginx no Debian 10 “buster”.

Até à próxima.