Migrando de Apache 2 a nginx: Virtual Hosts

Josemaría | 25 de marzo de 2015 | 3 comentarios

nginx

Los ficheros de definición de Virtual Hosts en nginx se almacenan en directorios muy similares a los de apache. Tenemos un directorio llamado sites-available y otro que se llama sites-enabled y ambos están bajo el directorio principal de configuración que es /etc/nginx. En el primero se deberían de guardar todos los virtual hosts del servidor (estén disponibles o no) y en el segundo aquellos que están activos. La forma correcta de activar o desactivar un Virtual Host debería de ser crear un enlace en el segundo directorio al archivo correspondiente del primero, al igual que en Apache. Para desactivarlo temporal o definitivamente borraríamos ese enlace. La diferencia aquí con apache es que no contamos con comandos similares a los a2ensite y a2dissite que hacen estas operaciones de forma cómoda, pero tampoco se nos van a caer los anillos por hacer un enlace manualmente en línea de comando a estas alturas ¿verdad? Bueno, por si acaso, el siguiente comando realizaría un enlace del fichero de definición de Virtual Host llamado miweb del directorio sites-availabe en el directorio sites-enabled:

ln -s /etc/nginx/sites-available/miweb /etc/nginx/sites-enabled/

Veamos ahora el “esqueleto” de configuración más básico en Apache:

<VirtualHost *:80>
	ServerName www.miweb.com
	ServerAlias blog.miweb.com *.miweb.es
	DocumentRoot /var/www/miweb/
	DirectoryIndex index.php index.html index.htm;
</VirtualHost>

Y su equivalente en nginx:

server {
        listen 80;
        server_name www.miweb.com blog.miweb.com *.miweb.es;
        root /var/www/miweb/;
        index index.php index.html index.htm;
}

Puesto que partimos de que conocemos la sintaxis en Apache no deberíamos de encontrar problemas en entender la de nginx ¿verdad? Sólo un detalle adicional sobre estas líneas. Si tenemos un servidor con más de un interfaz y/o dirección IP y queremos que el servidor web sólo atienda a una de ellas en Apache sustituiríamos la primera línea del ejemplo anterior por esta:

<VirtualHost 123.45.67.89:80>

En nginx haríamos lo propio modificando así la segunda línea:

listen 123.45.67.89:80;

Cualquier configuración adicional del Virtual Host se realizaría incluyendo las directrices adecuadas en el interior del bloque de definición. Veamos algunas de las más comunes. Por ejemplo, si queremos dar una ubicación concreta y separada del lugar donde se almacenan los logs de acceso y error, en Apache lo hacíamos con estas líneas:

CustomLog /var/log/apache2/miweb-access.log combined
ErrorLog /var/log/apache2/miweb-error.log
LogLevel warn

Y en nginx lo haríamos así:

access_log /var/log/nginx/miweb-access.log;
error_log /var/log/nginx/miweb-error.log warn;

El formato del log de accesos por defecto en nginx es idéntico al modo combined de Apache. No obstante, tenemos un montón de opciones adicionales que puedes consultar aquí. Los niveles permitidos para el log de error son, además de warn, error, crit, alert, y emerg.

¿Cómo redefinimos las páginas de error que nos mostrará el servidor web? En Apache usábamos la directiva ErrorDocument:

ErrorDocument 404 /errores/404.html
ErrorDocument 500 /errores/500.html
ErrorDocument 502 /errores/502.html
ErrorDocument 503 /errores/503.html
ErrorDocument 504 /errores/504.html

En nginx usamos error_page:

error_page 404 /errores/404.html;
error_page 500 /errores/500.html;
error_page 502 /errores/502.html;
error_page 503 /errores/503.html;
error_page 504 /errores/504.html;

Si queremos redireccionar varios errores a una misma página podemos hacerlo de esta forma:

error_page 500 502 503 504 /errores/500bis.html;

Veamos ahora como se restringe el acceso a ciertos directorios. En Apache, para denegar el acceso a todo el mundo a un directorio del servidor web lo hacíamos de esta forma:

<Directory /secreto>
        Deny from all
</Directory>

Mientras que en nginx haríamos lo mismo así:

location /secreto {
        deny all;
}

