Gentoo es una de las distribuciones de Linux más rápidas debido a su orientación de construcción a partir de fuentes y proporciona, a través de su programa de gestión de software – Portage – ciertas herramientas necesarias para construir una plataforma completa para desarrolladores web que actúa y funciona muy rápido y, además, tiene un alto grado de personalización.

Este tema te guiará a través de un proceso de instalación paso a paso para construir una plataforma de entorno web completa con LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), y con la ayuda de las banderas USE proporcionadas por la Gestión de Paquetes Portage, que ofrecen un conjunto de funcionalidades de paquete en el proceso de compilación – módulos o configuraciones necesarias para una plataforma web, ajustarán de manera significativa las configuraciones del servidor.
Requisitos
- Instalación de Gentoo con un Perfil Reforzado para un servidor expuesto a Internet – Guía de Instalación de Gentoo.
- Red configurada con una dirección IP estática.
Paso 1: Instalar Servidor Web Nginx
1. Antes de intentar continuar con la instalación de Nginx, asegúrate de que tu NIC haya sido configurada con una Dirección IP Estática y de que las fuentes de Portage y tu sistema estén actualizadas.
$ sudo su - # emerge --sync # emerge --update --deep --with-bdeps=y @world

2. Después de que finalice el proceso de actualización, procede con la instalación de Nginx eligiendo la configuración y módulos preferidos al imprimir las banderas USE de Nginx en el archivo make.conf de Portage. Primero lista los módulos de instalación predeterminados de Nginx ejecutando el siguiente comando.
# emerge -pv nginx
Para obtener información detallada de los módulos (indicadores USE para paquetes) usa el comando equery.
# equery uses nginx

Luego instala Nginx con el siguiente comando.
# emerge --ask nginx

Si necesitas módulos adicionales (WebDAV, fancyindex, GeoIP, etc.) además de los predeterminados con los que Nginx se compilará, añádelos en una sola línea en el archivo make.conf de Portage con la directiva NGINX_MODULES_HTTP, luego vuelve a compilar Nginx con los nuevos módulos.
# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf # emerge --ask nginx

3. Después de que Portage termine de instalar Nginx, inicia el demonio http y verifícalo dirigiendo tu navegador a http://localhost.

Paso 2: Instalar PHP
4. Para utilizar el lenguaje de programación web dinámica PHP con el servidor Nginx, instala PHP-FastCGI Process Manager (FPM) agregando fpm y otras extensiones importantes de PHP en los indicadores USE de Portage y asegúrate de eliminar la extensión de 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 PHP-FPM, algunos cambios deben aplicarse al archivo de configuración del servicio. Abre el archivo de configuración de php-fpm y realiza los siguientes cambios.
# nano /etc/php/fpm-php5.5/php-fpm.conf
Encuentra y descomenta las siguientes directivas para que se vean así.
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. Después de editar el archivo de configuración de PHP-FPM, cambia los permisos del archivo de registro de PHP-FPM y inicia el servicio.
# chmod 755 /var/log/php-fpm.log # /etc/init.d/php-fpm start
Incluso si el servicio PHP-FPM está iniciado, Nginx no puede comunicarse con la pasarela PHP, por lo que se necesitan hacer algunos cambios en los archivos de configuración de Nginx.
Paso 3: Editar las configuraciones de Nginx
7. El archivo de configuración de plantilla predeterminada de Nginx solo proporciona un socket HTTP básico para localhost. Para cambiar este comportamiento y habilitar Virtual Hosts, abre el archivo nginx.conf ubicado en la ruta /etc/nginx/ y realiza las siguientes configuraciones.
# nano /etc/nginx/nginx.conf
Localiza el primer bloque server que corresponde a localhost y escucha en la dirección IP 127.0.0.1 y comenta todas sus declaraciones para que se vean como en la captura de pantalla a continuación.

