INSTALACION DE NGINX (LEMP) EN ARCHLINUX

¿Qué es Nginx?



![alt](http://logonoid.com/images/nginx-logo.png)




Es un servidor HTTP, proxy en reversa, balanceador de carga y proxy de correo electrónico, basado en el concepto del código abierto. Enfocado en una arquitectura de manejo de eventos asíncronos en lugar de hilos o threads es reconocido por su alto desempeño, bajo consumo de recursos, estabilidad, esca labilidad y configuración sencilla.

# LEMP es el acrónimo de Linux Nginx Mysql y PHP.
Se estima que más del 14% de los sitios en Internet están servidos o proxiados por Nginx, entre ellos podemos mencionar algunos de gran relevancia que seguro conocerás como GitHub, Wordpress.com, Netflix, Heroku, SoundCloud y muchos más.

Nginx vs. Apache

Mencionemos algunas características que ilustrarán las ventajas que ofrece Nginx en contraste con el servidor web más conocido en el mercado.

* Manejo de concurrencia de entre 4 y 8 veces mayor. * Servicio de recursos estáticos de hasta 300% más rápido. * Consumo de memoria de hasta 20 veces menos.

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

Primer paso:

Debemos actualizar el gestor de paquetes

sudo pacman -Syu

Segundo paso:
__Vamos a instalar MariaBD (Mysql)__
`sudo pacman -S mysql`

Es necesario inicializar el directorio de datos MariaDB antes de iniciar el servicio. Para ello, ejecute:
`mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql`

__Ahora vamos iniciar los servicio de MariaDB__ y permitir que se inicie al arrancar
`systemctl start mysqld`

`systemctl enable mysqld`

Si queremos detener los servicio de MariaDB
`systemctl stop mysqld`

Si queremos reiniciar los servicio de MariaDB
`systemctl restart mysqld`

Podemos verificar si MariaDB está funcionando
`systemctl status mysqld`

__Nos debera devolver algo similar:__ >[ariel@Toshiba ~]$ systemctl status mysqld
● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2016-12-13 02:34:28 BOT; 1min 6s ago Process: 675 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code Process: 338 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr Process: 333 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code= Main PID: 428 (mysqld) Status: "Taking your SQL requests now..." Tasks: 27 (limit: 4915) CGroup: /system.slice/mariadb.service └─428 /usr/sbin/mysqld

dic 13 02:34:25 Toshiba mysqld[428]: 2016-12-13 2:34:25 139937974525440 [Note] InnoDB: Highest
dic 13 02:34:26 Toshiba mysqld[428]: 2016-12-13 2:34:26 139937974525440 [Note] InnoDB: 128 rol
dic 13 02:34:26 Toshiba mysqld[428]: 2016-12-13 2:34:26 139937974525440 [Note] InnoDB: Waiting
dic 13 02:34:26 Toshiba mysqld[428]: 2016-12-13 2:34:26 139937974525440 [Note] InnoDB: Percon
dic 13 02:34:27 Toshiba mysqld[428]: 2016-12-13 2:34:27 139937974525440 [Note] Plugin 'FEEDBAC
dic 13 02:34:27 Toshiba mysqld[428]: 2016-12-13 2:34:27 139937445836544 [Note] InnoDB: Dumping
dic 13 02:34:27 Toshiba mysqld[428]: 2016-12-13 2:34:27 139937974525440 [Note] Server socket c

También seremos capases de establecer la contraseña de root de MySQL durante la instalación.

sudo mysql_secure_installation


Nos tendra que devolver una serie de preguntas:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

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

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

Set root password? [Y/n]## Press Enter
New password:## Enter password
Re-enter new password: ## Re-enter password
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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]## Press Enter
... 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]## Press Enter
... Success!

By default, MariaDB 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]## Press Enter

  • 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]## Press Enter
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Tercer paso:
__Instalar Nginx__ ahora vamos a instalar Nginx web del servidor con el comando:
`pacman -S nginx`

Iniciamos el servicio Nginx y permitir que se inicie al arrancar, utilizando comandos:
`systemctl start nginx`

`systemctl enable nginx`

Para comprobar si Nginx ha comenzado o no, ejecutamos
`systemctl status nginx`

__Nos devolvera lo siguiente__
>● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2016-02-19 16:20:41 IST; 5s ago
Process: 10032 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=exited, status=0/SUCCESS)
Main PID: 10047 (nginx)
Tasks: 2 (limit: 512)
CGroup: /system.slice/nginx.service
├─10047 nginx: master process /usr/bin/nginx -g pid
/run/nginx.pid...
└─10048 nginx: worker process

Feb 19 16:20:41 server systemd[1]: Starting A high performance web server a.....

Feb 19 16:20:41 server systemd[1]: Started A high performance web server an...r.

Hint: Some lines were ellipsized, use -l to show in full.

El archivo de configuración global Nginx es /etc/nginx/nginx.conf . Puede editar y cambiarlo según sus necesidades.

Nginx prueba

Abra su navegador Web y vaya a http://localhost o http://dirección IP . Usted estará con la página de prueba del servidor Nginx.
alt

Cuarto paso:
__Instalación de PHP__
`pacman -S php-fpm`

Una vez instalado PHP, necesitamos decirle Nginx ejecutar PHP usando PHP-FPM.

Para ello, edite /etc/nginx/nginx.conf,

nano /etc/nginx/nginx.conf


Encuentre la siguiente sección y añadir o modificar como se muestra a continuación.

location ~ \.php$ {

fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

fastcgi_index index.php;

root /usr/share/nginx/html;

include fastcgi.conf;

}


alt

Guardar y cierre el archivo.

Ahora vamos a inciar el servicio de nginx utilizando los siguiente comandos.

Para iniciar el servicio y permitir que se inicie al arrancar

systemctl start php-fpm


systemctl enable php-fpm


Si queremos detener el servicio de Nginx

systemctl stop php-fpm

Test php

Ahora vamos a crear un test.php en el directorio raíz del servidor web.

nano /usr/share/nginx/html/test.php


Añadir las siguientes líneas:

<?php
phpinfo();
?>

Por ultimo guardamos y reiniciamos
Si queremos reiniciar el servicio de Nginx

systemctl restart php-fpm


Abra su navegador web y vaya a http: //ip-address/test.php
Nos tendra que devolver lo siguiente en pantalla

alt