Entradas

Mostrando entradas de abril, 2017

Node como servicio en CentOS 7

Imagen
Al instalar Node este no lo hace como un servicio, por eso para entornos de producción donde es necesario que el sistema este activo 24/7 es necesario utilizar alguna herramienta para este propósito. Existen varias alternativas entre las cuales está crear un script y ejecutarlo como servicio, utilizar upstart o módulos propios de node como forever o pm2, de este último va el post.
PM2 es un gestor de procesos en entornos de producción para aplicaciones Node.js con un balanceador de carga incorporado. Permite mantener las aplicaciones siempre activas, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de un administrador del sistema.
sudo npm install pm2@latest -g sudo pm2 startup sudo pm2 save sudo pm2 start app.js sudo systemctl restart pm2-root
$ sudo pm2 start app.js [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /folder/app.js in fork_mode (1 instance) [PM2] Done. ┌──────────┬────┬──────┬─────┬────────┬────────…

Compilando PHP FPM en CentOS 7

Realmente ya no es necesario en la mayoría de los casos compilar tu propia versión de PHP pero en ciertos momentos puede ser necesario, por ejemplo, a la hora de compilar una librería que no esté plenamente difundida o por temas de rendimiento porque al crear una versión compilada puedes incluir en el núcleo de php las extensiones que utilizas.
Este procedimiento lo hice en septiembre del año pasado, cuando aún no estaba tan extendido en linux la instalación de la librería de Microsoft para SQL Server, por eso la incluyo en este manual. ¿Qué necesitamos instalar primero? yum groupinstall "Development Tools"
(yum install kernel-devel) yum install wget \ autoconf \ libxml2-devel \ krb5-devel \ libicu-devel \ gcc-c++ \ bzip2-devel \ curl-devel \ libpng-devel \ libc-client-devel \ openssl-devel \ libmcrypt-devel.x86_64 \ net-snmp \ net-snmp-devel \ git
En caso de errores podéis consultar esta guía con los 2…

Composer: allow_url_fopen, disable_functions, open_basedir

Imagen
En cualquier manual básico de seguridad en PHP se indica que las instrucciones allow_url_fopen, disable_functions y open_basedir deben ser modificadas para impedir posibles brechas. El problema es que composer utiliza estas directivas de php.ini.


Los posibles errores que nos pueden dar son los siguientes
Phar::mapPhar(): open_basedir restriction in effect. File(/composer) is not within the allowed path(s) require(phar://composer.phar/bin/composer): failed to open stream: phar error: invalid url or non-existent phar "phar://composer.phar/bin/composer" is_dir(): open_basedir restriction in effect. File(/.composer) is not within the allowed path(s) Update failed (The Process class relies on proc_open, which is not available on your PHP installation.) [Symfony\Component\Process\Exception\RuntimeException] The Process class relies on proc_open, which is not available on your PHP installation.
La forma menos segura para tratar estos errores es poner en peligro nuestra instalación…

Actualizar clave primaria autoincrement en SQL Server

Imagen
Por defecto SQL Server no deja modificar los índices autoincrement, ni siquiera poniendo la sintaxis:

SET IDENTITY_INSERT TuTabla ON GO
Para poder actualizar los valores de estos índices hay miles de tutoriales, pero a mi modo de ver todos demasiado complejos u obsoletos, con SQL Server 2016 lo he podido hacer siguiendo los pasos que voy a describir en este post.
Lo primero es actualizar todas las claves foráneas para que al actualizar el valor del índice este se actualice en cascada, esto se puede hacer desde el SSMS sin mayor problema.

Luego eliminare de la clave primaria el autoincrement de la siguiente forma:


Una vez realizado este cambio puedes modificar los valores de los índices en esa columna.
Ojo, no es necesario eliminar la clave primaria ni crear columnas adicionales como dicen otros manuales. Tampoco es necesario que en la consulta ejecutes el comando SET IDENTITY_INSERT TuTabla ON antes. Nada de esto es necesario con este procedimiento.
El último paso es volver a poner es…