Desinstalar Ubuntu Web Apps

El pasado miércoles os contaba cómo instalar Ubuntu Web Apps en nuestro sistema. Si no leíste esta entrada os recomiendo daros una vuelta antes ya que este post explica cómo desinstalar de nuestro sistema lo que previamente pudísteis haber instalado.

Bien, como casi siempre, abrimos un terminal: 

Leer más » 1 Comentario

Instalar Ubuntu Web Apps

Creo que muchos de vosotros, por lo que se lleva hablando un tiempo, conoceréis de qué se trata Ubuntu Web Apps. A grosso modo es algo así como un Mozilla Prism con integración de características dentro del escritorio, como la administración de los mensajes de chat desde el área de notificación, el control del reproductor multimedia (LastFM), etc.

Os recomiendo echarle un vistazo a este vídeo, os gustará:

Leer más » 5 Comentarios

Buscar un elemento por su contenido con jQuery

Los selectores de jQuery son una herramienta potente y flexible como pocas en el desarrollo web. Su sintaxis basada en CSS facilita enormemente la labor, hacer todo a base de document.getElementById es muy duro. Sin embargo hay veces que queremos elegir elementos no por su identificador, ni por su clase, ni por su nombre, ni siquiera por un atributo que hayamos rellenado aparte, sino por su contenido.

Para esta labor tenemos el selector :contains. Veamos ejemplos que es la mejor forma de aprender su uso. Tened en cuenta sólo una cosa, :contains nos devolverá todos los elementos cuyo texto interno contiene en alguna parte la cadena que le pasemos. Otro detalle a tener en cuenta: sí es sensible a mayúsculas.

Veamos:

  • $(‘:contains(“Mi texto”)’): reconocerá cualquier elemento del texto que incluya en alguna parte “Mi texto”, respetando mayúsculas y minúsculas.
Leer más » 2 Comentarios

Duplicar una base de datos MySQL

Cuando estamos trabajando con datos, la mayor parte de las veces tendremos versiones que por unas razones u otras no queramos usar para pruebas. Debemos ser precavidos y tratar de evitar a toda costa de asumir riesgos en temas como éste en los que es muy fácil cubrirse las espaldas.

Una de las mejores formas de hacerlo es duplicando la estructura y los datos de una base de datos, de forma que en lugar de trabajar con la base de datos original, trabajemos con la copia hasta que estemos seguro de que todo marcha perfectamente.

MySQL Logo - Duplicar base de datos

¿Cómo copiar una base de datos en un sistema gestor de bases de datos MySQL? Aquí está el proceso:

Leer más » 4 Comentarios

Direccionar dominio sin www a www

Un clásico problema que cualquier administrador del dominio siempre se puede encontrar. ¿Cómo convertimos las llamadas de linuxhispano.net a www.linuxhispano.net? Con Apache HTTP Server  y el módulo mod_rewrite es sumamente fácil.

Editamos un fichero .htaccess en la raíz:

nano .htaccess

Y ubicamos el siguiente contenido:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

¿No os funciona?

Leer más » 3 Comentarios

Aumentar el tamaño máximo de subida de ficheros con Apache y PHP

Es muy frecuente que cuando estemos desarrollando algún tipo de aplicación web, tengamos la necesidad de poder subir ficheros. La subida de ficheros es una operación relativamente simple, pero tiene una limitación, el tamaño del mismo. Esta limitación podemos gestionarla a través de PHP dentro del php.ini (en función de cuál sea tu distribución se encontrará en un sitio u otro, en mi caso está en /etc directamente).

Logo PHP

¿Qué parámetros deberemos modificar?

Leer más » 1 Comentario

Configurar un servidor Samba de forma básica

Hasta hace no mucho, usaba en mi centro de trabajo un servidor NAS doméstico que hacía sus funciones de forma algo lenta pero sin problemas de seguridad ni estabilidad. Sin embargo, a raíz de un problema de reinicio y pérdida de acceso al mismo, decidir dar el salto y poner en marcha un auténtico servidor NAS.

Preparé una máquina virtual con Xen, preparé el almacenamiento en mis módulos SAS, configuré el direccionamiento del mismo y arranqué la máquina. ¿Qué me quedaba por instalar y configurar? Un servidor Samba. Veamos cómo hacerlo.

Samba logo

El siguiente procedimiento vale sobre cualquier distribución de GNU/Linux. Sólo deberéis cambiar ciertos detalles de sistemas de paquetes, pero el método es el mismo y es una solución genial. Multitud de empresas u organizaciones disponen de un servidor Linux y de clientes finales con Microsoft Windows. Tanto si el cliente final es Windows como si es Linux o Mac OS, esta solución provee un método sencillo, robusto y fiable para implantar algo tan necesario como almacenamiento en red (ya sea para copias de seguridad, para trabajo en equipo, para crear un repositorio central o para lo que se busque).

He usado Scientific Linux, por lo que será el mismo procedimiento en Fedora, Red Hat, Cent OS y derivados. En Ubuntu, Debian y derivadas usaremos apt y el resto, sus propios paquetes (o compilaciones del fuente).

Leer más » 3 Comentarios

Enviar correos con C# usando Mono

