Búsqueda de sitios web

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 orientación a la construcción a partir de fuentes y proporciona a través de su programa de administració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 lo llevará 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 USE flags proporcionados por Portage Package Management, que ofrece un conjunto de funcionalidades de paquetes 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.

Requisitos

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

Paso 1: instalar el servidor web Nginx

1. Antes de intentar continuar con la instalación de Nginx, asegúrese de que su NIC haya sido configurada 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 las indicaciones USE de Nginx en el archivo make.conf de Portage. . 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 Nginx compilará, agréguelos todos en una sola línea en el archivo make.conf de Portage con NGINX_MODULES_HTTP directiva, luego vuelva a compilar 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. Después de que Portage termine de generar 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 otras extensiones PHP importantes 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, se deben 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 descomente 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 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: editar las configuraciones de Nginx

7. El archivo de configuración de plantilla predeterminado de Nginx solo proporciona un socket 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, 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 sitios habilitados 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 los hosts virtuales Nginx.

Cree el primer script Bash llamado n2ensite que habilitará los archivos de configuración de hosts virtuales mediante la creación de un enlace simbólico entre los hosts especificados desde sitios disponibles hasta 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 sitios habilitados 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 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 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 del host local para archivos web (/var/www/localhost/htdocs) y redirija su navegador en 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 hosts virtuales 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. -frente 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, utilice el mismo procedimiento presentado en Instalación de LAMP en Gentoo.

13. A cambio, si desea utilizar MariaDB, reemplazo directo para MySQL, use los siguientes comandos para obtener indicadores USE e instalarlo.

emerge -pv mariadb
emerge --ask mariadb

En caso de que tenga un conflicto de paquete 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. Después de instalar la base de datos MySQL, inicie el servicio y asegúrelo usando mysql_secure_installation (cambie la contraseña de root, deshabilite el inicio de sesión de root fuera del host local, 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 exit.

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. 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 de contraseña blowfish_secret con una cadena aleatoria y luego cree un enlace simbólico desde /usr. /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ a la ruta raíz del documento de hosts virtuales 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 del reinicio.

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 alojamiento web, y si solo usa páginas generadas dinámicamente HTML, JavaScript y PHP y no necesita sitios web SSL, la configuración anterior debería ser satisfactoria para usted.