Entradas

Mostrando las entradas etiquetadas como linux

CentOS 8 ahora viene con DNF

Uno de los cambios más radicales en CentOS 8 ha sido la sustitución del gestor de paquetes YUM por DNF, en la mayoría de los sitios comentan que la transición es casi trivial, pero esto no es del todo cierto, en este post veremos algunas consideraciones sobre este cambio. Primero veamos las 3 razones que se esgrimen para haber levado a cabo este cambio: La documentación de yum es casi inexistente para ampliar su funcionalidad YUM no soporta Python 3 El gestor de dependencias utilizado por DNF es más estándar, ya vine siendo utilizado por SUSE hace mucho tiempo dentro de zypper. Ahora bien, pese a que la sintaxis es básicamente la misma el manejo de repositorios no lo es tanto, se van a poder agregar como se hacía con YUM, incluso dejando en el mismo directorio los archivos .repo pero algunas cosas cambian, en mi caso pondré las diferencias para trabajar con algunas librerías de PHP. Por ejemplo, en vez de habilitar diferentes repos para una u otra versión ahora se habilita un...

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. ┌──────────┬────┬──────┬─────┬─────...

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 nu...

HTTP/2 para los usuarios de Google Chrome

Imagen
Si eres un webmaster y has notado que los usuarios de Google Chrome que accedían anteriormente a través de HTTP 2 ahora lo hacen por HTTP 1, estas en el sitio correcto. Esto es debido a un cambio de política en la más reciente actualización de Chrome , lanzada a finales de mayo, que elimina el soporte a NPN, un método para actualizar una conexión a HTTP 2. La única manera que tienen estos usuarios de Chrome de acceder a tu sitio web por HTTP 2 es cambiando a un navegador diferente. Pero tú, como administrador, puedes restaurar el soporte a HTTP 2 actualizando OpenSSL a versiones superiores o iguales a la 1.0.2. Para saber mas detalles sobre este comportamiento puedes visitar el siguiente enlace en inglés . Este post está destinado principalmente a CentOS 7 con instalaciones de Nginx desde el repositorio oficial.  La instalación oficial de Nginx no está compilada con OpenSSL, con lo cual utiliza la instalación que tengas en tu CentOS, lo malo de esto es que a fe...

Drivers ODBC 13 y PHP de Microsoft para SQL Server en CentOS 7

Imagen
Microsoft es más Open Source que nunca , ¡y que lo digan! Han cambiado mucho los tiempos en que sólo se podían utilizar las herramientas de Microsoft en Windows, y han cambiado para bien. Una de las limitaciones existentes era utilizar su driver de conexión al SQL Server para PHP en entornos linux, felizmente esa limitación está llegando a su fin gracias a las versiones para linux del Microsoft ODBC Driver 13 (preview) y Microsoft Drivers para PHP (early technical preview). También en la evolución de estas herramientas hay un cambio radical, de instalaciones totalmente artesanales al principio ya hemos llegado al punto en que el primero está disponible con yum y el segundo es compatible con repositorios existentes como los de remi . Voy a comenzar asumiendo que ya tienes instalado PHP 7 (importante, la versión 7 es la única soportada) en tu servidor con CentOS 7, si no sabes cómo, lo puedes ver en el post donde instalo las últimas versiones de nginx y php . Instala...

CentOS 7 en Hyper-V segunda generación

Imagen
No es raro que cuando intentes instalar CentOS 7 en Hyper-V si has escogido la generación 2 te salga el siguiente mensaje de error:  the image hash and certificate are not allowed . Lo primero que te da por pensar es que no está soportado, pero error, si lo está y aquí podéis consultar la lista completa de sistemas operativos soportados en la generación 2 de maquinas virtuales para Hyper-V. Entonces, si está soportado ¿que pasa? La pista me la dio el siguiente post , pero como siempre ocurre, es un post antiguo y esta un poco obsoleto y mal. Lo que ocurre es que entre las ventajas de la segunda generación está el arranque seguro, y más que deshabilitarlo, como recomiendan en el post anterior, lo que tenemos que hacer es cambiar la plantilla que viene por defecto y debemos elegir  Microsoft UEFI Certificate Authority . Y con estos sencillos pasos ya tendremos instalado un CentOS 7, que podremos descargar la iso desde aquí, en nuestro Hyper-V con una máquina vi...

Migrar una web con PHP de Windows a Linux