Para restringir el acceso a determinados clientes, en Apache “jugamos” con las directrices Order, Deny y Allow. En nginx no existe ninguna directiva similar a Order. Debemos de poner una a una todas las instrucciones deny y allow que necesitemos. El servidor las analizará una a una y en orden hasta encontrar la primera que “cuadre” con la petición que está atendiendo de forma similar a como se comportaría un cortafuegos. Las siguientes reglas son todas válidas:

location /secreto2 {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

Si lo que queremos es restringir el acceso mediante usuario y contraseña con un fichero generado con htpasswd como hacíamos habitualmente con Apache, podemos hacerlo de forma fácil. El fichero de contraseña lo generamos de la misma forma que ya sabemos (tienes que tener instalado el paquete apache2-utils para contar con esta utilidad) e incluir las siguientes directivas:

location /secreto3 {
    auth_basic "Control de Acceso";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

La línea auth_basic sólo aporta un mensaje de texto que aparecerá en la ventana en la que se nos pide el usuario y contraseña. La directiva auth_basic_user_file es la que marca el lugar y el nombre del fichero que contiene los usuarios y las contraseñas (las hashes de estas, en realidad) autorizadas para acceder al directorio /secreto3 de nuestro Virtual Host.

Si nuestro Virtual Host necesita interpretar páginas en PHP, debemos de pasar estas peticiones al módulo adecuado y tenemos que expecificarlo aquí, y no como ocurría en Apache que se hacía de forma automática con sólo tener activo el módulo php5. Yo uso php5-fpm (aunque existen otras alternativas) y para que funcione debemos de incluir un bloque como este:

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

En Debian hay que instalar el paquete correspondiente (apt-get install php5-fpm) y asegurarse de que el módulo aceptará las peticiones en la dirección que hemos indicado con la directiva fastcgi_pass. Esto lo comprobamos en el fichero de configuración /etc/php5/fpm/pool.d/www.conf y buscando la línea siguiente:

listen = /var/run/php5-fpm.sock
IMPORTANTE: Si necesitas usar de forma imprescindible ficheros .htaccess este no es tu servidor web. nginx está diseñado para ser rápido y eficiente y no soporta nada parecido. Los .htaccess son cómodos para permitir pequeñas personalizaciones de configuración en servidores compartidos, pero en cualquier otro caso son absolutamente prescindibles y desde el punto de vista de la eficiencia son tremendamente negativos. Piensa que por cada petición que se hace al servidor web, este tiene que recorrer todos los directorios del Virtual Host uno por uno en busca de ficheros de este tipo. Aquí te lo explican muy bien y en este enlace y en este otro tienes herramientas automáticas para ayudarte a migrar las reglas que tengas en ellos a nginx.
Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes

Chuletillas (y XXXXII) – Eliminar paquetes huérfanos y dependencias no utilizadas en Archlinux y derivadas

Josemaría | 19 de marzo de 2015 | Comentar

chuleta Hace ya años que sólo uso Archlinux o derivadas en mis equipos de escritorio, ya sean estos portátiles o equipos de sobremesa. Empecé con la propia Archlinux para luego pasar a Chakra y, por último, a Manjaro que es actualmente mi favorita.
El siguiente comando nos permite eliminar todos los paquetes huérfanos y dependencias no utilizadas de forma equivalente a como haríamos en una Debian o derivada con apt-get autoremove:

pacman -Rcns $(pacman -Qdtq)

La segunda parte del comando (pacman -Qdtq) es la que realiza el listado de dependencias inútiles mientras que la primera (pacman -Rcns) las recibe y elimina después de mostrárnos la lista en pantalla y pedirnos confirmación.

NOTA: Por aquí dejé hace algún tiempo una chuleta con los primeros pasos a dar con pacman y ccr que sigue siendo válida. ccr es el gestor de paquetes realizados por la comunidad de usuarios (no oficiales, por tanto) de Chakra. En Archlinux y Manjaro se usa yaourt en lugar de ccr pero el funcionamiento de ambas es bastante similar.
Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes

Lo más visto por aquí en 2014

Josemaría | 2 de enero de 2015 | Comentar

icono de calendarioEa, otro año más por aqui para hacer una pequeña lista con los temas que más se han leído en el blog durante los últimos doce meses por si a mi lector se le ha pasado alguno por alto. Mi ritmo de publicación ha caído tanto que al final los peperos van a tener razón con eso de la baja productividad del país. Con una media de dos entradas al mes (un tercio menos de lo que publiqué en 2013) este blog está predestinado a extinguirse en un par de años. Menos mal que Google no es tan bueno como dicen (¿tampoco lo sabes ya?¿y se supone que mis lectores tienen un alto perfíl técnico?¡Buffff!) y me sigue permitiendo vivir de las rentas… En fin que allá vamos a hacer el repaso este y con él a sentar buenos propósitos de prolífica actividad para este 2015. Como todos los años, vaya ;-)

Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes

nginx Por aquello de terminar un año y empezar el siguiente con cambios y nuevos propósitos, ayer comencé a migrar la infraestructura que da soporte a este blog a nginx. Si has pasado por aquí en las últimas horas habrás podido experimentar problemas debido a los cambios. Ahora parece ya casi totalmente estable pero dista aún de estar optimizado y habrá que trabajar un poco mas en ello... Y bueno, ya que estamos, feliz año y tal ;-) (1 comentarios)

