Instalando LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM e PhpMyAdmin) no Gentoo Linux

O Gentoo é uma das distribuições Linux mais rápidas devido à sua orientação de construção a partir das fontes e fornece, por meio de seu programa de gerenciamento de software – Portage – certas ferramentas necessárias para construir uma plataforma completa para desenvolvimento web que atua e funciona muito rapidamente e, além disso, possui um alto grau de personalização.

Install Nginx in Gentoo Linux

Este tópico irá guiá-lo através de um processo de instalação passo a passo para construir uma plataforma completa de ambiente web com LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), e com a ajuda das flags USE fornecidas pelo Gerenciamento de Pacotes Portage, que oferece um conjunto de funcionalidades de pacote no processo de compilação – módulos ou configurações necessárias para uma plataforma web, irão ajustar altamente as configurações do servidor.

Requisitos

  1. Instalação do Gentoo com um Perfil Reforçado para um servidor voltado para a internet – Guia de Instalação do Gentoo.
  2. Rede configurada com um endereço IP estático.

Passo 1: Instalar o Servidor Web Nginx

1. Antes de tentar prosseguir com a instalação do Nginx, certifique-se de que sua NIC foi configurada com um Endereço IP Estático e que as fontes do Portage e seu sistema estejam atualizados.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. Depois que o processo de atualização terminar, prossiga com a instalação do Nginx escolhendo as configurações e módulos preferidos ao ecoar as flags USE do Nginx para o arquivo make.conf do Portage. Liste primeiro os módulos de instalação padrão do Nginx executando o seguinte comando.

# emerge -pv nginx

Para obter informações detalhadas sobre módulos (USE flags para pacotes), use o comando equery.

# equery uses nginx
List All Flag Modules

Em seguida, instale o Nginx com o seguinte comando.

# emerge --ask nginx
Install Nginx Web Server

Se você precisar de módulos adicionais (WebDAV, fancyindex, GeoIP, etc) além dos padrões, que o Nginx irá compilar, adicione todos em uma única linha no arquivo Portage make.conf com a diretiva NGINX_MODULES_HTTP, em seguida, recompile o Nginx com os novos módulos.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. Depois que o Portage concluir a instalação do Nginx, inicie o daemon http e verifique acessando-o através do seu navegador em http://localhost.

Verify Nginx Web Server

Passo 2: Instalar o PHP

4. Para usar a linguagem de programação web dinâmica PHP com o servidor Nginx, instale o Gerenciador de Processos PHP-FastCGI (FPM) adicionando fpm e outras extensões PHP importantes nas flags USE do Portage e certifique-se de remover a extensão do Apache.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. Antes de iniciar o PHP-FPM, algumas alterações precisam ser feitas no arquivo de configuração de serviço. Abra o arquivo de configuração do php-fpm e faça as seguintes alterações.

# nano /etc/php/fpm-php5.5/php-fpm.conf

Procure e descomente as seguintes diretivas para que fiquem assim.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. Depois que o arquivo de configuração do PHP-FPM for editado, altere as permissões do arquivo de log do PHP-FPM e inicie o serviço.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

Mesmo que o serviço PHP-FPM seja iniciado, o Nginx não pode se comunicar com o gateway PHP, então, algumas alterações precisam ser feitas nos arquivos de configuração do Nginx.

Passo 3: Editar as Configurações do Nginx

7. O arquivo de configuração modelo padrão do Nginx fornece apenas um soquete HTTP básico para o localhost. Para alterar esse comportamento e habilitar Virtual Hosts, abra o arquivo nginx.conf localizado em /etc/nginx/ e faça as seguintes configurações.

# nano /etc/nginx/nginx.conf

Localize o primeiro bloco server que corresponde ao localhost e escuta no endereço IP 127.0.0.1 e comente todas as suas declarações para ficar como na captura de tela abaixo.

Disable Basic HTTP Configuration