Imagen
Si bien es cierto que el código PHP es el mismo para un servidor Windows como para uno Linux, a la hora de migrar hay que tener algunas cosas en consideración. Si bien la migración de un servidor Linux hacia uno con Windows es más transparente, la contraria lleva algunas tareas especiales. Lo más importante son las rutas include, mientras Windows soporta tanto include_once 'clases/db.php'; como include_once 'clases\db.php', en Linux sólo se soporta la barra \. Este sería el cambio más importante a tener en cuenta. Luego tenemos que ver si nuestro código tiene extensiones específicas de Windows , si son críticas y no encontramos alternativas, impedirían la migración. Un último punto a tener en cuenta son las llamadas a funciones de la línea de comandos con exec por ejemplo. Seguramente los comandos ejecutados no sean los mismos y las respuestas sean totalmente diferentes.

Microsoft ODBC driver 13 para CentOS 7

Imagen
Vamos a instalar el nuevo driver ODBC de Microsoft en un CentOS 7, pieza indispensable para futuro lanzamiento de su driver específico para Linux . Lo primero que haremos será descargar el driver ODBC desde la página oficial de Microsoft y comprobar los requerimientos mínimos para nuestro sistema operativo . yum info glibc yum info e2fsprogs yum info krb5-libs yum info openssl Para evitar errores del tipo Error: configure: error: no acceptable C compiler found in $PATH , y sobre todo en sistemas nuevos, debemos instalar un compilador para c yum groupinstall "Development tools" Instalando unixODBC Driver Manager para Microsoft ODBC Driver 13 (Preview) para SQL Server Ahora necesitamos instalar el driver manager sobre el que basa la conexión el ODBC de Microsoft. La opción más sencilla es utilizar el script de instalación que viene por defecto. Importante: la versión soportada es la que distribuye Microsoft, debéis desinstalar versiones ya existentes, da...

Instalar últimas versiones de nginx, php y mysql en CentOS 7

Imagen
Trabajar con las últimas versiones de software en sistemas como CentOS a veces suele ser difícil, sobre todo a la hora de encontrar repositorios que te permitan mantener el mismo nombre de paquetes y así poder actualizar los existentes. A día de hoy estas son las versiones que tengo instaladas, todas con los nombres de paquetes oficiales, nginx, php y mysql, (existen otros repositorios que te permiten instalar php 7 pero con un nombre diferente php70 o php70w según el repositorio que consultes): CentOS Linux release 7.2.1511 (Core) Server version: 5.7.10 MySQL Community Server (GPL) nginx version: nginx/1.9.9 PHP 7.0.1 (cli) (built: Dec 16 2015 15:23:56) ( NTS ) Repositorios necesarios Para instalar MySQL descargaremos el repositorio oficial de Oracle, desde que MySQL fue comprado por Oracle la comunidad de CentOS se ha decantado por MariaDB con lo cual no hay disponibles versiones para CentOS. rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-7...

Activar acceso remoto MySQL en CentOS 7

Luego de configurar MySQL 5.7 en CentOS 7 es posible que queramos acceder de manera remota para gestionar las bases de datos, no es recomendable permitir el acceso remoto a root pero si tal vez interese a un usuario específico dentro de IPs específicas. Lo primero que debemos habilitar es el puerto en el firewall, CentOS 7 ya no utiliza iptables sino firewall. Para habilitar el puerto debemos especificar para que zona lo queremos abrir. Consultamos las zonas con el siguiente comando: firewall-cmd --get-active-zones Esto nos debería devolver algo así: public   interfaces: eno16777984 Dónde interfaces lo podemos asociar a la ip con ifconfig. En este caso sólo tenemos una zona, public. firewall-cmd --zone=public --add-port=3306/tcp –permanent firewall-cmd –reload Una vez abierto el puerto ahora debemos configurar MySQL para que el usuario deseado acceda de manera remota: $ mysql -u root -p Enter password:    mysql> use mysql    my...

CentOS 7 reset root password MySQL 5.7

