Ingresar  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o
x
  • Fututel

Artículos

Instalar Linux, Nginx, MySQL, PHP (LEMP) en Debian 8

                                           Instalar LEMP en Debian

Introducción

El paquete de software de LEMP es un grupo de software que se puede utilizar para servir páginas web dinámicas y aplicaciones web. Este es un acrónimo que describe un sistema operativo Linux, con un servidor web Nginx. Los datos del backend se almacenan en la base de datos MySQL y el procesamiento dinámico es manejado por PHP.

En este tutorial te ayudara a instalar el paquete LEMP en un servidor Debian utilizando los paquetes proporcionados por el sistema operativo.

Prerrequisistos

Para completar este tutorial, necesitará:

Paso 1: Instale el Servidor Web de Nginx

Con el fin de mostrar páginas web a nuestros visitantes del sitio, vamos a emplear Nginx, un servidor web moderno y eficiente.

Todo el software que usaremos para este procedimiento vendrá directamente de los repositorios de paquetes predeterminados de Debian. Esto significa que podemos usar la suite de administración de paquetes apt para completar la instalación.

Puesto que es la primera vez que usamos apt para esta sesión, debemos comenzar actualizando nuestro índice de paquetes local. Entonces podemos instalar el servidor:


  • sudo apt-get update
  • sudo apt-get install nginx

En Debian 8, Nginx está configurado para comenzar a ejecutarse después de la instalación.

Si tiene el Firewall ufw ejecución, tendrá que permitir conexiones a Nginx. Debe activar el perfil más restrictivo que permita el tráfico que desee. Dado que aún no hemos configurado SSL para nuestro servidor, en esta guía sólo tendremos que permitir el tráfico en el puerto 80 .

Puede habilitarlo escribiendo:


  • sudo ufw allow 'Nginx HTTP'

Puede verificar el cambio escribiendo:


  • sudo ufw status

Debe ver el tráfico HTTP permitido en la salida mostrada:


Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Ahora, compruebe si el servidor está funcionando accediendo al nombre de dominio de su servidor oa la dirección IP pública en su navegador web. Si no tiene un nombre de dominio apuntado en su servidor y no sabe la dirección IP pública de su servidor, puede encontrarlo escribiendo uno de los siguientes en su terminal:


  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Esto imprimirá algunas direcciones IP. Puede probar cada uno de ellos a su vez en su navegador web.

Como alternativa, puede comprobar qué dirección IP es accesible según se ve desde otras ubicaciones en Internet:


  • curl -4 icanhazip.com

Escriba una de las direcciones que recibe en su navegador web. Debería llevarlo a la página de destino predeterminada de Nginx:

http://server_domain_or_IP

   Bienvenido a Nginx en Debian 2

Si ve la página anterior, ha instalado Nginx correctamente.

Paso 2: Instalar MySQL para Administrar los Datos del Sitio

Ahora que tenemos un servidor web, necesitamos instalar MySQL, un sistema de gestión de bases de datos, para almacenar y gestionar los datos de nuestro sitio.

Puede instalarlo fácilmente escribiendo:


  • sudo apt-get install mysql-server

Se le pedirá que proporcione una contraseña root (administrativa) para usarla dentro del sistema MySQL, y deberá confirmar esa contraseña.

El software de base de datos MySQL ya está instalado, pero su configuración aún no está completa.

Para asegurar la instalación, podemos ejecutar un Script de seguridad sencillo que nos preguntará si queremos modificar algunos valores predeterminados inseguros. Comience el script escribiendo:


  • sudo mysql_secure_installation

Se le pedirá que introduzca la contraseña que estableció para la cuenta root de MySQL. A continuación, se le preguntará si desea cambiar esa contraseña. Si está satisfecho con su contraseña actual, ingrese N para "no" en el indicador:

Using existing password for root.

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

Para el resto de las preguntas que el Script pide, debe presionar "Y" , seguido de la tecla ENTER en cada solicitud. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, inhabilitará los inicios de sesión de root remotos y cargará estas nuevas reglas para que MySQL respete inmediatamente los cambios que haya realizado.

En este punto, su sistema de base de datos está ahora configurado y protegido. Vamos a configurar PHP.

Paso 3: Instalar PHP para Procesamiento

Ahora tenemos Nginx instalado para servir a nuestras páginas y MySQL instalado para almacenar y administrar nuestros datos. Sin embargo, todavía no tenemos nada que pueda generar contenido dinámico. Ahí es donde entra PHP.

