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.

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
- Instalação do Gentoo com um Perfil Reforçado 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, 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

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

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

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

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.

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

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

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

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

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

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

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

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;

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

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

# 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 utilize 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 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/