Si necesitáis conectaros a un servidor SMTP para hacer envíos de correos desde una aplicación que corre Mono, os dejo el código siguiente que seguro que os es de utilidad. Este ejemplo en concreto envía un mensaje usando un SMTP que requiere autenticación, si necesitáis alguna variantes: varios destinatarios, SMTP sin autenticación o cualquier otra cosa, ¡preguntad en los comentarios!

public static void Main (string[] args) { MailAddress para = new MailAddress("para@direccion.com"); MailAddress desde = new MailAddress("desde@direccion"); MailMessage mensaje = new MailMessage(desde, para); mensaje.Subject = "Asunto"; mensaje.Body = @"Cuerpo del correo"; SmtpClient cliente = new SmtpClient("direccion_servidor", puerto); cliente.Credentials = new System.Net.NetworkCredential ("nombre_usuario", "contraseña_usuario"); Console.WriteLine("Enviando mensaje de correo para: " + para.User + " en " + para.Host + " usando el servidor=" + cliente.Host + "."); try { cliente.Send(mensaje); Console.WriteLine("Mensaje enviado"); } catch (Exception ex) { Console.WriteLine("Problemas enviando mensaje: " + ex.ToString()); } } read more

Leer más » 5 Comentarios

Permitir conexiones entrantes a un servidor PostgreSQL

Para los que venimos del mundo de MySQL y nunca antes hemos utilizado PostgreSQL, la configuración de los accesos externos a la base de datos puede parecernos algo confusa. El mecanismo, sin entrar en la tabla de gestión de usuarios, es algo más complejo pero tiene más posibilidades que en la base de datos recién adquirida por Oracle.

Veamos los pasos a dar.

1. Acceder al sistema

Para poder seguir los pasos, deberemos estar dentro del sistema, en la terminal del mismo. Si no tenemos acceso físico, podemos conectar vía ssh.

$ ssh miusuario@miservidorpgsql

2. Autenticarnos como usuario postgres

Una vez dentro del sistema, podemos hacer las operaciones como root, pero por seguridad o por si no disponemos de tales credenciales, lo mejor es actuar como usuario postgres:

su postgres

3. Permitir conexiones de clientes desde un determinado rango

Llegamos a uno de los puntos importantes de la cuestión, el fichero pg_hba.conf. Su situación exacta dependerá de vuestra instalación, pero lo encontraréis en una de estas dos rutas:

  • /var/lib/pgsql/data/pg_hba.conf (en mi instalación lo tengo ahí, utilizo Scientific Linux, una distribución derivada de Red Hat)
  • /etc/postgresql/main/pg_hba.conf

Dentro de este fichero, al final del mismo, veremos algo así:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               password

¿Qué significa esto? Veamos columna a columna:

  • Tipo: básicamente conexión local o conexión remota (host).
  • Base de datos: base de datos a las que afecta la regla. Si queremos todas, usamos el comodín all.
  • Usuario: usuarios a los que afecta la regla, si queremos que afecte a todos, usamos también all.

Nos paramos ahora en los dos apartados que más atención requieren.

3.a Dirección

En esta columna definimos, las direcciones IP (podemos también usar IPv6), desde las que podremos conectarnos a PostgreSQL. Usaremos la fórmula dirección/máscara:

  • Una sola dirección: 150.100.100.100/32
  • O un rango (ampliemos el mismo de antes): 150.100.100.0/24 (256 direcciones)

3.b Método

Aunque hay multitud de métodos para utilizar (incluyendo conexiones LDAP, Kerberos o PAM), explico los tres más básicos:

  • ident: utiliza el usuario del sistema desde el que se está intentado conectar.
  • trust: deja todos los accesos sin necesidad de autenticarse (sólo recomendable para conexiones desde el equipo local).
  • password: identificación con usuario/contraseña, es la más típica y es la recomendable para conexiones desde clientes como EMS PostgreSQL Manager.

Una línea de ejemplo, para darle acceso a todos los usuarios, a todas las base de datos, desde el rango de IP explicado antes, usando autenticación con usuario y contraseña, sería la siguiente:

host    all         all         150.100.100.0/24          password

4. Habilitar conexiones al socket desde clientes que no sean el host local

Al igual que en MySQL hay que configurar el bind-adress en my.conf, en PostgreSQL tenemos que hacer algo análogo.

Para versiones 8.x en adelante el procedimiento es el siguiente. Buscamos el fichero postgresql.conf en:

  • /var/lib/pgsql/data/postgresql.conf
  • /etc/postgresql/8.2/main/postgresql.conf

Y buscar dentro del mismo la siguiente línea:

listen_addresses='localhost'

Para sustituirla, por el comodín (para todas las IP, es una opción segura, tened en cuenta que tenemos también un filtro en el fichero pg_hba.conf.

listen_addresses='*' read more

Leer más » 10 Comentarios

Comandos básicos de SVN

Hasta ahora siempre había utilizado herramientas con interfaz gráfica para interactuar con un repositorio subversion, RapidSVN en Linux y TortoiseSVN en Windows.

Esta tarde he tenido que hacer una excepción, haciendo unas prácticas de una asignatura he interactuado con el repositorio SVN directamente con el comando svn; pienso que usarlo mediante comando es bastante útil, sobre todo en entornos en los que usar una GUI es imposible o para solucionar algún problema, preferimos hacerlo directamente sin una vista sobre una aplicación más pesada. Sea cual sea vuestro caso, a continuación os dejo un breve resumen de los comandos básicos de svn: read more

Leer más » 4 Comentarios