Não feche o arquivo ainda e vá para o final e adicione a seguinte declaração antes da última chave de fechamento “ } “.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. Em seguida, crie os diretórios do Nginx sites-enabled e sites-available (para Virtual Hosts não utilizados) e arquivos de configuração para localhost nos protocolos HTTP e HTTPS.

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

Crie o seguinte arquivo de configuração para o localhost.

# nano /etc/nginx/sites-available/localhost.conf

Adicione o seguinte conteúdo de arquivo.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

Para localhost com SSL, crie o seguinte arquivo de configuração.

# nano /etc/nginx/sites-available/localhost-ssl.conf

Adicione o seguinte conteúdo de arquivo.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. Agora é hora de criar dois scripts em um caminho executável do sistema (variável de shell $PATH) que funcionam como comandos para ativar ou desativar Virtual Hosts do Nginx.

Crie o primeiro script em Bash chamado n2ensite que habilitará os arquivos de configuração dos Virtual Hosts criando um link simbólico entre hosts especificados de sites-available para sites-enabled.

# nano /usr/local/bin/n2eniste

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. Em seguida, crie o segundo script chamado n2dissite, que irá excluir os Virtual Hosts ativos especificados do caminho sites-enabled do Nginx com o seguinte conteúdo.

# nano /usr/local/bin/n2dissite

Adicione o seguinte conteúdo.

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. Após terminar de editar os scripts Bash, adicione permissões de execução e ative os Virtual Hosts do localhost – use o nome do arquivo de configuração do Virtual Host sem a extensão .conf, em seguida, reinicie os serviços do Nginx e PHP-FPM para aplicar as alterações.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. Para testar as configurações, crie um arquivo de informações em PHP no caminho raiz padrão do localhost para arquivos da web (/var/www/localhost/htdocs) e redirecione seu navegador para https://localhost/info.php ou http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

Usando arquivos de configuração de Virtual Hosts do localhost como modelos e n2enmod e n2dismod do Nginx, agora você pode facilmente adicionar quantos sites desejar, mas certifique-se de ter apontadores DNS válidos para um servidor web voltado para a Internet ou use entradas localmente no arquivo de hosts do sistema.

Passo 4: Instalar MySQL/MariaDB + PhpMyAdmin

Para instalar o banco de dados MySQL e a interface Web PhpMyAdmin para MySQL, use o mesmo procedimento apresentado em Instalando o LAMP no Gentoo.

13. Em caso de desejar utilizar o MariaDB, substituto direto do MySQL, use os seguintes comandos para obter os USE flags e instalá-lo.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

Se ocorrer um conflito de pacote com o MySQL, adicione as seguintes linhas ao arquivo package.accept.keywords do Portage.

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. Após a instalação do banco de dados MySQL, inicie o serviço e o proteja usando o comando mysql_secure_installation (altere a senha de root, desative o login de root fora do localhost, remova usuário anônimo/banco de dados de teste).

# service mysql start
# mysql_secure_installation

15. Acesse o banco de dados MySQL usando o comando mysql -u root -p para testar sua funcionalidade e saia utilizando o comando exit.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. Se você não tem muita experiência com a linha de comando do MySQL, instale o frontend web PhpMyAdmin executando os seguintes comandos.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. Após a instalação do PhpMyAdmin terminar, crie um arquivo de configuração com base no arquivo de configuração de exemplo, altere a senha de blowfish_secret com uma sequência aleatória, em seguida, crie um link simbólico de /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ para o caminho do root do documento dos Virtual Hosts que você deseja acessar a interface web do PhpMyAdmin.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. Para acessar o banco de dados MySQL através da interface web do PhpMyAdmin, abra um navegador e utilize o seguinte endereço URL https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. O último passo é habilitar os serviços em todo o sistema, para iniciar automaticamente após a reinicialização.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

Agora temos um ambiente mínimo configurado para hospedagem web, e se você utilizar apenas páginas geradas dinamicamente em HTML, JavaScript e PHP e não precisar de websites com SSL, a configuração acima deve ser satisfatória para você.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/