Si habéis llegado aquí estáis en el lugar correcto dónde podréis restaurar la contraseña de root en MySQL 5.7 . Internet está plagado de tutoriales dónde te indican cómo hacer esto pero ninguno está actualizado a las últimas versiones de CentOS y MySQL, además por todos es conocido que el soporte a MySQL por parte de la comunidad Open Source ha menguado desde su compra por Oracle. ¿Que cambia en CentOS 7 y MySQL 5.7? CentOS 7 incorpora systemd (Sistema y administrador de servicios para Linux, compatible con scripts de inicio SysV) y su herramienta de administración systemctl . ¿en que afecta esto? Pues que el script mysql_safe no está disponible (no se instala) en estos sistemas y hay que utilizar otras alternativas y gestionar mysql server community desde systemd . La tabla de usuarios en MySQL 5.7 ya no tiene campo password ahora es authentication_string. Restaurar contraseña root en MySQL 5.7 y CentOS 7 systemctl set-environment MYSQLD_OPTS="--skip-grant-...

Mailman y las copias ocultas

Si por un casual recibís los siguientes errores en el mailman y no encontráis explicación posible a por qué siendo enviados los mensajes a las direcciones de manera correcta aparece, la causa es que no soporta el envío con copias ocultas sin pasar primeramente por la aprobación del moderador. Ha sido retenido en espera de que el moderador de la lista lo revise y apruebe. Ha sido retenido por: El mensaje no va dirigido explícitamente a la lista O se mandará el mensaje a la lista o se le enviará una notificación con la decisión del moderador. O la versión en inglés Message has implicit destination

Instalando Parsoid en openSuse 11.4

Tener una versión poco actualizada de un sistema operativo, sobre todo Linux acarrea muchos problemas a la hora de instalar cualquier software, es lo que me pasó al intentar instalar Parsoid en un openSuse 11.4 y aquí os lo cuento para ayudar a todos lo que lo necesiten y evitar que tengan que consultar tantos manuales como yo. Parsoid es una aplicación que puede traducir en tiempo de ejecución la sintaxis de MediaWiki y un modelo de documento RDFa , con soporte mejorado para el procesamiento automatizado y la edición. Ha estado en desarrollo por un equipo de la Fundación Wikimedia desde el año 2012. Parsoid está estructurado como un servicio web, y está escrito en JavaScript, haciendo uso de Node.js. Instalando Node en openSuse 11.4 Esta parte seguramente está incompleta porque yo ya lo tenía instalado y estos son los únicos pasos que recuerdo. sudo zypper ar \ http://download.opensuse.org/repositories/devel:/languages:/nodejs/openSUSE_11.4/ \ Node.js sudo zypper in...

Actualizando MediaWiki 1.15 a 1.25

Los primero para actualizar nuestra versión de MediaWiki es hacer una copia de seguridad del código y de la base de datos (nunca se sabe). Este tutorial se aplica a la actualización de Media Wiki 1.15 a 1.25 en un openSuse 11.4. Actualizando MediaWiki Entramos al directorio raiz de la aplicación, en mi caso /srv/www/wiki y ejecutamos estos comandos wget releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.2.tar.gz # descomprimimos el archivo y sustituimos todos los ficheros con la nueva versión tar xvzf mediawiki-1.25.2.tar.gz -C /srv/www/htdocs/devwiki/ --strip-components=1 # eliminamos el archivo descargado rm mediawiki-1.25.2.tar.gz # entramos al directorio de mantenimiento cd maintenance Antes de actualizar debemos ir al código y eliminar (o renombrar el archivo StartProfiler.php) mv StartProfiler.php StartProfiler.old Con esto evitaremos errores del tipo: Fatal error: Cannot redeclare wfProfileIn() # ejecutamos la actualización php5 update.php Con estos sencillos pasos d...

Freetds, PHP mssql y CentOS 6.6

Esto es una actualización de estos dos artículos de este mismo blog Acceder desde linux a SQL server con PHP y Errores de conexión con mssql connect , la diferencia es que ambos están aplicados a CentOS 6.6 y los resultados son más actuales. Requisitos Repositorio EPEL instalado, aquí os dejo un manual para hacerlo. PHP y Apache instalados y corriendo, en mi caso es PHP 5.3.3, las versiones que vienen por defecto con esta distribución de CentOS. Existen muchos artículos por internet sobre como dejar funcionando una conexión con SQL Server desde un CentOS pero casi todos pasan por compilar las librerías FreeTDS y PHP mssql, en nuestro caso lo haremos sin necesidad de compilar nada, solo utilizando esa maravillosa herramienta llamada yum, necesitamos instalar estos paquetes: yum install freetds freetds-devel php-mssql Si todo viene por defecto no debería daros ningún problema. El proceso de configuración es bastante similar al primer artículo que enlazo en este post,...

Internacionalización (i18n) con PHP

Cuando trabajamos con un sitio que debe estar disponible en  varios idiomas hay múltiples alternativas para traducirlo en PHP pero todas básicamente se basan en incluir un archivo de idioma y sustituir cada frase por su equivalente. Cuando tenemos que traducir un sitio deberíamos plantearnos seriamente la internacionalización del mismo ¿qué es? Básicamente es no solo traducir el texto sino mostrar fechas y configuraciones regionales según el idioma elegido. La mejor herramienta para esto es la extensión de PHP gettext , herramienta que aún no he probado pero que sospecho tendrá un rendimiento más que aceptable y mucho mejor que el resto de opciones que veremos en este post. Lo único malo de esta librería y precisamente será lo que garantice su rendimiento es el uso de la cache para almacenar los idiomas con lo cual cualquier actualización requeriría un reinicio de apache, cosa que en muchos casos no es viable salvo que tengamos un servidor dedicado. Os prometo que intentaré imp...

CentOS 6.5 con Hyper-V

Imagen
Instalar CentOS 6.5 con Hyper-V es igual a crear una máquina virtual cualquiera en Hyper-V y luego seguir la instalación de CentOS 6.5 paso a paso . El único problema que nos puede dar es que antes de crear cualquier máquina virtual tenemos que crear un switch (conmutador) virtual para que tanto nuestro equipo como el equipo virtual se comuniquen con internet (o también puede ser una red interna si no necesitamos salida a internet en el equipo virtual). Configurar un switch virtual para el acceso a internet en Hyper-V Existe un asistente para crear estos conmutadores virtuales En la nueva ventana elegimos el nombre y seleccionamos el dispositivo físico de red al que nos queremos conectar. Nos saltará un mensaje de alerta que vamos a perder la conectividad pero le damos aceptar y esperamos que lo instale. Con estos tutoriales que pongo de enlace al principio y estas recomendaciones para crear el switch virtual no creo que tengáis ningún problema creando un CentOS 6.5 u otro sis...

Eliminando directorios con LFTP

Imagen
Continuando el manual de opciones del LFTP os dejo la sintaxis completa para eliminar directorios de manera recursiva incluyendo archivos ocultos . La sintaxis para eliminar directorios de manera recursiva es: rm –r /directorio/directorio/directorio_a_borrar Pero si el directorio a borrar tuviese archivos ocultos tendríamos un error del tipo: rm: Access failed: 550 dirname: Directory not empty , por ello debemos incluir set ftp:list-options –a. Uniéndolo todo sería: lftp -c open ftp://user:passwd@host -e "set ftp:list-options -a; rm -r /directorio/directorio/directorio_a_borrar" & El símbolo final es para ejecutar el comando en segundo plano. Es totalmente opcional.

Opciones del LFTP

Unos de los gestores FTP más importantes de Linux es el LFTP, muy ligero y muy versátil y en las últimas versiones han mejorado muchísimo las opciones. He tenido que trabajar con el en un par de proyectos y aquí os dejo algunos comandos y opciones muy interesantes. Para crear un directorio solo si este no existe tenemos la opción mkdir –p /directorio. Tened en cuenta que si en la url del directorio hay subdirectorios, estos serán creados en caso de no existir. Para subir el contenido de un directorio entero tenemos la opción mirror, en la mayoría de artículos por internet utilizan esta opción para copias de seguridad con lo cual parecería que solo se pueda ejecutar este comando para sincronizar carpetas, lo cual no es el caso, por ejemplo si tienes las carpetas orígenes A, B, C y la de destino D, perfectamente puedes hacer esto: mirror –R A D mirror –R B D mirror –R C D Lo bueno de esto es que si volvemos a ejecutar uno de estos comandos solo se subirán los archivos nuevos o modif...

Espacio utilizado en Linux desde consola

Imagen
Cuando tenemos problemas de espacio en nuestro servidor Linux, es muy útil saber cuanto ocupa cada carpeta , esto no es una tarea muy visual desde la consola de Linux con lo cual os dejo un par de comandos muy útiles. df -h nos sirve para identificar que partición tiene mucho espacio: Filesystem                                                   Size  Used Avail Use% Mounted on rootfs                                                        16G  5.6G  8.9G...