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

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

Install Nginx in Gentoo Linux

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

Requisitos

  1. Instalação do Gentoo com um Perfil Fortalecido 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, verifique se sua NIC foi configurada com um Endereço IP Estático e verifique se as fontes do Portage e seu sistema estão atualizados.

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

2. Após o término do processo de atualização, prossiga com a instalação do Nginx escolhendo as configurações e módulos preferidos ao enviar USE flags do Nginx para o arquivo make.conf do Portage. Primeiro, liste 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 extras (WebDAV, fancyindex, GeoIP, etc) além dos padrões, que o Nginx compilará com, adicione-os todos em uma única linha no arquivo Portage make.conf com a diretiva NGINX_MODULES_HTTP, e depois recompilar 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. Após o Portage concluir a emergência do Nginx, inicie o daemon http e verifique-o direcionando seu navegador para http://localhost.

Verify Nginx Web Server

Etapa 2: Instalar o PHP

4. Para usar a linguagem de programação web dinâmica PHP com o servidor Nginx, instale o PHP-FastCGI Process Manager (FPM) adicionando fpm e outras extensões PHP importantes nos 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 aplicadas no arquivo de configuração do serviço. Abra o arquivo de configuração php-fpm e faça as seguintes alterações.

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

Encontre e desfaça o comentário das 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. Após editar o arquivo de configuração do PHP-FPM, 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 esteja iniciado, o Nginx não consegue se comunicar com o gateway PHP, portanto, algumas alterações são necessárias nos arquivos de configuração do Nginx.

Etapa 3: Editar Configurações do Nginx

7. O arquivo de configuração do modelo padrão do Nginx fornece apenas um soquete HTTP básico para localhost. Para alterar esse comportamento e habilitar Virtual Hosts, abra o arquivo nginx.conf localizado no caminho /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 o 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 os 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 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 os Virtual Hosts do Nginx.

Crie o primeiro script Bash chamado n2ensite que habilitará os arquivos de configuração dos Virtual Hosts criando um link simbólico entre os hosts especificados em sites-available e 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 locais – 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 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 locais 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 usar o MariaDB, substituto direto do MySQL, use os seguintes comandos para obter flags USE e instalá-lo.

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

Se ocorrer um conflito de pacotes 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. Depois que o banco de dados MySQL estiver instalado, 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 o 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 usando o comando exit.

# mysql -u root -p

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

16. Se você não é muito bom com a linha de comando do MySQL, instale a interface 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. Depois que o PhpMyAdmin terminar de instalar, crie um arquivo de configuração com base no arquivo de configuração de exemplo, altere a frase secreta blowfish_secret por uma string aleatória, em seguida, crie um link simbólico de /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ para o caminho raiz do documento do Virtual Host 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 use 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 na web, e se você usar apenas páginas geradas dinamicamente em HTML, JavaScript e PHP e não precisar de sites SSL, a configuração acima deve ser satisfatória para você.

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