Como instalar e configurar, Linux, Nginx, MySQL, PHP 7 no CentOS 7 (LEMP)

Lemp - Linux, Nginx, Mysql, Php

LEMP é um grupo de Software Livre. A sigla LEMP significa Linux, Nginx (pronuncia-se Engine x), MySQL e PHP .

Nginx é um software de servidor Web de código aberto robusto, pequeno, de alto desempenho, servidor proxy reverso e também servidor proxy de E-mail.
Os dados do site serão armazenados em um banco de dados MySQL (usando MariaDB) e o conteúdo dinâmico será processado pelo PHP 7.4.

O Pré Requisito para continuar com esse tutorial é que você já tenha o Linux CentOS 7 instalado.

Primeiro passo – Instalar o Nginx

No CentOS o Nginx não está disponível no repositório padrão. Vamos adicionar o repositório EPEL para que possamos instalar o Nginx através do yum.

yum install epel-release

Com o repositório EPEL instalado no servidor, vamos instalar o nginx

yum install nginx

Vamos iniciar o nginx

systemctl start nginx

Nós já podemos acessar utilizando o IP de seu servidor, a página “default” do nginx e certificar que tudo está ok. Caso não saiba ou tenha certeza de qual é o IP utilize:


ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

ou

curl http://icanhazip.com

Se está utilizando o CentOS 7, provavelmente precisará de uma nova regra ao Firewall padrão (firewalld), para permitir tráfego na porta 80.




Adicionando nova regra ao Firewalld

firewall-cmd --permanent --zone=public --add-service=http

ou

firewall-cmd --permanent --zone=public --add-port=80/tcp

Restart firewalld

systemctl restart firewalld.service

Abra seu Browser e acesse:


http://IP_do_Seu_Servidor

Você verá a página Default do NGINX, que é exibida para fins de informação e teste.

Página Default Do Nginx
Página Default do NGINX

Segundo Passo – Instalar MySQL(MariaDB)

Agora que temos o servidor web NGINX instalado e configurado, vamos instalar o MariaDB, que irá armazenar e gerenciar os dados do site. O MariaDB é mantido pela comunidade de desenvolvedores originais do antigo e conhecido MySQL.

O MariaDB vem com repositórios padrão do CentOS, bastaria utilizar o yum para instala-lo rapidamente. Porém nós desejamos instalar o MariaDB 10.4, que não é a versão disponível como padrão . Após atualizar o servidor com yum , vamos adicionar o repositório do MariaDB e definir a versão ‘0.4

yum update -y; 

Crie o arquivo abaixo e insira:

nano /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

Atualize o cache do yum

yum makecache fast

Instale o MariaDB

yum -y install MariaDB-server MariaDB-client

Vamos dar um start no MariaDB e habilita-lo para iniciar após o reboot.

systemctl start mariadb
systemctl enable mariadb

Com o MariaDB (MySQL) iniciado, precisamos executar um script de segurança que irá remover algumas configurações default e deixará nossa instalação mais segura.

mysql_secure_installation

A primeira opção irá perguntar qual é a senha do root para o MariaDB. Como acabamos de instalar o MariaDB, você deverá deixar esta opção em branco e pressionar enter para continuar. Na próxima questão será solicitado que digite uma senha para o root do MariaDB e confirme.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Para as outras questões digite Y.

Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y

Teceiro Passo – Instalar o PHP 7.4


O PHP é o responsável em processar o código para exibir conteúdo dinâmico. Ele poderá executar scripts, conectar-se ao bancos de dados MySQL para obter informações e entregar o conteúdo processado ao seu servidor da Web para exibição.

O primeiro passo será instalar o repositório do CentOS que contém os pacotes de instalação do PHP 7.4

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

Habilitar o repositório do php74:

yum install yum-utils -y
yum-config-manager --enable remi-php74

Instalar pacotes do PHP:

yum --enablerepo=remi,remi-php74 install php-fpm php-common

Instalando módulos comuns:

yum --enablerepo=remi,remi-php74 install php-fpm php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

Configurando o processamento do PHP

Nós já temos agora, o php 7.4 e componentes instalados no servidor mas precisamos fazer algumas modificações para manter o servidor mais seguro.

Edite o arquivo principal de configuração do php:

nano /etc/php.ini

Vamos configurar o PHP para aceitar apenas URLs de arquivos que realmente existem no servidor. Isso atenua uma vulnerabilidade de segurança em que o interpretador PHP pode ser induzido a permitir a execução de código arbitrário se o arquivo .php solicitado não estiver presente no sistema de arquivos.

Localize cgi.fix_pathinfo altere para 0 , isso irá desabilitar essa função.Lembre-se de Remover o “;” antes do nome para descomentar essa função.

cgi.fix_pathinfo=0

Salve e saia do editor nano. ( ctrl+x , y)

Abra e edite o arquivo de configuração do php-fpm www.conf:

nano /etc/php-fpm.d/www.conf

Procure a linha “listen =” e modifique conforme abaixo:

listen = /var/run/php-fpm/php-fpm.sock

Localize listen.owner e listen.group . Descomente removendo o “;” antes das funções e altere para :

listen.owner = nginx
listen.group = nginx

Localize user e group. Altere os valores de apache para nginx

user = nginx
group = nginx

Salve e saia do editor nano. ( ctrl+x , y)

Agora, precisamos apenas iniciar nosso processador de PHP e habilitar para iniciar após o boot.

systemctl start php-fpm
systemctl enable php-fpm

Quarto Passo – Configurar Nginx para processar páginas PHP 7.2

Agora vamos criar um novo arquivo de configuração para o Nginx . Substitua em server_name “nome_dominio_ou_IP_do_Seu_Servidor” para o IP de seu servidor :

nano /etc/nginx/conf.d/default.conf

Insira o código abaixo:

server {
    listen       80;
    server_name  nome_dominio_ou_IP_do_Seu_Servidor;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Salve e saia do editor nano. ( ctrl+x , y)

Reinicie o nginx para que as modificações sejam carregadas.

systemctl restart nginx

Para Finalizar, vamos criar um arquivo de teste em php que trará informações sobre nosso servidor e php .

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

Insira o código:

Phpinfo

Salve e saia do editor nano. ( ctrl+x , y) .

Agora acesse :

http://ip_do_seu_servidor/info.php
.

Será exibido uma página semelhante a :

Php Info 7.2

Agora você tem o LEMP instalado e configurado em seu servidor da melhor forma possível. Com estas configurações você poderá hospedar em seu servidor os mais diversos sistemas, como por exemplo WordPress, Joomla, etc…

Espero que tenha gostado!