Dado que Nginx no contiene procesamiento PHP nativo como otros servidores web, tendremos que instalar fpm , que significa "fastCGI process manager". Le diremos a Nginx que pase las solicitudes de PHP a este software para su procesamiento. También instalaremos un paquete auxiliar adicional que permitirá a PHP comunicarse con nuestro backend de base de datos MySQL. La instalación incorporará los archivos de núcleo de PHP necesarios para que funcione.

Estos paquetes no están disponibles en los repositorios predeterminados debido a los problemas de licencia, por lo que tendremos que modificar las fuentes del repositorio para extraerlos.

Abra /etc/apt/sources.list en su editor de texto:


  • sudo nano /etc/apt/sources.list

Luego, para cada fuente, agregue los contrib y non-free a cada fuente. Su archivo debe tener el siguiente aspecto después de realizar los cambios:

/etc/apt/sources.list
...
deb http://mirrors.digitalocean.com/debian jessie main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free
deb-src http://mirrors.digitalocean.com/debian jessie-updates main contrib non-free

Guarde y salga del archivo. A continuación, actualice sus fuentes:


  • sudo apt-get update

A continuación, instale los módulos php5-fpm y php5-mysql :


  • sudo apt-get install php5-fpm php5-mysql

Ahora tenemos nuestros componentes de PHP instalados, pero necesitamos realizar un ligero cambio de configuración para hacer nuestra configuración más segura.

Abra el archivo de configuración php-fpm principal con privilegios de root:


  • sudo nano /etc/php5/fpm/php.ini

Busque en el archivo el parámetro que establece cgi.fix_pathinfo . Esto se comentará con un punto y coma (;) y se establecerá en "1" de forma predeterminada.

Este es un entorno extremadamente inseguro porque le dice a PHP que intente ejecutar el archivo más cercano que pueda encontrar si no se puede encontrar el archivo PHP solicitado. Esto básicamente permitiría a los usuarios elaborar solicitudes de PHP de una manera que les permitiera ejecutar scripts que no se les debería permitir ejecutar.

Cambiamos estas dos condiciones descomentando la línea y estableciéndola en "0" como esto:

/etc/php5/fpm/php.ini
cgi.fix_pathinfo=0

Guarde y cierre el archivo cuando haya terminado.

Ahora, solo necesitamos reiniciar nuestro procesador PHP escribiendo:


  • sudo systemctl restart php5-fpm

Esto implementará el cambio que hicimos.

Paso 4: Configure Nginx para Usar el Procesador PHP

Ahora, tenemos todos los componentes necesarios instalados. El único cambio de configuración que todavía necesitamos es decirle a Nginx que use nuestro procesador PHP para contenido dinámico.

Hacemos esto en el nivel del bloque del servidor (los bloques del servidor son similares a los anfitriones virtuales de Apache). Abra el archivo de configuración del bloque de servidor Nginx predeterminado escribiendo:


  • sudo nano /etc/nginx/sites-available/default

Actualmente, con los comentarios eliminados, el archivo de bloque de servidor predeterminado de Nginx tiene este aspecto:

/ Etc / nginx / sites-disponible / predeterminado
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

Necesitamos realizar algunos cambios en este archivo para nuestro sitio.

  • En primer lugar, necesitamos agregar index.php como el primer valor de nuestra directiva de index para que los archivos denominados index.php se sirvan, si están disponibles, cuando se solicita un directorio.
  • Podemos modificar la directiva server_name para apuntar al nombre de dominio de nuestro servidor oa la dirección IP pública.
  • Para el procesamiento real de PHP, solo necesitamos descomentar un segmento del archivo que maneja las solicitudes de PHP. Este será el bloque de location ~\.php$ , el fragmento fastcgi-php.conf incluido y el socket asociado a php-fpm .
  • También descomentaremos el bloque de ubicación que trata con archivos .htaccess . Nginx no procesa estos archivos. Si alguno de estos archivos sucede para encontrar su camino en la root del documento, no deben ser servidos a los visitantes.

Los cambios que necesitas hacer están en rojo en el siguiente texto:

/ Etc / nginx / sites-disponible / predeterminado
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name your_server_ip;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Cuando haya realizado los cambios anteriores, puede guardar y cerrar el archivo.

Pruebe su archivo de configuración de errores de sintaxis escribiendo:


  • sudo nginx -t

