Programando php en Eclipse

Curva de aprendizajeHace un par de entradas escribía sobre como tener instalado Eclipse 3.4 y Subversion en Ubuntu. Los necesitaba para programar una web que estoy haciendo en php, aunque le pese a Jesús.

Me he decido por php, porque ya he trabajado con el lenguaje antes y me parece muy fácil de usar y con una curva de aprendizaje muy pronunciada.

Cómo entre otros propósitos tengo el de aprender a utilizar eclipse con mucha soltura, no me queda más remedio que instalar algún añadido (aka plugin) para poder programar en php.

Es tan fácil como ir la web sobre instalación de phpeclipse y seguir las instrucciones.

¡FALSO! A mi no me funcionó y he tenido que añadir la línea:

http://update.phpeclipse.net/update/nightly

en vez de la que recomienda en la web:

http://update.phpeclipse.net/update/stable/1.2.x

Aparte de programar con phpeclipse, también dedico mi vida a curarme de un resfriado que me tiene en casa encerrado.

Ubuntu, Eclipse 3.4 y Subversion

    Edicciones Sábado 1-11-2008

  • También, como es lógico, necesitarás tener java instalado. Yo suelo utilizar sun-java6-jdk
  • Comento en caso necesario las diferencias entre Ubuntu 8.10 y Ubuntu 8.04, aunque son procesos extremadamente parecidos.

Éste último año he dejado de lado Eclipse para hacer mis prácticas con Netbeans. Mucho ha pasado ya desde mi primer encuentro con el IDE de Sun en el que todo me parecía que estaba mal situado y que no funcionaba correctamente. Ahora mismo me encuentro muy cómodo trabajando con él.

Por suerte o por desgracia, a los chicos de Google les gusta Eclipse y para programar aplicaciones para Android hace falta utilizar la versión 3.3 o la versión 3.4. ¿Adivinas el problema? Ubuntu 8.04 (y las versión 8.10 también) trae/traerá la antiquísima versión 3.2 de eclipse.

Nos ponemos manos a la obra y nos vamos a la página de descargas de eclipse. Una vez allí seleccionamos la que más nos interese, yo he optado por la versión de de 162 MB que lo trae todo. Los que no estén habituados a salirse del apt-get install, entre los que me encuentro, se preguntarán que hacemos con ese archivo tan feo.

Los pasos que comento no van a ser un copia/pega porque creo que si no sabes lo que estoy diciendo, no deberías estar tocando estas cosas.

Descomprimimos el archivo y lo movemos al directorio /opt (necesitaremos permisos de root). A los que les guste cacharrear reconocerán este directorio porque es dónde se instala por omisión el Google Earth.

Hacemos un enlace de /opt/eclipse/eclipse a /usr/local/bin/ con lo que ya podremos ejecutarlo con permisos de usuario común desde la consola con un eclipse o bien creando una entrada para el menú o dónde nos apetezca poner un acceso directo.

Otra cosa que he aprendido este año es que o usas un sistema de control de versiones o estás muerto, al menos si tu proyecto es grande. Así que a instalar un servidor de subversion en mi máquina para no depender de la ayuda extranjera (aka del hosting de otros amigos).

Lo primero será instalar subversion (los paquetes subversion y subversion-tools), el módulo para apache libapache2-svn (si no tienes apache también deberías instalarlo).

Nos creamos un grupo llamado subversion (Sistema -> Administración -> Usuarios y Grupos) y al usuario que estés instalado en darle acceso al subversion, lo metes en el grupo.

Desde consola: htpasswd2 -c /etc/apache2/dav_svn.passwd user1 dónde user1 lo cambias por el usuario que quieras que tenga acceso, con este comando le das una clave de acceso al subversion.
En Ubuntu 8.10 habrá que usar htpasswd2 -c /etc/apache2/dav_svn.passwd user1.

Si necesitas darle acceso a más usuarios prueba con este comando htpasswd2 /etc/apache2/dav_svn.passwd user2, pero sustituyendo user2.

Lista de comandos para crear el directorio de trabajo de subversion.

sudo mkdir /home/svn
sudo svnadmin create /home/svn
sudo chown -R www-data:subversion /home/svn/
sudo chmod -R 770 /home/svn/

Aquí la parte más aburrida:

sudo gedit /etc/apache2/mods-available/dav_svn.conf
y escribe:

##
# SVN
#
<Location /svn>

DAV svn
SVNPath /home/svn

AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd

Require valid-user

</Location>

