Matheus Lima

Dica

Instalando o Nginx + PHP 7.1 + MySQL 5.7 (LEMP)

Posted on .

Instalando o Nginx + PHP 7.1 + MySQL 5.7 (LEMP)

Introduction

Salve salve amiguinhos!
Depois de um bom tempo sem postar nada (1 ano :p), olha eu aqui de novo!
Seguindo a tradição de posts úteis, hoje vou mostrar como instalar o Nginx, PHP 7.1 e o MySQL.
Como vocês já sabem aqui não tem enrolação, já vai abrindo o terminal ai siga os passos, é simples e rápido.

Disclaimer

Esse post foi testado com sucesso em uma instalação limpa do Ubuntu 16.10 x64, então na teoria você pode utilizar este post em qualquer distribuição baseada no Debian, tais como, Mint, Elementary OS e etc..

Atualizando

Vamos atualizar o sistema e deixar tudo zerado para começarmos com o pé direito, no terminal rode o comando a baixo e aguarde.

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

Irá aparecer uma tela falando sobre o Grub, deixe na opção padrão e  pressione enter.

MySQL

Com o sistema atualizado agora vamos começar de verdade, primeiro vamos instalar o MySQL.
No terminal rode o comando abaixo, e informe sua senha, caso queira você pode deixá-la em branco no ambiente de desenvolvimento, nem preciso dizer para você utilizar uma senha segura no servidor de produção, não é?

sudo apt-get install mysql-server

O comando a seguir é opcional se você está usando no seu ambiente de desenvolvimento, mas você estiver usando este post para configurar um servidor de produção recomendo fortemente que o comando mysql_secure_instalation seja executado.

sudo mysql_secure_installation

A primeira pergunta é se você quer testar a força da sua senha: responda com Y (sim) ou N (não).

Segunda pergunta é sobre alterar a senha de root: novamente Y ou N.

Terceira questão é se você deseja remover os usuários anônimos do mysql: Y com toda certeza!

Quarta questão, desabilitar o login remoto do root?, Y claro!. Se você quer utilizar o login remoto, crie um usuário e configure as devidas permissões para o mesmo.

Quinta questão, remover a base teste e o acesso a ela?: Y

Sexta e ultima questão, recarregar os privilégios? YYYYYYY, ufa!

Instalando o Nginx

Agora é a hora de instalar o Nginx, rode o comando abaixo e aguarde o termino.

sudo apt-get install nginx

Abra o navegador e acesse http://localhost ou http://seuIpAqui, a pagina de boas vindas do Nginx deve ser exibida.

Instalando o PHP 7.1

Agora a novidade, vamos instalar a versão o PHP 7.1 que foi lançado em 01/12/2016, essa minor version foi lançada exatamente um ano após a versão 7.0, isso demonstra que a comunidade está engajada e que podemos esperar grandes novidades para o futuro.

O PHP 7.1 ainda não é oficialmente suportado pelo Ubuntu, entao temos que adicionar um repositório PPA para podermos instalar essa versão, não não se preocupe, este método é bem conhecido e muito utilizado.

sudo add-apt-repository -y ppa:ondrej/php && sudo apt-get update

Agora que o repositório esta instalado e a lista de pacotes esta atualizada, copie e cole o comando abaixo para instalar.

sudo apt-get install php7.1-cli php7.1-fpm php7.1-mysql php7.1-curl php-memcached php7.1-dev php7.1-mcrypt php7.1-sqlite3 php7.1-mbstring

Rode o comando abaixo e veja o que o PHP 7.1 foi instalado.

php -v

Dica: caso queira ver todos pacotes disponiveis para o PHP 7.1 basta usar o comando abaixo.

sudo apt-cache search php7.1

Dica de ouro: deixando o PHP mais seguro

Vamos fazer uma pequena alteração na configuração do PHP para tornar nossa configuração mais segura.

Abra o arquivo /etc/php/7.1/fpm/php.ini com o nano e procure pela linha (ctrl + w) cgi.fix_pathinfo, ela está comentada por ; e com valor setado para 1, descomente a linha e defina o valor para zero.

sudo nano /etc/php/7.1/fpm/php.ini

Deve ficar conforme abaixo

cgi.fix_pathinfo=0

Esta é uma configuração previne que o PHP tente executar o arquivo mais PHP próximo se o arquivo solicitado não puder ser encontrado. Isso basicamente permitiria aos usuários elaborar pedidos PHP de uma forma que permitisse executar scripts que não deveriam ser autorizados a executar.
Tudo certo, renicie o PHP-fpm com o comando abaixo

sudo systemctl restart php7.1-fpm

Integrando o PHP 7.1 ao Nginx

Primeiramente vamos fazer um backup da configuração atual do Nginx. Lembre-se shit happens, e você ainda pode consultar o arquivo de configuração original em caso de duvidas.

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default_config

Agora vamos criar um arquivo de configuração que já integra o PHP 7.1 ao nosso Nginx.

sudo nano /etc/nginx/sites-available/default 

Copie e cole a configuração abaixo no arquivo.