Si se informa de algún error, vuelva a revisar su archivo antes de continuar.

Cuando esté listo, vuelva a cargar Nginx para realizar los cambios necesarios:


  • sudo systemctl reload nginx

Paso 5: Crear un archivo PHP para Probar la Configuración

Su paquete de LEMP debe estar completamente configurado. Podemos probarlo para validar que Nginx puede entregar correctamente archivos .php a nuestro procesador PHP.

Podemos hacerlo creando un archivo PHP de prueba en nuestra root del documento. Abra un nuevo archivo llamado info.php dentro de la root del documento en el editor de texto:


  • sudo nano /var/www/html/info.php

Escriba o pegue las siguientes líneas en el nuevo archivo. Este es un código PHP válido que devolverá información sobre nuestro servidor:

/var/www/html/info.php
<?php
  phpinfo();
?>

Cuando haya finalizado, guarde y cierre el archivo.

Ahora, puede visitar esta página en su navegador de Internet visitando el nombre de dominio de su servidor o la dirección IP pública seguida por /info.php :

http://server_domain_or_IP/info.php

Usted debe ver una página web que ha sido generada por PHP con información sobre su servidor:

Pantallazo configuracion php 3

Si ve una página similar a esta, ha configurado el procesamiento de PHP con Nginx correctamente.

Después de verificar que Nginx procesa la página correctamente, lo mejor es quitar el archivo que creó, ya que de hecho puede dar a los usuarios no autorizados algunas sugerencias sobre su configuración que pueden ayudarles a intentar entrar.

Por ahora, elimine el archivo escribiendo:


  • sudo rm /var/www/html/info.php

Siempre puede regenerar este archivo si lo necesita más tarde.

Conclusión

Ahora debería tener un paquete LEMP configurado en su servidor Debian. A continuación podrá trabajar en páginas web dinámicas.

 

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

ImprimirCorreo electrónico


Comentar este artículo en los foros (2 respuestas).
Publicado: 6 años 5 meses ago por Forum - Fututel #234
Avatar de Forum - Fututel
Como respuesta general a lo que dices, si el usuario desea puede usar servicios de administración de servidores. Realmente es decisión de cada quien decidir si hacer las cosas con más automatismos o más manual. De todas formas, puede que hay algunas veces alguien necesite/quiera instalar manualmente un servidor (por ejemplo, LEMP) y precisamente este tutorial enseña éso. De por sí, las instalaciones manuales dejan una buena enseñanza acerca de cuáles son los servicios o aplicaciones usadas; por ejemplo, en este caso se sabrá que la aplicación web usará Nginx, MySQL, PHP; pero si alguien novato usará una instalación automática de aplicación web con Nginx puede que no se forme una idea clara de lo que el servidor contiene. También es cierto que puede que ya sepas todo éso y no necesites instalación manual, en cuyo caso puede que simplemente instales - por ejemplo VestaCP - y ya de allí desarrolles varias aplicaciones web independientes y de forma automática.

En cuanto a DigitalOcean, no es que tengamos la intención de que lo uses, puedes usar los servidores que desees. Nosotros mismos - en Fututel - somos proveedores de hosting de servidores VPSs.

Sobre tu link, está roto, aparece error 404.

Saludes!!!
Publicado: 6 años 5 meses ago por Oliver Russell #233
Avatar de Oliver Russell
¿EN LUGAR DE CONFIGURAR MANUALMENTE UN SERVIDOR PHP EN DIGITALOCEAN NO ES MEJOR UTILIZAR ALGUNOS SERVICIOS DE ADMINISTRACIÓN O ADMINISTRACIÓN DE SERVIDORES PARA INICIAR UN SERVIDOR? ES MUCHO MÁS RÁPIDO Y MÁS FÁCIL ESTA MANERA, AQUÍ HAY UN EJEMPLO: WWW.CLOUDWAYS.COM/BLOG/HOST-PHP-ON-DIGITALOCEAN/. NO SÓLO ESTO AHORRA TIEMPO, PERO TAMBIÉN AHORRA DINERO QUE, DE OTRA MANERA, HABRÍA SIDO AL CONTRATAR EL EQUIPO SYSADMIN PARA MANTENER EL SERVIDOR. ENTONCES, ¿HAY ALGÚN BENEFICIO DE IR DIRECTAMENTE A DIGITALOCEAN EN LUGAR DEL USO DE DICHOS SERVICIOS?