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.

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
- Instalação do Gentoo com um Perfil Fortalecido para um servidor voltado para a Internet – Guia de Instalação do Gentoo.
- 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

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

Em seguida, instale o Nginx com o seguinte comando.
# emerge --ask nginx

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

3. Após o Portage concluir a emergência do Nginx, inicie o daemon http e verifique-o direcionando seu navegador para http://localhost.

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

# equery uses php

# 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.

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;

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 } }

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; } }

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

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

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

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

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

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;

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

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

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

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.

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

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/