server {
# Port that the web server will listen on.
listen 80;

# Host that will serve this project.
server_name localhost;

# Useful logs for debug.
access_log /var/log/nginx/localhost_access.log;
error_log /var/log/nginx/localhost_error.log;
rewrite_log on;

# The location of our projects public directory.
root /usr/share/nginx/html;

# Point index to the Laravel front controller.
index index.php index.html;

location / {
# URLs to attempt, including pretty ones.
try_files $uri $uri/ /index.php?$query_string;
}

# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}

# PHP FPM configuration.
location ~* \.php$ {
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# We don't need .ht files with nginx.
location ~ /\.ht {
deny all;
}

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

Salve o arquivo ctrl+oe saia ctrl+x.
Teste a configuração no Nginx

sudo nginx -t

Reinicie os serviços.

sudo systemctl restart php7.1-fpm && systemctl restart nginx

Agora vamos criar um arquivo chamado info.php para ver se nossa configuração funcionou.

sudo nano /usr/share/nginx/html/info.php 

Copie e cole o código abaixo.

Volte ao navegador e acesse http://localhost/info.php, desta vez você deve ver uma página com todas as informações do PHP 7.1.
Se tudo correu bem, você deve estar feliz da vida vendo uma pagina meio roxa com as informações do seu PHP.

Quem acompanha meu blog sabe que eu sempre deixo um presentinho no final de posts desse tipo, dessa vez não seria diferente, dessa vez deixo 2 presentes pra você, confere ai!

Plus 1: Instalar o xDebug

O XDebug é uma ferramenta indispensável para quem programa em PHP, se você esta configurando um ambiente de desenvolvimento, siga em frente, vamos instalar o XDebug de uma maneira bem sussa.


wget http://xdebug.org/files/xdebug-2.5.0.tgz
tar -xvzf xdebug-2.5.0.tgz
cd xdebug-2.5.0
phpize
./configure
make
sudo cp modules/xdebug.so /usr/lib/php/20160303
sudo echo 'zend_extension = /usr/lib/php/20160303/xdebug.so' >> /etc/php/7.1/fpm/php.ini
sudo systemctl restart php7.1-fpm

Volte na página de informações do PHP e aperte f5, procure por xdebug support e verifique que ele está enabled.

Plus 2: Instalar o Composer

Novamente, se você esta configurando um ambiente de desenvolvimento este passo é segundo presentinho para você.

Acho que nem preciso explicar o que é o Composer, se você programa em PHP certamente já sabe o que ele é, vamos instalá-lo globalmente para utilizarmos em qualquer lugar do nosso sistema.
Rode este comando gigante abaixo e Voilà.


curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Execute composer no terminal e veja que agora você pode utilizá-lo onde quiser.

Conclusão

Se você chegou até aqui, quer dizer que tudo deu certo!

Sem enrolação ou firulas deixamos tudo configurado e rodando perfeitamente, agora você está pronto conquistar o mundo.

Espero que este post tenha sido útil e caso tenha alguma duvida, deixe nos comentários.

Obrigado por ler e até a proxima =]

Matheus Lima

Matheus Lima

https://matheuslima.com.br

<p>Meu nome é Matheus Lima, sou desenvolvedor web, entusiasta Linux, pai de família, apaixonado por pesca, ouvinte de boa música e aspirante a chef de cozinha. Prazer!</p>

Comments
  • user

    AUTHOR Ian Rocha

    Posted on 02:20 2 de junho de 2017.
    Responder

    Ao rodar o comando:

    sudo echo ‘zend_extension = /usr/lib/php/20160303/xdebug.so’ >> /etc/php/7.1/fpm/php.ini

    Apresenta erro a baixo:

    “bash: /etc/php/7.1/fpm/php.ini: Permissão negada”

    Pode me ajudar?

    • user

      AUTHOR matheuslima

      Posted on 15:24 8 de junho de 2017.
      Responder

      Amigo, isso parece ser um erro de permissão, ao solicitar a senha nenhum erro é apresentado?

  • user

    AUTHOR Carlos Gartner

    Posted on 12:46 1 de Fevereiro de 2017.
    Responder

    Olá 🙂

    Precisa corrigir as orientações do xdebug, de resto foi muito útil 🙂

    wget http://xdebug.org/files/xdebug-2.5.0.tgz
    tar -xvzf xdebug-2.5.0.tgz
    cd xdebug-2.5.0
    phpize
    ./configure
    make
    sudo mkdir /usr/lib/php/20160303
    sudo cp modules/xdebug.so /usr/lib/php/20160303/xdebug.so
    sudo echo ‘zend_extension = /usr/lib/php/20160303/xdebug.so’ >> /etc/php/7.1/fpm/php.ini
    sudo systemctl restart php7.1-fpm

    • user

      AUTHOR matheuslima

      Posted on 12:55 1 de Fevereiro de 2017.
      Responder

      Hey Carlos!
      Obrigado, vou conferir.
      Abraço

  • user

    AUTHOR Lauro Moraes

    Posted on 06:01 24 de Janeiro de 2017.
    Responder

    Olá Matheus obrigado por compartilhar conhecimento o/

    Adorei o post e as dicas, segui de referencia para instalar o servidor (local).

    Gostaria de saber se há algum ppa para o PHP 7.1.1 lançado 19/01 ?

    D+ tdb abraço 🙂

    PS: Adorei o blog! Bem clean.

    • user

      AUTHOR matheuslima

      Posted on 16:58 26 de Janeiro de 2017.
      Responder

      Olá Lauro o/
      Esse o PPA do PHP 7.1 serve para as versões 7.1.x, então logo o mantenedor deve disponibilizar a atualização, só rodar um apt-get update de vez em quando pra verificar.
      Abraço

  • Este post foi util?. Deixe um comentário :)

    View Comments (7) ...
    Navigation