¡Ya casi lo tenemos! Nos falta instalar el plugin de subversion para eclipse. Es tan fácil como seguir los pasos de la web de subclipse con la salvedad de que debemos instalar también SVNKit adapter debido a que la versión del cliente de subversion de Ubuntu 8.04 no le gusta al subclipse, cosas de la vida.

Ya deberías tener tu sistema con Eclipse y Subversión corriendo, no ha sido tan duro, ¿o sí?

Extra:

Servidor de FTP en Ubuntu

Si eres de los que tienes tu propio servidor en casa para alojar un blog tipo wordpress quizá te hayas encontrado con la función automática de actualizar plugins y el propio wordpress.

Para poder utilizarla necesitas tener un servidor de FTP en tú máquina. Yo me decanto por instalar VSFTP, más que nada porque no necesita ningún trabajo para configurarlo. Para instalarlo sudo apt-get install vsftpd y listo.

El único problemilla que nos encontraremos será que para acceder a los archivos del directorio /var/www necesitamos hacerlo con el usuario root y por seguridad no podremos. ¿Cómo lo arreglamos? Muy fácil, abrimos el archivo /etc/ftpusers con sudo gedit /etc/ftpusers y comentamos o borramos la línea de root, para el que no sepa lo que es comentar, vale con poner una almohadilla (#) delante de la palabra root.

Una vez hecho, ya podremos actualizar nuestro wordpress de manera automática.

Como medida de precaución recomendaría dejar el fichero /etc/ftpusers como estaba una vez que hayamos terminado, incluso desactivar el servidor ftp si lo podemos arrancar cuando lo necesitemos vía ssh, por ejemplo.

* Nota: es la segunda vez que escribo la entrada, la anterior era más interesante, pero me cargué la base de datos poca antes de publicarla. Así que próximamente… cómo hacer copias de seguridad en tu servidor Ubuntu.

Cómo mejorar la seguridad de los foros phpBB2

Actualización: en la rama 3 de phpbb probablemente no haga falta hacer todo ésto.

Mientras esperamos la salida de la versión 3 de los foros en phpBB, los administradores vemos cómo de un tiempo a esta parte somos acosados por el spam. Tener un foro en el que un usuario no registrado pueda escribir se ha convertido casi en una utopía, los spammers se las saben todas y para hacer su publicidad han ideado maneras de registrar usuarios muy elaboradas. Ya hay mucha gente que no permite el registro sino que mete los usuarios a mano.

Vamos a ver, este tipo de inventos (cms, foros…) se inventaron para que todo fuera fácil y cómodo y que haya unos cuantos dedicados a vender sus métodos para llenarte un foro de basura debe tener remedio. Después de probar varias soluciones (The Humanizer quizá sea la más conocida) creo que lo mejor que podemos hacer es trabajar más los captchas, es por eso que la comunidad de modificaciones de phpbb ha sacado Better Captcha, que si no me equivoco es la tecnología que traerá la versión tercera. De momento, en 24 horas no se me ha registrado ningún usuarios de spam, cuando la media anterior era de dos o tres diarios.

Al grano, que me lío.

  • Para instalar better captcha, vamos a descargar la última versión
  • Nos descargamos y descomprimimos el zip.
  • Copia todos los archivos que hay dentro del directorio root/includes que acabas de descomprimir en el directorio includes de tu foro.
  • Crea una copia de seguridad del archivo profiles.php por si las moscas y ábrelo (el original).
  • Busca el texto: include($phpbb_root_path . 'includes/usercp_confirm.'.$phpEx);
  • Sustitúyelo por: include($phpbb_root_path . 'includes/usercp_captcha.'.$phpEx);
  • Guarda los cambios y súbelos al servidor.

¿Fácil, verdad?

Ahora sólo tienes que estar atento, por si alguna de las actualizaciones de phpbb2 cambia ese archivo, ya que se perdería la mejora.

Una última cosa, quizá te parezca mal que los datos de tus usuarios registrados sean públicos, personalmente, a mi no me gusta que las direcciones de correo de tanta gente sean accesibles, así que para que la lista de miembros sea visible sólo para registrados tienes que hacer lo siguiente:

  • Abre el archivo memberlist.php
  • Busca: // End session management
  • Justo debajo añade:
    if ( !$userdata[‘session_logged_in’] )
    {
    redirect(append_sid(“login.”.$phpEx.”?redirect=memberlist.”.$phpEx, true));
    exit;
    }

Ten cuidado, igual que en el caso anterior, una actualización podría echar a perder estos cambios.