LINUX

Unidad NGINX: un servidor de aplicaciones web de código abierto

Servidor de aplicaciones de la unidad NGINXNginx anunció el lanzamiento de la primera versión beta de Unit: Nginx Unit, un servidor de aplicaciones web dinámico, diseñado para ejecutar aplicaciones en varios idiomas. Es un servidor de aplicaciones que admite Python, PHP y Go, con soporte para Java, Node.js y Ruby.

La unidad es liviana, políglota y está configurada dinámicamente a través de API. NGINX Unit está actualmente disponible como beta, por lo que no se recomienda su uso en producción. La unidad se puede configurar realizando solicitudes HTTP

Instalar la unidad Nginx

NGINX Unit está probado para compilarse y ejecutarse en los siguientes sistemas: Linux 2.6 o posterior, FreeBSD 9 o posterior, MacOS X, Solaris 11. Existen paquetes de Unit disponibles en Centos 7 y Ubuntu 16.04. Para ejecutar aplicaciones, necesita los lenguajes de programación python (2.6, 2.7, 3), php (5, 7), Go (1.6 o posterior)

a) En Centos 7

Primero debemos crear el repositorio /etc/yum.repos.d/unit.repo

# vim /etc/yum.repos.d/unit.repo
[unit]
name=unit repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Ahora podemos instalar

# yum install unit
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.linode.com
 * epel: fedora-epel.mirrors.tds.net
 * extras: mirrors.linode.com
 * updates: mirrors.linode.com
Resolving Dependencies
--> Running transaction check
---> Package unit.x86_64 0:0.1-1.el7.ngx will be installed
--> Processing Dependency: libphp5-5.4.so()(64bit) for package: unit-0.1-1.el7.ngx.x86_64
--> Running transaction check
---> Package php-embedded.x86_64 0:5.4.16-42.el7 will be installed
--> Finished Dependency Resolution

b) En Ubuntu 16.04

Primero necesitamos descargar la clave PGP

# wget http://nginx.org/keys/nginx_signing.key

Ahora podemos instalar la clave

# apt-key add nginx_signing.key
OK

Ahora debemos agregar Unit a nuestro sources.list expediente

# vim /etc/apt/sources.list
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx 
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

Entonces instálalo

# apt update
...............
...............
Get:8 http://nginx.org/packages/mainline/ubuntu xenial/nginx Sources [24.7 kB]
Get:9 http://nginx.org/packages/mainline/ubuntu xenial/nginx amd64 Packages [35.2 kB]
# # apt install unit
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following packages were automatically installed and are no longer required:
 libdvdnav4 libdvdread4 libenca0 libguess1 librubberband2v5 libsdl2-2.0-0 libsndio6.1 libva-wayland1 libva-x11-1 mpv rtmpdump
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
 libphp-embed libphp7.0-embed
Suggested packages:
 php-pear
The following NEW packages will be installed:
 libphp-embed libphp7.0-embed unit

Configurar e iniciar la aplicación

La configuración de la Unidad debe incluir una aplicación asociada con al menos un oyente. Entonces, la configuración tendrá dos secciones: oyente y solicitud. Debe utilizar la API para definir un objeto JSON para cada aplicación en su sección. De forma predeterminada, la API de la unidad está disponible en el archivo de socket de control control.unit.sock ubicado en /var/run/control.unit.sock o /run/control.unit.sock cuando instala la unidad a través de los paquetes precompilados.

Debe definir al menos un oyente si desea que su aplicación sea accesible a través de HTTP. los sección de oyentes incluye la dirección IP y el puerto en el que Unit escucha las solicitudes del cliente a una aplicación con nombre.

"listeners": {
         "*:8300": {
             "application": "myapps"
         }
     }

Sobre el sección de aplicación, el objeto JSON define varias características de este, incluido el idioma en el que está escrito, la cantidad de procesos de trabajo de la aplicación a ejecutar, el directorio con el archivo o archivos para la aplicación, etc. Debe notar que algunos parámetros pueden variar según el idioma, por lo que , cada plataforma tiene opciones ligeramente diferentes.

"applications": {
         "myapps": {
             "type": "php",
             "workers": 20,
             "root": "/var/www/php-app",
             "index": "index.php"
         }
     }

Para crear una configuración inicial, primero debe crear un objeto de configuración, especificar los datos JSON en el cuerpo de un PONER petición. El puerto que indicaste es el que se utilizará para iniciar la aplicación.

Puede indicar la ruta de la json archivo como se muestra a continuación:

# curl -X PUT -d @/path/file.json --unix-socket /var/run/control.unit.sock http://localhost:port

Por ejemplo, crearemos el archivo json de la siguiente manera:

#vim /var/www/html/apps.json
{
     "listeners": {
         "*:4500": {
             "application": "apps"
         }
     },
     "applications": {
         "apps": {
             "type": "php",
             "workers": 10,
             "user": "www-php",
             "group": "www-php",
             "root": "/var/www/html",
             "index": "index.php"
         }
     }
}

Ahora que decidimos usar el puerto 4500, deberíamos abrirlo para su uso

# firewall-cmd --zone=public --permanent --add-port=4500/tcp
# firewall-cmd --zone=public --permanent --add-port=4500/udp
# firewall-cmd --reload

Ahora crearemos un archivo de configuración inicial con el siguiente comando:

# curl -X PUT -d @/var/www/html/apps.json --unix-socket /var/run/control.unit.sock http://localhost:4500
{
	"success": "Reconfiguration done."
}

Puedes ver que la configuración está bien hecha. Puede acceder a su aplicación web utilizando la dirección IP y el puerto especificado

Puede ver que el servidor API es la unidad en lugar de apache y el puerto utilizado es el configurado

Unit es un útil servidor de aplicaciones web dinámico que ofrece la posibilidad de ejecutar su aplicación en varios idiomas. Puede especificar el puerto que desea utilizar. Puede agregar los otros tipos de proyectos al mismo archivo json respetando la definición del tipo de objeto. Para obtener más detalles, puede ver el documentación oficial.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar