Configurando um servidor LEMP Debian 9 - Parte 2

Aprenda a configurar um servidor web usando LEMP no Debian 9. Iremos instalar o Nginx, MariaDB e PHP 7.2

Configurando um servidor LEMP Debian 9 - Parte 2

Fala pessoal tudo beleza?

Esse é o segundo artigo da série Configurando um servidor web com Debian 9. Você pode ver o primeiro artigo clicando aqui.

Nesse artigo irei instalar e configurar o Nginx, MariaDB e o PHP 7.2. E vamos também fazer algumas configurações para deixar nosso servidor web bem bacana.

Atualizando os pacotes

Primeiro vamos atualizar a lista de pacotes do sistema com o comando abaixo:

sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade

Instalar Nginx

O Nginx é um servidor web, proxy reverso e proxy balanceador de carga e pode ser usado também junto com Apache. Ele tem uma performance muito boa comparando com um servidor web rodando o Apache. O interessante que os dois podem ser configurados juntos e fazem um belo serviço.

Execute o comando abaixo para instalar o Nginx:

sudo apt install nginx

Se tudo ocorrer bem, seu servidor web já estará rodando. Verifique no link http://localhost e confira a página de boas vindas.

Instalar Mariadb

MariaDB é baseado no MySQL, uma banco de dados muito robusto e muito utilizado hoje em dia para projetos pequenos e grandes portes. É também o mais utilizado para quem esta começando com a programação.

Execute o comando abaixo para instalar o MariaDB:

sudo apt install mariadb-server

Após a instalação é altamente recomendado executar um script para configurar algumas informações.

Execute o comando:

sudo mysql_secure_installation
  • A primeira pergunta é se você já tem uma senha para o usuário root. Caso sim entre com ela e caso contrário apenas tecle enter sem preencher nada.
  • Segunda pergunta é se deseja alterar a senha de root.
  • Terceira, é se você deseja remover os usuários anônimos do mysql: Y
  • Quarta, desabilitar o login remoto do root? Y (Sempre)
  • Quinta, remover a base de dados teste e o acesso a ela? Y
  • Sexta, recarregar os privilégios? Y
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Conforme a mensagem acima, as alterações foram feitas com sucesso. Agora você esta com o banco configurado e pronto para usar.

Instalar o PHP 7.2

Para instalarmos o PHP7.2 no Debian precisaremos baixar de outro repositório, pois essa versão não é nativa do Debian 8 (Jessie) e 9 (Stretch).

Para instalar execute os seguintes comandos:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt-get update && sudo apt-get install php7.2-cli php7.2-fpm php7.2-mysql php7.2-curl php-memcached  php7.2-dev php7.2-sqlite3 php7.2-mbstring php7.2-gd php7.2-json php7.2-xmlrpc php7.2-xml php7.2-zip

Caso o comando acima apresenta algum erro ao atualizar, verifique no arquivo /etc/apt/sources.list.d/php.list se o nome da distribuição foi inserida corretamente conforme a linha abaixo.

  • Para Debian 8 Jessie
deb https://packages.sury.org/php/ jessie main
  • Para Debian 9 Stretch
deb https://packages.sury.org/php/ stretch main

Caso não tenha gravado corretamente, copie a linha correspondente a sua distribuição e altere no arquivo. E tente atualizar a lista de pacotes novamente.

Dica

Vamos alterar uma configuração no PHP para deixarmos ele mais seguro. Navegue até o diretório /etc/php/7.2/fpm/ e abra o arquivo php.ini.

Localize a linha onde existe a diretiva cgi.fix_pathinfo. Deve estar comentado com o sinal # no início da linha. Remova o comentário e caso tiver o valor 1 altere para 0.

cgi.fix_pathinfo=0

Reinicie o PHP:

sudo service php7.2-fpm restart

Configurando o Nginx com o PHP 7.2

Temos agora que configurar um site no Nginx utilizando a nova versão do PHP. Entre no diretório /etc/nginx/sites-available e altere o arquivo default para a configuração abaixo:

server {

    listen 80;
    listen [::]:80;       

    server_name example.com.br www.example.com.br;

    # Log
    access_log off;
    error_log /var/log/nginx/error.log;

    # Directory root
    root /var/www/html/example;
    index index.php index.html;

    client_max_body_size 128M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # pass PHP scripts to FastCGI server
    location ~ \.php$ {
        # Note que aqui definimos a versao que iremos utilizar do PHP
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    # deny access to .htaccess files
    location ~ /\.ht {
        deny all;
    }

    location ~ /\.well-known {
        allow all;
    }

    # Set header expirations on per-project basis
    location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
        expires 365d;
    }
}

Salve o arquivo e execute o comando abaixo para verificar se as alterações estão corretas.

nginx -t

E reinicie o serviço do Nginx:

sudo service nginx restart

Feito! Seu servidor já estará rodando com sucesso. Caso tenha algum problema ou alguma dúvida não deixe de perguntar.

Até a próxima!

Este artigo faz parte de uma série sobre servidor web. Veja todos no link abaixo:

  1. Configurando um servidor LEMP Debian 9 #Parte 1
  2. Configurando um servidor LEMP Debian 9 #Parte 2 (Atual)