Configurar un entorno de desarrollo en php con gnu linux + cherokee + php + mysql + eclipse

Las herramientas que necesitamos para desarrollar en php son: Un servidor web que soporte php, un servidor de base de datos y un editor de texto/ide. Os voy a explicar como configurar todo este mejunje para tener un entorno funcional de desarrollo con el que sacar la máxima productividad.

Lo primero es instalar todas estas aplicaciones, como las que nosotros hemos elegido son cherokee php5 mysql5 y eclipse en debian las instalamos así:

apt-get install cherokee php5 php5-mysql php5-cgi php5-common mysql-server-5.0 mysql-client-5.0 eclipse

Luego hay que echar a andar el servidor web cherokee junto con php5, en cherokee php funciona como un cgi así que editamos el /etc/cherokee/sites-enabled/default y dejamos el apartado correspondiente a php que se encuentra al final del archivo tal que así:

Extension php, php3, php4, php5 {
Handler phpcgi
}
Ahora tenemos que comprobar que el ejecutable php-cgi hace referencia a la versión 5 de php y no a una anterior:

cheli@casa1:~$ which php-cgi
/usr/bin/php-cgi

cheli@casa1:~$ ls -l /usr/bin/php-cgi
lrwxrwxrwx 1 root root 25 2006-11-19 17:09 /usr/bin/php-cgi -> /etc/alternatives/php-cgi

cheli@casa1:~$ ls -l /etc/alternatives/php-cgi
lrwxrwxrwx 1 root root 17 2006-12-20 16:08 /etc/alternatives/php-cgi -> /usr/bin/php5-cgi

Si no es así tenemos dos posibles soluciones, modificarlo mediante la orden «update-alternatives» o indicar directamente en el archivo de configuración que el ejecutable es php5-cgi y no php-cgi que en verdad es un enlace simbolico al que tenemos por defecto.

Ahora comprobamos que funciona creando la típica página de prueba en el directorio por defecto del servidor, /var/www y la llamamos por ejemplo prueba.php con el siguiente contenido:

<?php phpinfo() ?>

Reiniciamos el servidor web para actualizar los cambios con:

/etc/init.d/cherokee restart

Ya podemos cargar en el navegador la siguietne url «http://localhost» con la cual debe salirnos el mensaje de bienvenida de cherokee, si todo ha ido bien y cargamos «http://localhost/prueba.php» entonces debe salirnos el resultado de ejecutar la función phpinfo en el servidor.

De mysql no voy a hablar, ya tocaré el tema si me lo pedis en otro artículo y diré como configurar mysql y administrarlo desde su cliente en modo texto o más fácilmente desde phpmyadmin. Sólo comentar que si teneis configurada una base de datos ahora ya la podreis manipular desde php.

Cuando arrancamos eclipse por primera vez por defecto genera el directorio workspaces dentro del directorio de trabajo($HOME) de nuestro usuario. Al crear los archivos de nuestros proyectos php aquí no vamos a poder configurar nuestro servidor cherokee con un DocumentRoot que acceda a ellos ya que el servidor cherokee se ejecuta con un usuario y grupo que no tiene permiso para acceder al espacio de trabajo de nuestro usuario. Podriamos dar permiso a ese directorio para que si tuviera acceso pero guarrear el directorio de trabajo de mi usuario a mi personalmente no me guta. Lo que vamos a hacer es ejecutar el servidor cherokee con usuario=grupo=nuestro_usuario. Esto nos genera un problema de seguridad bastante importante ya que tener un servicio corriendo con un usuario que tenga acceso a nuestros datos no es que mole mucho, por tanto vamos a tener que protegernos. Una manera sería meter una regla al cortafuegos mediante iptables para que el servidor no sea accesible desde fuera y otra sería configurar cherokee mediante «acls/directiva Listen» para que solo escuche por el localhost, aunque esto no nos va a evitar que si el servidor tiene un problema de seguridad nos puedan hacer ataques en local.

Volvemos a editar el /etc/cherokee/sites-enabled/default y ponemos el DocumentRoot así:

DocumentRoot /home/nuestro_usuario/workspace/

Y en el /etc/cherokee/cherokee.conf cambiamos estas directivas así:

Listen 127.0.0.1

User nuestro_usuario
Group nuestro_usuario

Volvemos a reiniciar el servidor web para actualizar los cambios y listo.
Por último solo nos queda configurar un par de añadidos de eclipse para que nos soporte php y alguna cosita más:

Eclipse ya trae soporte para el sistema de control de versiones cvs, si utilizamos subversion también tendremos que bajarnos un añadido.

Básicamente todos los añadiso se instalan igual, hay que ir al directorio de instalación de eclipse /usr/lib/eclipse/ y descomprimir el archivo de forma que se desplieguen todos los archivos por los directorios (plugins y demás) necesarios. El resultado final es este:

phpeclipse

Y eso es todo, espero que os sea útil.

Cheli

Imagen en negro en Canon Powershot A60

Solo puedo decir que el servicio de Canon ha sido impecable. Estas navidades me puse a hacer unas fotos después de un par de semanas sin tocarla y cual es mi sorpresa que no se ve nada, aparecia la imagen en negro cuando la tenía en modo disparo. Entonces me puse a revisar todo y funcionaba correctamente, el menú y sus opciones, en modo reproducción se veía todo perfecto, etc.

Empiezo a buscar por internet y me entero que es un fallo de fabricación que tienen algunos modelos antiguos de canon y entre ellos está el mio y que si es así canon se hace cargo. En la página de canon busco los datos de contacto y les mando un correo-e para informarme de como puedo solucionar el problema y si hay algún servicio de atención al cliente en Alicante. Me contestan en un par de dias y me informan que para gestionar las reparaciones llame al servicio de reparaciones, que ellos recogerán la cámara en el domicilio.

Llamo al servicio de reparaciones y después de esperar 10 minutos y no atenderme nadie decido llamarles en otro momento. Vuelvo a llamar al día siguiente y esta vez me pillan enseguida, me cuenta la chica que si es un fallo de fabricación ellos se hacen cargo pero que eso se decide después de que vea la cámara el técnico. Me comenta que tengo dos opciones, una es acogerme a una tarifa plana de unos 100€ y que me hagan una revisión general y la otra es que me presupuesten la cámara y si realmente es un fallo de fabricación no me cobran nada y sinó yo ya decido. Le digo que mejor lo segundo porque es una cámara ya vieja y si eso ya me compraría otra, entonces me dice que la vendrán a recogerla los de tourline el día 2 de enero.

El día 2 no viene nadie a recoger nada, pero el día 3 me llame el chico de tourline que había tenido un problema y que vendría hoy, que le indicara donde está mi casa que no lo sabía muy bien. En media hora está ahí el chico y le doy la camara.

Dos días más tarde me llega un mensaje al móvil indicandome que ya tienen la cámara y cómo hacer un seguimiento del pedido, ahí veo que la cámara les había llegado el día 4 y que estaba pendiente de generar el presupuesto.

El jueves 11 me llaman de canon/serfoto y me comentan que la cámara ya está reparada y que me llegará hoy lunes 15. Y ahora hace como media hora ha llegado el mismo chico de tourline con la cámara reparada y sin cobrarme un duro.

En definitiva, un servicio impecable.

Cheli

Conocer el horario de las zonas calientes del planeta con el reloj mundial: Kworldclock

Tengo unos amigos que a finales de enero se piran de viaje a Cuba, desgraciadamente yo no voy snif. La cuestión es que uno de ellos quería saber que hora sería allí ahora así que nos pusimos a especular los horarios en américa, en eso que me acordé y le digo – Pero tiooo miralo con el reloj mundial en tu debian.

Reloj mundial kwordclock

Total que se me quedó embobado más de media hora pasando el ratoncito por encima de todos los pasises para saber la hora, ¡¡me hizo ponerle un enlace directo en el escritorio y todo!! ¡que fuerte!.

Cheli

He recuperado mi vieja instalación de debian

Hoy por fin he recuperado mi vieja instalación de debian de mi disco duro, voy a explicar como lo he hecho.
Hace cosa de dos meses mi cuñado se compró un ordenador nuevo y a mi me cayó el suyo, un AMD Ahtlon xp 2100. Le puse mi disco duro de 120GB pero de primeras no arrancó mi gnu linux. Me extrañó mucho que no arrancara pero como tenía prisa me monté un viejo disco duro que tenía por ahí y le instalé lo primero que tenía a mano, una ubuntu dapper que inmediatamente pasó a ser una edgy y poco tiempo después la actualicé a feisty.

Estos días me he puesto a enredar con el disco duro de 120GB para ver si podía recuperar la instalación de debian, lo tenía instalado en el ide primario como esclavo para poder recuperar mis datos cuando me fueran haciendo falta, los pasos son los siguientes.

Mi vieja instalación caia en hda4 pero al montar el disco como esclavo ahora era hdb4, así que como suelo hacer me creé un directorio chorra para utilizarlo de punto de montaje y luego monté la partición.

mkdir a

mount /dev/hdb4 a

Entré en a para ver como estaba todo y efectivamente esa era mi partición raiz, entonces le hice un chroot.

chroot a

En este momento la actualicé a etch ya que hacía meses que no la actualizaba y así pasé de sid a etch sin problemas. Recordar que no se puede hacer un downgrade a no ser que por vejez de paquetes se estabilice otra vez la distro.

vim /etc/apt/sources.list

:%s/sid/etch/g

:%s/unstable/etch/g

😡

apt-get update

apt-get dist-upgrade

En este momento tuve algunos problemas con algunos paquetes, por ejemplo gzip me dió bastante la lata pero al final lo solucioné borrando un archivo de info que estaba mal y que era innecesario , luego en el atlas3-3dnow necesitaba recuperar información del cpuinfo así que me tocó montar el /proc.

mount /proc
etc

Parecía que todo estaba en su sitio así que decidí montar el disco en el ide primario como master o hda y probar. Aquí me surgieron dos problemas, uno derivado de utilizar lilo y sus particularidades de tener que reinstalarlo en cada cambio y hacerlo desde el chroot hacía que se complicara un poco la cosa, y el otro sigue siendo que con el kernel 2.6.18 que trae debian no me arranca por un tema con los dispositivos ide. Total que arranqué con un kernel 2.6.12 que seguía configurado en el lilo pero claro, no me tiraban las X porque necesitas un 2.6.15 o superior para que tire udev, total que me puse a reconfigurar el lilo para dejarlo perfecto y dejar el 2.6.17, que también tenía instalado, listo para que tirase perfecto.

Ahora a ver si me decido a poner grub que total, instalarlo son 2 minutos y así me quito de dolores de cabeza. Ahora el que está en el ide primario como esclavo es el disco donde tengo feisty para ir recuperando lo pocos datos que tengo ahí y luego formatearlo para tenerlo como disco de datos.

Cheli

Hoy es mi cumpleaños

Cuando voy de cena o comida con los colegas y pedimos la cuenta solemos hacer la coña de decir que hoy es el cumpleaños de uno de nosotros para indicar que hoy paga él, para hacerlo creible le cantamos el cumpleaños feliz y todo.

Estos días ya me han dicho dos personas que es una mala costumbre española, que en todos lados los que pagan son los invitados. Primero me lo dijo una argentina y unos días después me lo comentó una camarera que creo que era inglesa, de ser así por mi como si es mi cumpleaños todos los días jejeje 😉

Cheli

Nochevieja en el pub de «moda»

Después de cenar y las campanadas nos hicimos unas copitas, como no, y luego bajamos al pueblo a seguir la fiesta. Fuimos a un pub donde trabaja la hermana de uno de mis amigos y cuando fuimos a pedir, de todos/as los camareros/as había una que no ubicaba,  entonces  empecé a preguntar y cuál fué mi  sorpresa al decirme que era Yanira de supermodelos 2006.

Yo pensaba que el pub de moda significaba el pub donde va todo el mundo, pero ahora toma una nueva acepción, el pub donde trabaja una supermodelo jajajajajaja.

Cheli

Interesante reflexión de Mark Shuttleworth sobre la integración de proyectos

Mark hace una reflexión que me ha parecido muy interesante sobre la integración que sería deseable entre proyectos de software libre. La ventaja que existe en el mundo del software libre es que desarrolladores de todas partes del planeta, de una forma aparentemente caótica desarrollan piezas de software fantásticas. Un desarrollo puede depender de otro y no pasa nada porque de ese desarrollo se espera según el plan de ruta del proyecto que tenga implementadas ciertas cosas y al final todo se integra más o menos sin problemas.

¿Pero que pasa durante el desarrollo? ¿no os ha ocurrido como cuenta Mark de tener que daros de alta en varios sistemas distintos de envío de errores?, si tu envías un fallo a un programa pero al final resulta que el fallo era de la biblioteca gtk que utiliza, ¿cómo se enteran estos últimos?. Lo que toca es percatarse de esa situación y reenviar el error al sistema del proyecto gtk. Lo ideal sin embargo sería que todos los proyectos se integraran como pasa en los proyectos de grandes compañías.

Parece que ya se está empezando a trabajar en estas cosas con proyectos como launchpad pero todavía falta para que esto sea una realidad, si se logra aumentaría muchísimo la productividad de los desarrollos libres.

Cheli

Me gusta este libro: Beginning PHP and MySQL 5, from novice to professional

Saqué un libro de la biblioteca sobre php 5, había hecho alguna cosita en php 4 hacía ya un tiempo pero me interesaba especialmente las mejoras en POO que traia la versión 5 de php. Al final encontre este fantástico libro de W. Jason Gilmore que trae todo lo necesario para aprender a hacer aplicaciones en un entorno LAMP (Linux Apache Mysql y PHP).

Beginning PHP and MySQL 5, from novice to professional

El libro está muy bien, en cada tema primero se hace una breve introducción y el contexto histórico del software y/o lenguaje, por ejemplo antes conocía muy por encima la historia de PHP y ahora en 4 hojas de lectura ya me la se enterita. Luego sigue con las explicaciones que se acompañan con uno o varios ejemplos prácticos.

El libro toca los siguientes temas, en PHP empieza desde lo más básico de cómo declarar variables, los tipos de datos, crear comentarios, arrays, sentencias de control, excepciones, expresiones regulares, etc hasta POO en la versión 5, herencia, interfaces, clases abstractas, visibilidad de atributos y métodos…

También hay temas dedicados a la instalación y configuración de los distintos servidores que se necesitan como son apache, el módulo php para apche y mysql. A parte hay algunos temas para configuraciones más específicas de los servidores como es el tema de seguridad en mysql.

Por último están los temas de bases de datos, hay un capítulo dedicado a sqlite pero prácticamente el resto son exclusivos  de mysql donde se tratan las características más importantes de la versión 5, consultas y subconsultas, vistas, procedimientos almacenados, indices, transacciones y triggers.

Por el medio hay varios temas que a los que empiezan les pueden resultar un poco duros como son la integración con directorios ldap, servicios web, servicios de red o plantillas con smarty pero que en cuanto estás metido en el ajo te pueden servir de mucha ayuda.

En definitiva, un libro muy completo y que en amazón sale por unos 30$, menos de lo que seguramente me gastaré esta nochevieja. Bueno solo una cosita y que puede ser una pega para algunos, está en inglés xDDD .

Cheli

El soporte de Windows.Forms en mono 1.2.2.1 ya es aceptable

Estaban hablando en el canal #html del hispano sobre el soporte que tiene actualmente mono de asp.net y esto ha derivado a hablar sobre que tal están las Windows.Forms soportadas. Entonces me he dicho, tio ya que tienes mono 1.2.2.1 en ubuntu feisty vamos a probar que tal tira el dentalNet que se compiló con el framework de microsoft 1.1 con el visual studio 2003.

dentalNet, Windows.Forms en mono

Lo cierto es que el resultado ha sido bastante satisfactorio, se nota un poco de retardo en el refresco de las ventanas y un comportamiento un tanto extraño con el foco. La aplicación casca porque hay que adaptar la cadena de conexión de la base de datos y quizá alguna cosita más pero por lo demás tira muy bien 😉 .

Creo que dentalNet ya sería capaz de correr en un entorno completamente libre pero si no es así seguro que falta poco.

Cheli