No cierres el archivo todavía y ve al final y agrega la siguiente declaración antes de la última llave de cierre “ } “.
Include /etc/nginx/sites-enabled/*.conf;

8. A continuación, crea los directorios de Nginx sites-enabled y sites-available (para Virtual Hosts no utilizados) y archivos de configuración para localhost en los protocolos HTTP y HTTPS.
# mkdir /etc/nginx/sites-available # mkdir /etc/nginx/sites-enabled
Crea el siguiente archivo de configuración para localhost.
# nano /etc/nginx/sites-available/localhost.conf
Agrega el siguiente contenido al archivo.
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 con SSL, crea el siguiente archivo de configuración.
# nano /etc/nginx/sites-available/localhost-ssl.conf
Agrega el siguiente contenido al archivo.
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. Ahora es el momento de crear dos scripts en una ruta ejecutable del sistema (variable de shell $PATH), que funcionen como comandos para activar o desactivar los Virtual Hosts de Nginx.
Crea el primer script Bash llamado n2ensite que habilitará los archivos de configuración de Virtual Hosts creando un enlace simbólico entre los hosts especificados de sites-available y 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. Luego crea el segundo script llamado n2dissite, que eliminará los Virtual Hosts activos especificados de la ruta de Nginx en sites-enabled con el siguiente contenido.
# nano /usr/local/bin/n2dissite
Agrega el siguiente contenido.
#!/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. Después de terminar de editar los scripts Bash, añade permisos de ejecución y activa los Virtual Hosts de localhost: utiliza el nombre del archivo de configuración del Virtual Host sin la extensión .conf, luego reinicia los servicios de Nginx y PHP-FPM para aplicar los cambios.
# 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 probar las configuraciones, crea un archivo de información PHP en la ruta raíz predeterminada de localhost para archivos web (/var/www/localhost/htdocs) y redirige tu navegador a https://localhost/info.php o http://localhost/info.php.
echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php

Utilizando los archivos de configuración de Virtual Hosts de localhost como plantillas y n2enmod y n2dismod de Nginx, ahora puedes añadir fácilmente tantos sitios web como desees, pero asegúrate de tener punteros DNS válidos para un servidor web orientado a Internet o utiliza entradas localmente en el archivo de hosts del sistema.
Paso 4: Instalar MySQL/MariaDB + PhpMyAdmin
Para instalar la base de datos MySQL y la interfaz web PhpMyAdmin para MySQL, utiliza el mismo procedimiento presentado en Instalando LAMP en Gentoo.
13. Si prefieres utilizar MariaDB, un reemplazo de MySQL, utiliza los siguientes comandos para obtener los flags de USE e instalarlo.
# emerge -pv mariadb # emerge --ask mariadb

En caso de que haya un conflicto de paquetes con MySQL, añade las siguientes líneas al archivo package.accept.keywords de 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. Después de instalar la base de datos MySQL, inicie el servicio y asegúrelo utilizando mysql_secure_installation (cambie la contraseña de root, deshabilite el inicio de sesión de root fuera de localhost, elimine el usuario anónimo/base de datos de prueba).
# service mysql start # mysql_secure_installation
15. Ingrese a la base de datos de MySQL usando el comando mysql -u root -p para probar su funcionalidad y salga con el comando exit.
# mysql -u root -p MariaDB > show databases; MariaDB > exit;

16. Si no se siente muy cómodo con la línea de comandos de MySQL, instale el frontend web PhpMyAdmin ejecutando los siguientes comandos.
# emerge -pv dev-db/phpmyadmin # echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use # emerge --ask dev-db/phpmyadmin

17. Después de que PhpMyAdmin termine de instalarse, cree un archivo de configuración basado en el archivo de configuración de muestra, cambie la frase secreta blowfish_secret por una cadena aleatoria, luego cree un enlace simbólico desde /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ hasta la ruta de acceso del documento raíz del host virtual donde desea acceder a la interfaz web de 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 acceder a la base de datos de MySQL a través de la interfaz web de PhpMyAdmin, abra un navegador y use la siguiente dirección URL https://localhost/phpmyadmin.

19. El paso final es habilitar los servicios a nivel del sistema para que se inicien automáticamente después de reiniciar.
# rc-update add nginx default # rc-update add php-fpm default # rc-update add mysql default

Ahora tenemos un entorno mínimo configurado para alojamiento web y si solo utiliza páginas generadas dinámicamente con HTML, JavaScript y PHP y no necesita sitios web SSL, la configuración anterior debería ser satisfactoria para usted.
Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/