Instalar LEMP Server (nginx, MySQL o MariaDB, PHP) en Ubuntu 14.04LTS

administrador Blog

LEMP es una combinación de herramientas open-source. El acronimo LEMP, viene derivado de las primeras letras de cada software: (Linux, Nginx HTTP Server, MySQL o MariaDB y PHP, Perl o Python)

El tutorial que hoy os dejamos se trata de instalar LEMP en nuestros VPS con la reciente Ubuntu 14.04LTS, de la cual fuimos pioneros en soportar en nuestros planes de Servidores Virtuales.

Instalar Nginx

Nginx (que se pronuncia engine-x) es un servidor HTTP y proxy, gratuito y open-source, se puede incluso usar de proxy de IMAP y POP3, fijaros si es potente. Es un claro sustituto a Apache, consumiendo muchos menos recursos y con mucha más potencia que Apache. Además se puede usar como reverse proxy de nuestros sistemas. Por ejemplo Facebook o Hulu, utilizan nginx para soportar sus millones de peticiones por segundo diarias.

Para instalar Nginx en nuestro VPS, realizaremos los siguientes pasos:

Nota: Si tuvieras instalado apache2 en el VPS, hay que eliminarlo primero, para desinstalarlo, introduciremos los siguientes comandos:

sudo apt-get purge apache2*
sudo apt-get autoremove

Ahora, podemos instalar nginx sin problemas:

sudo apt-get install nginx

Arrancaremos el servicio Nginx con el siguiente comando:

sudo service nginx start

Probando Nginx

Abriremos nuestro navegador web e introduciremos lo siguiente >http://ip-address/  Veremos una imagen similar a la siguiente:

emibin-lemp-001
Configurar Nginx

Abriremos el fichero /etc/nginx/nginx.conf con vuestro editor preferido:

sudo nano /etc/nginx/nginx.conf

Y tendremos que cambiar el worker_processes (Número de CPU de nuestro VPS). Para ver el número de CPU de nuestro VPS, ejecutaremos el comando “lscpu”:

root@ubuntu:/home/oper# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Stepping:              7
CPU MHz:               2500.000
BogoMIPS:              5000.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              15360K
NUMA node0 CPU(s):     0

Asi que, deberiamos dejarlo de la siguiente manera: worker_processes 1

Y reiniciamos el servicio de Nginx:

sudo service nginx restart

El vhost por defecto está definido en el fichero /etc/nginx/sites-available/default

Abriremos el fichero /etc/nginx/sites-available/default en cualquier editor. Iremos hasta la sección Server, deberemos dejar la configuración como se indica en este tutorial, se indican en negrita:

[…]
server {
      listen 80 default_server;
      listen [::]:80 default_server ipv6only=on;
      root /usr/share/nginx/html;
      index index.php index.html index.htm;
      # Make site accessible from http://localhost/
      server_name FQDN-QUE-QUERAMOS;
[…]

Una breve explicación de cada comando que vemos:

  • listen 80; –> puerto para escuchar mediante ipv4
  • listen [::]:80 default_server ipv6only=on; –> puerto para escuchar mediante ipv6
  • root /usr/share/nginx/html; –> Directorio por defecto donde debemos alojar los ficheros HTML
  • server_name server.unixmen.local; –> Nombre del Virtualhost

Ahora y para corregir un posible fallo de zero day, realizaremos estos cambios a continuación, ir hasta la sección #location ~ .php$. Descomentar y dejar como se adjunta:

 location ~ .php$ {
         try_files $uri =404;
         fastcgi_split_path_info ^(.+.php)(/.+)$;
         #       # NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini
         #
         #       # With php5-cgi alone:
         #       fastcgi_pass 127.0.0.1:9000;
         #       # With php5-fpm:
         fastcgi_pass unix:/var/run/php5-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
    }

Hemos añadido la línea  ‘try_files $uri =404;’ para prevenir exploits zero day.

Salvar y salir del fichero

Probar la configuración de Nginx

Deberemos de comprobar si nuestro fichero de configuración de Nginx es correcto:

sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Y finalmente reiniciamos el servicio de nginx

sudo service nginx restart

 

Instalar MySQL

MySQL es un sistema de bases de datos relacionales (RDBMS) que se ejecuta sobre un servidor, y provee un acceso multi usuario a diferentes bases de datos. Es uno de los principales pilares del Internet moderno, millones de sitios web guardan sus datos sobre este sistema. Vamos a ver los comandos para la instalación:

sudo apt-get install mysql-server mysql-client

En la instalación, nos solicitará una password para el usuario root:

emibin-lemp-002

Y volvemos a repetir la password una vez más:emibin-lemp-004

Podemos verificar el estado de MySQL con el siguiente comando:

sudo service mysql status
mysql start/running, process 3901

Instalar MariaDB

Si por el contrario, queremos MariaDB para nuestro LEMP, hemos de seguir estos pasos. MariaDB es el software que sustiuirá a MySQL. Es robusto, escalable e incluye numerosas mejoras para nuestro entorno SQL.
Lo primero que tendremos que hacer, es eliminar los paquetes de MySQL. Para completar una desinstalación de MySQL, si es que la hubiera, hay que realizar el siguiente comando:

sudo apt-get purge mysql*

Lanzaremos el siguiente comando para eliminar los paquetes:

sudo apt-get autoremove

Ahora, tendremos que añadir los PPA de Maria DB para Ubuntu 14.04LTS

sudo apt-get install software-properties-common
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository ‘deb http://mirror.netinch.com/pub/mariadb/repo/10.0/ubuntu trusty main’

Haremos una actualización de paquetes e instalaremos MariaDB usando los siguientes comandos:

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Durante la instalación, nos solicitará una contraseña y una verificación de la misma:

emibin-lemp-004

Y nos solicitará repetirla una vez más:emibin-lemp-005
Podemos comprobar que versión de MariaDB tenemos con el siguiente comando:

root@ubuntu:/home/oper# mysql -v -uroot -pPASS
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 40
Server version: 10.0.10-MariaDB-1~trusty-log mariadb.org binary distribution
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Reading history-file /root/.mysql_history
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
MariaDB [(none)]>

Y comprobar si el servicio está corriendo, usando el siguiente comando:

root@ubuntu:/home/oper# sudo service mysql status
 * /usr/bin/mysqladmin  Ver 9.1 Distrib 10.0.10-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.
Server version          10.0.10-MariaDB-1~trusty-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 1 min 30 sec
Threads: 1  Questions: 673  Slow queries: 0  Opens: 567  Flush tables: 2  Open tables: 29  Queries per second avg: 7.477

Instalar PHP

PHP (es un acronimo de PHP: Hypertext Preprocessor) es un lenguaje de programación de código abierto de propósito general, muy usado especialmente para el desarrollo web y puede ser embebido en páginas HTML.

Instalar PHP con el siguiente comando:

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

Configurar PHP

Tendremos que realizar un pequeño cambio en el fichero php.ini. Abriremos el fichero php.ini con cualquier editor:

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

Y buscaremos la línea ‘cgi.fix_pathinfo=1′, la descomentaremos y cambiaremos el valor de 1 a 0.

cgi.fix_pathinfo=0

Ahora haremos un reinicio al servicio php-fpm

sudo service php5-fpm restart

Probar PHP

Crearemos un fichero llamado “testphp.php” dentro del directorio raíz de nginx.

sudo nano /usr/share/nginx/html/testphp.php

Y añadiremos las siguientes líneas en él: .

<?php
 phpinfo();
 ?>

Salvar y salir del fichero.

Navegar a la siguiente dirección http://server-ip-address/testphp.php Y podremos ver mucha información de nuestro sistema, build, módulos, pplugins, etc:

emibin-lemp-006

Administrar las bases de datos MySQL

Lo realizaremos con phpMyAdmin. phpMyAdmin es una herramienta web open-source que nos permite administrar nuestras bases de datos MySQL o MariaDB

Instalar phpMyAdmin

Está disponible en los repositorios oficiales, por lo que tan solo deberemos seguir los siguientes pasos:

sudo apt-get install phpmyadmin

Seleccionaremos cualquiera de las dos opciones, nginx no aparece como soportado. Pero al final podremos ejecutarlo sin ningún problema.
emibin-lemp-007

En esta opción, marcaremos dbconfig-common en Yesemibin-lemp-008

Introduciremos una contraseña para el usuario con privilegios administrativosemibin-lemp-009

Y también una contraseña para la aplicación de MySQL.emibin-lemp-010

Confirmamos la passwordemibin-lemp-011

Crearemos un enlace simbolico entre phpMyAdmin y el directorio root de nginx. Como vimos antes, el directorio por defecto es /usr/share/nginx/html/

sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/

Reiniciamos el servicio de nginx.

sudo service nginx restart

Accediendo a la consola Web de phpMyAdmin

Ahora, ya podremos acceder a nuestra consola de phpmyadmin navegando en http://server-ip-address/phpmyadmin/ desde nuestro navegador

Para loguearnos deberemos introducir las credenciales que introducimos anteriormente, en mi caso root y la password.

emibin-lemp-012Y según que versión de Base de Datos tengamos, veremos un motor de Base de Datos u otro:

Para MySQL

emibin-lemp-013

Para MariaDBemibin-lemp-014

Para más información sobre Ubuntu 14.04LTS, en Ubuntufacil.

Contrata tu plan VPS en el siguiente enlace.

Basado en el tutorial de unixmen