Instalación de LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM y PhpMyAdmin) en Gentoo Linux


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

Este tema lo llevará a través de un proceso de instalación paso a paso para crear una plataforma de entorno web completa con LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) y con la ayuda de USE banderas provistas por Portage Package Management, que ofrece un conjunto de funciones de paquete en el proceso de compilación: los módulos o configuraciones necesarios para una plataforma web, modificarán en gran medida las configuraciones del servidor.

  1. Instalación de Gentoo con un perfil reforzado para un servidor con conexión a Internet - Guía de instalación de Gentoo.
  2. Red configurada con una dirección IP estática.

Paso 1: Instale el servidor web Nginx

1. Antes de intentar continuar con la instalación de Nginx, asegúrese de que su NIC se haya configurado con una dirección IP estática y asegúrese de que las fuentes de Portage y su sistema estén actualizados.

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

2. Una vez finalizado el proceso de actualización, continúe con la instalación de Nginx eligiendo la configuración y los módulos preferidos haciendo eco de banderas USE de Nginx en el archivo Portage make.conf . Primero enumere los módulos de instalación predeterminados de Nginx ejecutando el siguiente comando.

# emerge -pv nginx

Para obtener información detallada sobre los módulos (indicadores USE para paquetes), utilice el comando equery .

# equery uses nginx

Luego instale Nginx con el siguiente comando.

# emerge --ask nginx

Si necesita módulos adicionales (WebDAV, fancyindex, GeoIP, etc.) además de los predeterminados, con los que compilará Nginx, añádalos todos en una sola línea en el archivo Portage make.conf con NGINX_MODULES_HTTP directiva, luego recompile Nginx con nuevos módulos.

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

3. Una vez que Portage termine de emerger Nginx, inicie el demonio http y verifíquelo dirigiendo su navegador a http:// localhost .

Paso 2: instalar PHP

4. Para utilizar el lenguaje de programación web dinámico PHP con el servidor Nginx, instale PHP-FastCGI Process Manager ( FPM ) agregando fpm y otros archivos PHP importantes. Extensiones en los indicadores USE de Portage y asegúrese de eliminar la extensión 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, es necesario aplicar algunos cambios al archivo de configuración del servicio. Abra el archivo de configuración php-fpm y realice los siguientes cambios.

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

Busque y elimine los comentarios de las siguientes directivas para que tengan este aspecto.

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 PHP-FPM, cambie los permisos del archivo de registro PHP-FPM e inicie el servicio.

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

Incluso si se inicia el servicio PHP-FPM, Nginx no puede comunicarse con la puerta de enlace PHP, por lo que es necesario realizar algunos cambios en los archivos de configuración de Nginx.

Paso 3: Edite las configuraciones de Nginx

7. El archivo de configuración de plantilla predeterminada de Nginx solo proporciona un conector HTTP básico solo para localhost. Para cambiar este comportamiento y habilitar los hosts virtuales, abra el archivo nginx.conf ubicado en la ruta /etc/nginx/ y realice las siguientes configuraciones.

# nano /etc/nginx/nginx.conf

Localice el primer bloque servidor que corresponde a localhost y escucha en la dirección IP 127.0.0.1 y recomiende todas sus declaraciones para que se vean como en la captura de pantalla siguiente.

No cierre el archivo todavía y vaya al final y agregue la siguiente declaración antes del último cierre de llaves "}" .

Include /etc/nginx/sites-enabled/*.conf;

8. A continuación, cree directorios Nginx y archivos de configuración habilitados para sitios y sitios disponibles (para hosts virtuales no utilizados) para localhost en protocolos HTTP y HTTPS.

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

Cree la siguiente configuración de archivo para localhost.

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

Agregue el siguiente contenido de 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, cree el siguiente archivo de configuración.

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

Agregue el siguiente contenido de 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 actúa como comandos para activar o desactivar Nginx Virtual Hosts.

Cree el primer script de Bash llamado n2ensite que habilitará los archivos de configuración de hosts virtuales mediante la creación de un enlace simbólico entre hosts especificados desde sitios disponibles a sitios habilitados .

# nano /usr/local/bin/n2eniste

Agregue el siguiente contenido de archivo.

#!/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, cree el segundo script llamado n2dissite , que eliminará los Hosts virtuales activos especificados de la ruta Nginx habilitada para sitios con el siguiente contenido.

# nano /usr/local/bin/n2dissite

Agregue 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, agregue los permisos de ejecución y active los hosts virtuales localhost: use el nombre del archivo de configuración del host virtual sin la extensión .conf , luego reinicie los servicios 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, cree un archivo de información PHP en la ruta raíz predeterminada de localhost para archivos web (/var/www/localhost/htdocs ) y redirija su navegador a https:/localhost/info .php o http://localhost/info.php .

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

Usando archivos de configuración de hosts virtuales de localhost como plantillas y Nginx n2enmod y n2dismod , ahora puede agregar fácilmente tantos sitios web como desee, pero asegúrese de tener punteros DNS válidos para Internet. -enfrentado al servidor web o use entradas localmente en el archivo de hosts del sistema.

Paso 4: Instale MySQL/MariaDB + PhpMyAdmin

Para instalar la base de datos MySQL y la interfaz web PhpMyAdmin para MySQL, use el mismo procedimiento presentado en Instalación de LAMP en Gentoo.

13. A cambio, si desea usar MariaDB, reemplazo directo de MySQL, use los siguientes comandos para obtener USE flags e instálelo.

# emerge -pv mariadb
# emerge --ask mariadb

En caso de que tenga un conflicto de paquetes con MySQL, agregue las siguientes líneas a Portage package.accept.keywords .

# 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. Una vez instalada la base de datos MySQL, inicie el servicio y asegúrelo con 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 MySQL usando el comando mysql -u root -p para probar su funcionalidad y déjela con el comando salir .

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Si no eres muy bueno con la línea de comandos de MySQL. Instale la interfaz 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. Una vez que PhpMyAdmin termine de instalarse, cree un archivo de configuración basado en el archivo de configuración de muestra, cambie la frase de contraseña blowfish_secret con una cadena aleatoria, luego cree un enlace simbólico desde /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ a la ruta raíz del documento de Virtual Hosts a la que 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 MySQL a través de la interfaz web PhpMyAdmin, abra un navegador y use la siguiente dirección URL https:/localhost/phpmyadmin .

19. El último paso es habilitar los servicios en todo el 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 una configuración de entorno mínima para el alojamiento web, y si solo usa páginas generadas dinámicamente en HTML, JavaScript y PHP y no necesita sitios web SSL, la configuración anterior debería ser satisfactoria para usted.