Cómo instalar en Ubuntu Linux Nginx, MySQL, PHP (LEMP)

Preparar

Los pasos de este tutorial requieren que el usuario tenga privilegios de root

Paso 1: Actualización Apt-Get

A lo largo de este artículo voy a usar apt-get como un instalador para todos los programas del servidor. Siempre se descubren vulnerabilidades en los programas que utilizamos, por lo que es importante que descarguemos todo el software actualizado para proteger el servidor.

Hagamos una actualización completa de los programas del servidor.

apt-get update

Paso 2: Instalar Mysql

MySQL es un potente sistema de gestión de bases de datos utilizado para organizar y recuperar datos

Para instalar MySQL, abra el terminal y escriba estos comandos:

sudo apt-get install mysql-server php5-mysql

Durante la instalación, MySQL le pedirá que establezca una contraseña de root. Si pierdes la oportunidad de configurar la contraseña mientras el programa se está instalando, es muy fácil establecer la contraseña más adelante desde dentro del shell de MySQL.

Una vez instalado MySQL, debemos activarlo con este comando:

sudo mysql_install_db

Para finalizar ejecutar el siguiente script de instalación de MySQL:

sudo /usr/bin/mysql_secure_installation

El comando le pedirá su contraseña de root actual.

Escríbalo.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

A continuación, el mensaje le preguntará si desea cambiar la contraseña de root. Sigue adelante y elige N para pasar a los siguientes pasos.

Es más fácil simplemente decir Sí (Y) a todas las opciones. Al final, MySQL recargará e implementará los nuevos cambios.

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...

Paso 3: Instalar Nginx

Una vez que MySQL está todo configurado, podemos pasar a instalar nginx en el servidor.

Ejecute:

echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/nginx-stable.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
sudo apt-get update
sudo apt-get install nginx

Nginx no se inicia por sí solo. Para obtener Nginx en ejecución, escriba:

sudo service nginx start

Puede confirmar que Nginx se ha instalado en el servidor dirigiendo su navegador a la dirección IP del servidor.

Puede ejecutar el siguiente comando para revelar la dirección IP:

ifconfig eth0 | grep inet | awk '{ print $2 }'

Paso 4: Instalar PHP

Para instalar PHP-FPM (la versión de PHP para Nginx), abra el terminal y escriba estos comandos. Voy a explicar los detalles de configuracion de nginx y php en el siguiente paso.

sudo apt-get install php5-fpm

Paso 5: Configurar PHP

Necesitamos hacer un pequeño cambio en la configuración php. Abrir el archivo php.ini:

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

Busque la línea cgi.fix_pathinfo = 1 y cambie el 1 a 0.

cgi.fix_pathinfo=0

Si este número se mantiene como 1, el intérprete PHP hará todo lo posible para procesar el archivo que esté lo más cerca posible del archivo solicitado. Este es un posible riesgo de seguridad. Si este número se establece en 0, a la inversa, el intérprete sólo procesará la ruta exacta del archivo, una alternativa mucho más segura. Guardar y Salir. Ahora necesitamos hacer otro pequeño cambio en la configuración de php5-fpm. Abra www.conf:

sudo nano /etc/php5/fpm/pool.d/www.conf

Buscar la línea que contenga: listen = 127.0.0.1:9000, y cámbiela por 127.0.0.1:9000 to /var/run/php5-fpm.sock.

listen = /var/run/php5-fpm.sock

Grabar y salir.

Restaurar php-fpm:

sudo service php5-fpm restart

Paso 6: Configurar Nginx

Abra el archivo de host virtual predeterminado.

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

La configuración debe incluir los cambios que se muestra a continuación (los detalles de los cambios están abajo de la configuración):

[...]
server {
listen 80;

root /usr/share/nginx/www;
index index.php index.html index.htm;

server_name example.com;

location / {
try_files $uri $uri/ /index.html;
}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}

# pass the PHP scripts to FastCGI server listening on the php-fpm socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

}

}
[...]

Estos son los detalles de los cambios:

  • Agregue index.php a la línea de índice.

  • Cambie el server_name del host local a su nombre de dominio o dirección IP (reemplace example.com en la configuración)

  • Cambiar las líneas correctas en la sección “location \~ \.php\$ {“

  • Guardar y Salir

Paso 7: Crear una página de información de PHP

Podemos ver rápidamente todos los detalles de la nueva configuración de php creando una página web.

Para ello, primero cree un nuevo archivo:

sudo nano /usr/share/nginx/www/info.php

Añada las siguientes líneas al archivo:

<!--?php phpinfo(); ?-->

Graba y salga. Reinicie Nginx.

sudo service nginx restart

Puede ver los detalles de configuración de nginx y php-fpm visitando http://su-direccion-ip/info.php

Ahora sus servicios LEMP están configurados en su servidor.

Deja un comentario