Instalando Oracle 11g R2 en Debian 7 Wheezy

Josemaría | 10 de noviembre de 2014 | 5 comentarios

Oracle Preguntadlo por ahí y, posiblemente, cualquier administrador de sistemas coincidirá conmigo en que una instalación de Oracle en Linux es una de las cosas más desagradables e ingratasque puedes querer hacer en estos temas. Máxime si pretendes realizarla en una distribución de Linux no soportada directamente por Oracle (Solaris, Red Hat, Suse y alguna mas…). Pero de vez en cuando toca hacerla, que remedio. En esta entrada vamos a ver de forma guiada y paso a paso una instalación de Oracle 11g R2 (11.2.0.1.0) en una Debian Wheezy (7.7) de 32 bits (haciendo pequeñas anotaciones para que también sirva para una de 64) de forma tan “masticada” que es imposible que te falle nada. ¡Manos a la obra!

Los requisitos hardware iniciales no son demasiado exigentes. Oracle funcionará sin problemas en una máquina con 1,5Gbytes de RAM y 20 Gbytes de disco duro (que son las características de la máquina virtual que voy a usar en este ejemplo). Pero cuidado: la partición de swap debería de ser de aproximadamente 1,5 veces el tamaño de la RAM (algo más de 2Gbytes en este caso), debemos de tener al menos 2Gbytes libres en el directorio /tmp durante el proceso de instalación y los binarios de Oracle ocuparan en su ubicación final algo más de 5 Gbytes, así que si tu disco usa diferentes particiones para estos directorios has de cuidar que el reparto de espacio entre ellos sea el adecuado.

En cuanto al software, partiremos de una Debian recien instalada y sólo con el sistema base aunque, durante el proceso, instalaremos algunos paquetes adicionales y un entorno de ventanas ligero para realizar la instalación desde un entorno gráfico.

Empezaremos por instalar los paquetes de dependencias necesarias que son estos:

apt-get install build-essential sysstat unzip libstdc++5 pdksh numactl expat libaio-dev  unixodbc-dev  lesstif2-dev elfutils libelf-dev

Además, como acabamos de decir instalaremos un entorno de ventanas ligero para realizar la instalación desde el entorno gráfico y un navegador para posteriormente poder acceder a la consola de administración:

apt-get install xfce4 chromium

Vamos ahora a modificar algunos de los parámetros de configuración del kernel editando el fichero /etc/sysctl.conf y añadiendo al final del mismo las siguientes líneas:

kernel.shmmax=536870912
kernel.shmall=2097152
fs.file-max=6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
fs.aio-max-nr = 1048576
kernel.sem = 250 32000 100 128

Para que tomen efecto las modificaciones en este fichero sin necesidad de reiniciar ejecutamos ahora lo siguiente:

sysctl -p

El instalador de Oracle también nos pedirá que lo ejecutemos desde un runlevel entre el 3 y el 5 mientras que Debian usar el 2 por defecto. Para evitar esta advertencia editaremos el fichero /etc/inittab y, en una de las primeras líneas, hacemos el cambio para usar, por ejemplo, el 3:

id:3:initdefault:

Para modificarlo también en la sesión actual sin necesidad de reiniciar ejecutamos lo siguiente:

telinit 3

Y ahora una pequeña “trampa”. Para que Oracle no se de cuenta demasiado de que estamos haciendo la instalación en una distribución no soportada crearemos unos enlaces en el sistema de ficheros de forma que se encuentre determinados archivos y librerías donde espearía encontrarselos si la instalación se estuviera realizando, por ejemplo, en una Red Hat:

ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/awk /bin/awk
ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib
ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib
ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib
NOTA: Si estamos instalando sobre una Debian de 64 bits sustituiremos los últimos cuatro enlaces por los siguientes:

ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/

Vamos ahora a crear un usuario llamado oracle y un grupo llamado dba. Este será el usuario que usaremos para la instalación y posterior administración de nuestra base de datos. Para hacerlo ejecutamos lo siguiente:

groupadd dba
useradd -d /home/oracle -m -g dba -G dba -s /bin/bash oracle

Para asignarle contraseña a este nuevo usuario:

passwd oracle

Ahora creamos los directorios donde realizaremos nuestra instalación:

mkdir -p /opt/oracle/product/11.2.0.1
mkdir /opt/oraInventory
mkdir /opt/oradata

Y asignamos como propietario y grupo los que acabamos de crear unos instantes antes:

chown oracle:dba -R /opt/oracle /opt/oraInventory /opt/oradata

Alteramos ahora algunas de las limitaciones impuestas a este nuevo usuario que hemos creado editando el fichero /etc/security/limits.conf y añadiendo las siguientes líneas al final del mismo:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

Y por último, en lo que a este nuevo usuario se refiere, editamos el fichero /home/oracle/.profile y añadimos sl final las siguientes variables de entorno:

export ORACLE_HOSTNAME=localhost
export ORACLE_OWNER=oracle
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/11.2.0.1
export ORACLE_UNQNAME=orcl
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu:/bin/lib:/lib/i386-linux-gnu/:/usr/lib
NOTA: Si en lugar de estar haciendo la instalación sobre una debian de 32 bits lo estuviéramos haciendo sobre una de 64 tendríamos que modificar la última variable de entorno por la siguiente:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/bin/lib:/lib/x86_64-linux-gnu/:/usr/lib64

Y ya casi casi tenemos todos los preparativos listos. Ahora copiamos los archivos de instalación de Oracle de su página de Training Eval y los dejamos en el directorio /tmp de la máquina.

IMPORTANTE: ¡Asegúrate de descargarte los archivos adecuados! Recuerda que en este ejemplo estamos usando la versión 11.2.0.1.0 de 32 o de 64 bits.

Descomprimimos los dos archivos que nos hemos bajado sobre el directorio /home del usuario oracle:

unzip /tmp/linux_11gR2_database_1of2.zip -d /home/oracle
unzip /tmp/linux_11gR2_database_2of2.zip -d /home/oracle

Y luego borramos los .zip para que no nos ocupen espacio:

rm /tmp/linux_11gR2_database*.zip

Ahora ya si cambiamos al usuario oracle para realizar la instalación:

su - oracle

Y entramos en el entorno gráfico:

startx

Ya en las xfce y desde un terminal ejecutamos el instalador de Oracle:

/home/oracle/database/runInstaller

Tomaremos casi siempre los valores por defecto de la instalación a menos que te manejes bien con los conceptos de esta base de datos y sepas lo que estás haciendo. Además, muchos de los valores básicos los tomará de las variables de entorno que hemos creado anteriormente en el profile del usuario oracle.
En el tercer pantallazo tendremos que introducir la contraseña del administrador: la del usuario SYS. No la olvides aunque luego, en uno de los pasos finales, tendremos la opción de cambiarla y/o modificarla.

Oracle

Posteriormente en la comprobación de requisitos nos marcará varios fallos relativos a programas que parece no encontrar pero que, sin embargo, hemos instalado previamente. Esto es normal debido a las diferencias de rutas entre Debian y Red Hat. Estos deberían de ser los únicos errores que se nos presentarán si hemos hecho correctamente todo el proceso anterior. Nos aseguramos de ello y, si es así, marcamos el check de Ignorar todo y proseguimos la instalación.

Oracle

A mitad de la instalación nos aparecerá un error como el del pantallazo siguiente. No pulses ningún botón aún y no te pongas nervioso que tiene solución ;-)

Oracle

Abrimos un terminal y editamos uno de los scripts que está usando el instalador. Este: /opt/oracle/product/11.2.0.1/sysman/lib/env_emagent.mk . En torno a la línea 2764 nos encontraremos algo así:

NMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR)  $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined

Debemos de añadir el argumento -lnnz11 de forma que quede así:

NMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR)  $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -lnnz11 -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined

Salvamos el fichero y, ahora así, volvemos a la ventana de advertencia anterior y pulsamos el botón de Reintentar. La instalación debería de proseguir ahora ya sin problemas.

NOTA: Gracias a Gaius por este “truco de magia” así como por otras importantes referencias que me han ayudado a confeccionar esta chuleta.

En unos minutos accederemos a la ventana final del instalador donde se nos mostrará un resumen y se nos permitirá modificar bloquear y desbloquear usuarios por defecto y/o modificar las contraseñas de los mismos:

Oracle
Oracle

Y, ahora ya si por último, el instalador nos pedirá que lancemos un par de scripts adicionales de forma manual como usuario root (recuerda que toda la instalación desde el entorno gráfico la estamos haciendo con el usuario oracle que hemos creado previamente).

Oracle

Abrimos otro terminal distinto al que estamos usando para el instalador y ejecutamos lo que se nos pide:

su
/opt/oraInventory/orainstRoot.sh
/opt/oracle/product/11.2.0.1/root.sh

Y ya hemos terminado. Ahora para acceder a la base de datos puedes usar SQL*Plus desde la línea de comandos o la consola de administración gráfica desde el navegador a través de la URL https://localhost:1158/em y usando la contraseña del usuario SYS (conectando como SYSDBA) que has proporcionado durante la instalación.

Oracle
Oracle

Unas notas para terminar. La instalación no configura a Oracle para que arranque por defecto tras un reinicio del sistema. Es decir, cada vez que hagamos un reboot de la máquina tendremos que volver a levantar los servicios manualmente. Tres son los componentes básicos a considerar: el llamado “listener” de Oracle (el proceso principal que proporciona la conectividad con las bases de datos), la consola de administración y la propia base de datos en si. Para levantar el primero tenemos disponible un script llamado dbstart en el directorio /opt/oracle/product/11.2.0.1/bin. Habiendo hecho logon con el usuario oracle ejecutamos lo siguiente:

dbstart $ORACLE_HOME

Y para detenerlo:

dbshut $ORACLE_HOME

Para arrancar y parar manualmente la consola de administración tenemos que abrir el script de arranque (en el fichero /opt/oracle/product/11.2.0.1/bin/emctl ) y modificar el shebang para indicar que usaremos bash, que es el shell por defecto que hemos elegido para el usuario oracle:

#!/bin/bash -f

Salvamos el fichero y, ahora si, para arrancar la consola usamos este comando:

emctl start dbconsole

Y para detenerla:

emctl stop dbconsole

Para levantar la base de datos podemos usar SQL*Plus como se nos indica aquí o entrar en el entorno gráfico y hacerlo desde la consola de administración. Si entramos en la consola nos advertirá de que la base de datos no está levantada:

Oracle

Pulsamos el botón de Startup (arriba a la derecha) y en la ventana resultante nos autenticamos usando las credenciales del usuario oracle del sistema operativo:

Oracle

Se nos pedirá confirmación de la operación y, si la damos, la base de datos se levantará y estará ya lista para su uso.

Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes
Categorías: bases de datos, howto´s, tecnología
Etiquetas: ,

7 enlaces 7 (y LIX)

Josemaría | 7 de octubre de 2014 | 1 comentario

enlaces rápidos

Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes
Categorías: enlaces rápidos, tecnología
Etiquetas:

De turismo por Sevilla

Josemaría | 1 de octubre de 2014 | 2 comentarios
Algunas recomendaciones para un fin de semana en Sevilla
especiales El casco antiguo de Sevilla (la zona construida antes de la revolución industrial) es el más grande de toda España y uno de los tres más grandes de Europa (los otros dos son los de Venecia y Génova). Y no es que lo diga yo, que soy sevillano y tenemos fama de ser chovinistas (y lo somos, para que negarlo), sino la Wikipedia.

Se suele decir por ahí que Sevilla sería una ciudad maravillosa sin sevillanos. No voy a deciros que esté completamente de acuerdo pero tampoco estoy frontalmente en desacuerdo. El sevillano tópico es alguién tirando a paletillo que cree que no existe nada que merezca la pena mas allá de sus murallas y que cualquier manifestación cultural que no sean su Feria de Abril y su Semana Santa es un churro. Las cosas han cambiado (afortunadamente) bastante en los últimos años y poco a poco han aparecido algunas manifestaciones culturales al margen de esta Sevilla rancia con la que se divierte Julio Muñoz Gijón en su twitter y en sus novelas (que os recomiendo). Pero si vives allí y tienes unas mínimas inquietudes culturales no es tan divertido, creeme. “Sevilla, si te marchas la añoras y si te quedas la odias”, rezaba una pintada en el muro de los Navarros cuando yo era adolescente. No, no la pinté yo, pero podría haberlo hecho.

Ahora bien, para pasar unos días de descanso es uno de los destinos más apetecibles que podría recomendar. Y lo hago a menudo (aunque no lo parezca por esta introducción ;-) ), así que como los amigos normalmente me piden consejo acerca de que visitar o donde comer y me he cansado de repetirlo mil millones de veces (si, los sevillanos también somos muy exageraos) he creado un mapa en Google Maps con algunos de los sitios más característicos y otros menos conocidos que merece la pena visitar. Me he dejado muchas cosas en el tintero, pero iré ampliándolo a medida que tenga tiempo y/o me acuerde de algunos sitios nuevos. Aquí lo dejo por si le interesa a mi lector.

Ni que decir tiene que los alojamientos en una ciudad como esta son diversos y cubren casi cualquier opción. Si estás buscando un hotel puedes empezar por mirar en Venere. Si prefieres un apartamento o una habitación ahí tienes la oferta de Airbnb.

Y si quieres empezar a abrir boca con alguno de los platos característicos, por aquí he dejado hace ya tiempo un par de recetas apropiadas: el solomillo al whisky, una de las tapas que con más frecuencia te encontrarás en los bares típicos y el puchero en colorao un delicioso guisote de cuchara de esos que empiezan ya a ser imprescindibles en este tiempo. Buen provecho.

Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes
Categorías: turismo
Etiquetas:

Chuletillas (y XXXXI) – Instalar Vmware Player en Manjaro (u otro derivado de ArchLinux)

Josemaría | 28 de septiembre de 2014 | 1 comentario

chuletaHace unos meses contamos por aquí la forma de instalar Virtualbox en Manjaro, Archlinux o cualquier otra distribución derivada de esta. Hoy contaremos lo mismo para Vmware Player, su competencia mas directa.

Antes de empezar, lo primero que te sueles plantear cuando vas a trabajar con virtualización de Vmware es si necesitas usar la versión Worstation o te vale con el Player Plus. Hace unos años la versión Player ni siquiera permitía crear máquinas virtuales y había que recurrir para ello a servicios web (como el que ofrecían en easyvmx.com, ya desaparecido) o a crear los ficheros vmx a mano mediante un editor de texto (lo cual era en realidad bastante fácil si disponías de una plantilla base para hacerlo). Ahora la versión Player Plus ya permite crear máquinas virtuales sin ningún tipo de problemas y, aunque las diferencias con la versión workstation siguen siendo bien grandes, en la mayoría de las situaciones podemos pasar sin ellas. Y ya sabes que Player Plus es gratuita para uso doméstico, no comercial y actividades académicas mientras que la versión workstation sólo dispone de una evaluación gratuita que expira a los 30 días.

Vamos ahora ya a la instalación. Las dependencias previas que deberías de tener instaladas son fuse, gtkmm y linux-headers. Opcionalmente también podrías querer instalar el paquete open-vm-tools.

sudo pacman -S fuse gtkmm linux-headers open-vm-tools

El paso siguiente sería descargar el paquete de instalación desde esta página (correspondiente a la versión 6, la última disponible en el momento de escribir esto) adecuado para la arquitectura que estés usando (32 o 64 bits). Una vez descargado ejecutamos el instalador:

sudo sh VMware-Player-6.0.3-1895310.x86_64.bundle

Al principio de la instalación se nos preguntará en algún momento el directorio donde se guardan los scripts mediante los que se inician y detienen los servicios del sistema (system service scripts directory). Las distribuciones basadas en Archlinux usan systemd y por tanto el directorio /etc/init.d no existe, pero si lo creas antes de arrancar la instalación del vmware player esta advertencia no te aparecerá.

system service scripts directory error durante la instalación de vmware player en una derivada de Archlinux

Si olvidaste hacerlo basta con que escribas este path en la ventana que aparece y listo. Aún así nos aparecerá una nueva advertencia acerca de esto al finalizar la instalación (“No rc*.d style init script directories were given to the installer”). La ignoramos y listos.

La configuración final es bastante complicada. Afortunadamente la comunidad de usuarios de Archlinux ha preparado un paquete que la realiza de forma automática. Para instalarlo y ejecutarlo basta con esto:

yaourt -S vmware-patch

Recuerda que cada vez que actualices el kernel tendrás que volver a ejecutar este parche pero ya no hace falta que vuelvas a descargarlo:

sudo vmware-patch

Si prefieres hacer esta configuración a mano basta con que sigas las detalladas instrucciones que aparecen en la wiki de ArchLinux.

NOTA: Para desinstalar vmware player plus es necesario conservar el instalador (o volver a descargarlo) y ejecutar lo siguiente:

sudo sh VMware-Player-6.0.3-1895310.x86_64.bundle --uninstall-product vmware-player
Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes

Aliño de zanahorias

Josemaría | 25 de agosto de 2014 | 1 comentario

icono distintivo de los textos de recetas de cocina Hace ya un tiempo que me dió por preparar en casa una “comida temática” con aire marroquí y, entre otras recetas, saqué de las páginas de El Comidista un delicioso aliño de zanahorias que, desde entonces, suelo repetir de vez en cuando. Ahí va la receta que aún estamos en temporada:

Aliño de zanahorias

Preparamos un majado con el diente de ajo, perejil fresco, una pizca de sal, pimienta negra molida, el vinagre y el aceite hasta que el resultado es una mezcla mas o menos homogénea y de aspecto cremoso. Yo, que soy bastante perezoso para los majados, suelo pasar antes el ajo y el perejil por la picadora y así me ahorro algo de trabajo. Tostamos un poco el comino en una sartén con una pizca de aceite y lo incorporamos al majado.

Se pelan las zanahorias y se cuecen durante aproximadamente 15 minutos en agua hirviendo con sal. Ten cuidado que si te pasas luego se desbaratan y quedan horribles. Si tienes dudas pínchalas de vez en cuando con un cuchillo. Se escurren y se dejan enfriar un poco. Cuando están templadas se cortan en rodajas gruesas (de poco menos de un dedo… bueno, espera, de aproximadamente un centímetro que no tengo ni idea de como tienes los dedos!) y se mezclan bien con el majado. Si las zanahorias son muy gordas puedes cortar las rodajas más grandes en medias lunas. Las dejamos reposar durante unas horas en la nevera (en un recipiente cerrado para que no se resequen) y listas para comer.

Compártelo:
    emailPDFPrintBitacoras.comIdenti.caTwitterdel.icio.usDiigoFacebookMeneameBarraPuntoNetvibes
Categorías: recetas de cocina
Etiquetas: ,

blackhat En el boletín de noticias de seguridad Una al Día de hispasec se hacen eco hoy de un problema de seguridad encontrado en pebble, el smartwatch más popular del mundo android, y que permitiría a un atacante remoto resetear y borrar toda la información del dispositivo sin apenas despeinarse. El problema descrito es apenas molesto y no tiene importancia alguna puesto que no compromete información ni nada parecido. ¡Todo lo más que nos despistemos con la hora y lleguemos tarde al trabajo! Lo que tiene de inquietante es pensar en las posibilidades que tendrán a su alcance los ciberdelincuentes a medida que este tipo de dispositivos se popularicen y diversifiquen. Imaginaos, por ejemplo, cuando se nos pueda hacer pasar un apuro elevando al máximo la temperatura de nuestra camiseta térmica inteligente o alguien pueda ver al mismo tiempo que nosotros a través de nuestras sofisticadas gafas... La cosa promete. (1 comentarios)