Saludos amigos, hoy os dejo este tutorial, del que vendrán asociados diferentes posts para instalar sobre LEMP
LEMP es una combinación de herramientas Open-Source. El acrónimo LEMP viene derivado de las primeras letras de cada uno de los software: (Linux, Nginx HTTP Server, MariaDB y PHP, Perl o Python)
Este tutorial está basado en Ubuntu 14.04.2 LTS
- Instalación NGINX
- Instalación MariaDB
- Instalación PHP
- Instalación phpMyAdmin
Instalación Nginx
Nginx (se pronuncia engine-x y de ahí sale el LEMP) es un servidor HTTP y proxy, gratuito y además open-source, se puede incluso usar de proxy de IMAP y POP3 (Zimbra lo hace desde hace tiempo).
Por ser ligero y potente, es el sustituto perfecto de Apache, consumiendo menos recursos y más potente que Apache. Además se puede usar como reverse proxy de nuestros sistemas.
Para instalar nginx debemos comprobar antes que no tenemos Apache corriendo o instalado en el sistema:
[syntax type=”php”]sudo apt-get purge apache2*
sudo apt-get autoremove[/syntax]
Con el siguiente comando instalaremos nginx:
[syntax type=”php”]sudo apt-get install nginx[/syntax]
Vamos a levantar el servicio con el siguiente comando:
[syntax type=”php”]sudo service nginx start[/syntax]
Comprobando Nginx
Abriremos nuestro navegador web e introduciremos lo siguiente http://VUESTRAIPDELSERVER/
Configuración Nginx
Editaremos el fichero /etc/nginx/nginx.conf con el editor que os guste, en este caso nano:
[syntax type=”php”]sudo nano /etc/nginx/nginx.conf[/syntax]
Ahora y según el número de vCPU que tengamos, ajustaremos el worker_processes, se puede comprobar con el siguiente comando lscpu:
[syntax type=”php”]root@nginx-pastebin:/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: 70
Stepping: 1
CPU MHz: 2494.099
BogoMIPS: 4988.19
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
L4 cache: 131072K
NUMA node0 CPU(s): 0[/syntax]
En mi caso, en mi lab solamente tengo 1 vCPU asique debe quedar así: worker_processes 1
Y reiniciamos el servicio de Nginx:
[syntax type=”php”]sudo service nginx restart[/syntax]
Toda la configuración por defecto se encuentra en el fichero /etc/nginx/sites-available/default
Editaremos este fichero /etc/nginx/sites-available/default e introduciremos los siguientes cambios, en negrita
[syntax type=”php”][…]
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;
[…][/syntax]
Os dejo aquí una explicación sobre que estamos viendo en este fichero:
- listen 80; –> Puerto de escucha para IPv4
- listen [::]:80 default_server ipv6only=on; –> puerto de escucha para IPv6
- root /usr/share/nginx/html; –> Directorio por defecto donde se almacenarán los ficheros HTML, PHP, etc.
- server_name server.unixmen.local; –> Nombre del Virtualhost
El siguiente paso es una best practice, debemos movernos hasta el siguiente párrafo #location ~ .php$. Descomentarlo y se debe ver así:
[syntax type=”php”]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;
}[/syntax]
Hemos añadido la línea ‘try_files $uri =404;’ para mejorar la seguridad.
Salvaremos el fichero y ya podemos salir de él.
Verificando la configuración de Nginx
Podemos comprobar si nuestra config de Nginx es correcta:
[syntax type=”php”]sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful[/syntax]
Y finalmente reiniciamos el servicio de nginx
[syntax type=”php”]sudo service nginx restart[/syntax]
Instalación MariaDB
Instalaremos MariaDB para nuestro server LEMP. MariaDB es un software sustituto a MySQL.
Vamos a asegurarnos que eliminamos los paquetes de MySQL.
[syntax type=”php”]sudo apt-get purge mysql*[/syntax]
Lanzaremos el siguiente comando para eliminar los paquetes:
[syntax type=”php”]sudo apt-get autoremove[/syntax]
Lo mejor par instalar MAriaDB es añadir los PPA de Maria DB para Ubuntu 14.04LTS
[syntax type="php"]sudo apt-get install software-properties-commonsudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943dbsudo add-apt-repository 'deb http://lon1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main'[/syntax]
Haremos una actualización de paquetes e instalaremos MariaDB usando los siguientes comandos:
[syntax type=”php”]sudo apt-get update
sudo apt-get install mariadb-server mariadb-client[/syntax]
Durante la instalación, nos solicitará una contraseña y una verificación de la misma:
Nos la pedirá una vez más y terminará la instalación en pocos segundos.
Podemos comprobar que versión de MariaDB tenemos con el siguiente comando:
[syntax type=”php”]root@nginx-pastebin:/home/oper# mysql -v -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.0.16-MariaDB-1~trusty-log mariadb.org binary distributionCopyright (c) 2000, 2014, Oracle, MariaDB Corporation 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)]> [/syntax]
Y comprobar si el servicio está levantado usando el siguiente comando:
root@nginx-pastebin:/home/oper# sudo service mysql status
* /usr/bin/mysqladmin Ver 9.1 Distrib 10.0.16-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.Server version 10.0.16-MariaDB-1~trusty-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 1 min 7 secThreads: 1 Questions: 698 Slow queries: 0 Opens: 563 Flush tables: 2 Open tables: 31 Queries per second avg: 10.417
root@nginx-pastebin:/home/oper#
Instalación PHP
Instalaremos PHP con el siguiente comando:
[syntax type=”php”]sudo apt-get install php5 php5-fpm php5-mysql[/syntax]
Configuración PHP
Vamos a editar primeramente un parámetro en el fichero de configuración de PHP:
[syntax type=”php”]sudo nano /etc/php5/fpm/php.ini[/syntax]
Y buscaremos la línea que contiene ‘cgi.fix_pathinfo=1′, la descomentaremos y cambiaremos el valor de 1 por 0.
[syntax type=”php”]cgi.fix_pathinfo=0[/syntax]
Ahora haremos un reinicio al servicio php-fpm
[syntax type=”php”]sudo service php5-fpm restart[/syntax]
Probando que PHP está bien instalado
Vamos a crear el típico “testphp.php” dentro del directorio raíz de nginx.
[syntax type=”php”]sudo nano /usr/share/nginx/html/testphp.php[/syntax]
Y añadiremos las siguientes líneas en él: .
[syntax type=”php”]<?php
phpinfo();
?>[/syntax]
Salvar y salir del fichero.
Navegar a la siguiente dirección http://VUESTRAIP/testphp.php para ver información adicional, toda esta información la provee el phpifo, una vez hemos visto que funciona, se recomienda borrar este fichero.
Instalación phpMyAdmin
phpMyAdmin es una herramienta web Open-Source que nos permite administrar bases de datos MySQL o MariaDB.
Instalación phpMyAdmin
Está disponible en los repositorios oficiales:
[syntax type=”php”]sudo apt-get install phpmyadmin[/syntax]
En un primer paso nos preguntará sobre que servidor web weremos instalarlo, si sobre apache2 o lighthttpd, seleccionaremos apache, aunque no tiene mayor importancia.
En la siguiente pregunta sobre dbconfig-common marcaremos Yes
Crearemos una contraseña para poder administrar phpMyAdmin:
Y también una contraseña para la aplicación de MySQL.
Confirmamos la password
Crearemos un enlace simbólico entre la carpeta de phpMyAdmin y el directorio root de nginx.
[syntax type=”php”]sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/[/syntax]
Instalaremos adicionalmente la extensión mcrypt:
[syntax type=”php”]root@nginx-pastebin:/home/oper# apt-get install php5-mcrypt
root@nginx-pastebin:/home/oper# php5enmod mcrypt
root@nginx-pastebin:/home/oper# service php5-fpm restart[/syntax]
Reiniciamos el servicio de nginx.
[syntax type=”php”]sudo service nginx restart[/syntax]
Accediendo a la consola Web de phpMyAdmin
Ahora, ya podremos acceder a nuestra consola de phpMyAdmin visitando http://VUESTRAIP/phpmyadmin/
Nos solicitará el usuario y password que hemos creado anteriormente, suele ser root y la pass que hayáis escrito previamente.
Y según que versión de Base de Datos tengamos, veremos un motor de Base de Datos u otro:
En MariaDB veremos lo siguiente
Para más información sobre Ubuntu 14.04LTS, por favor visitar Ubuntufacil.








excelente explicación, la mas clara que he encontrado, me sirvió de mucho, gracias
Hola Jorge, estoy siguiendo tus pasos y todo ok! Pero no me queda claro porque creas un enlace simbólico entre el directorio de phpMyAdmin y el directorio root de nginx. Es realmente necesario?
Podrías explicarlo?
Gracias!
Saludos Hector,
Siempre puedes mover la carpeta de PHPMyadmin de donde se encuentra /usr/share/phpmydadmin a la de root de nginx, pero en este caso he preferido un enlace simbolico.
Un saludo
Hola puedo utilizar ubuntu server para la instalacion de LEMP
Si claro, cualquier distribucion.
hola jorge una consulta yo quiero instalar chamilo LMS usando nginx los archivos de instalacion tendria q colocarlos en la ruta /usr/share/nginx/html/