mac

Apache + PHP + MySQL en Mac OS X

En esta guía vamos a ver cómo podemos tener en nuestro equipo un entorno de desarrollo MAMP, para poder testear las páginas con las que trabajamos. En concreto vamos a ver cómo hacer esto sobre OS X Lion.

MAMP: Pasos para su instalación

  1. Habilitar PHP en Apache.
  2. Configurar hosts virtuales.
  3. Iniciar el sevidor web Apache.
  4. Instalar MySQL.
  5. Instalar phpmyadmin.

Como ves, no vamos a instalar ni PHP ni Apache. Esto es porque OS X Lion lo trae ya instalado. Solo nos tenemos que preocupar por integrarlo y por añadir un sistema gestor de bases de datos. ¡Vamos allá!

1. Habilitar PHP en Apache

Como ya sabes, OS X Lion trae incorporado PHP. Para comprobarlo, vamos a abrir terminal y vamos a ejecutar:

$ php -v

PHP 5.3.15 with Suhosin-Patch (cli) (built: Jul 31 2012 14:49:18)
 Copyright (c) 1997-2012 The PHP Group
 Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Lo cual nos indica que está instalado PHP 5.3.15 con el parche de seguridad Suhosin.

Para habilitarlo en Apache vamos a editar el fichero /etc/apache2/httpd.conf, y vamos a descomentar la siguiente línea:

#LoadModule php5_module libexec/apache2/libphp5.so

Y con esto ya hemos habilitado PHP en Apache!

2. Configurar hosts virtuales

De manera predeterminada Apache trae los siguientes hosts:

  • http://localhost/~tuusuario/ – Con el contenido de la carpeta /Users/tuusuario/Web/.
  • http://localhost/ – Con el contenido de la carpeta /Library/WebServer/Documents/.

En este ejemplo vamos a alojar cada nuevo host virtual en una carpeta dentro de /Library/WebServer/Documents/. Por tanto, vamos a otorgar permisos de escritura a nuestro usuario:

sudo chmod g+w /Library/WebServer/Documents/

Y ahora vamos a habilitar los hosts virtuales en Apache. Editamos de nuevo el fichero /etc/apache2/httpd.conf y descomentamos la siguiente línea:

Include /private/etc/apache2/extra/httpd-vhosts.conf

Y con esto ya tendríamos nuestro entorno preparado para alojar hosts virtuales.

Host virtual de ejemplo

Vamos a crear un ejemplo. Un host llamado pagina01.local. Lo primero será mapear ese nombre a nuestro host. Con esto logramos que haya un nombre único que apunte a nuestro equipo. Para ello editamos como administradores el fichero /etc/hosts y añadimos la siguiente línea:

127.0.0.1 pagina01.local

Ahora creamos la carpeta donde se alojará la página:

mkdir /Library/WebServer/Documents/pagina01.local/

Y añadimos a la carpeta que acabamos de crear un fichero index.php, que es el archivo predeterminado, con el siguiente contenido:

<?php phpinfo(); ?>

Por último, vamos indicar a Apache que hemos creado un host virtual, dónde lo hemos creado, con qué nombre se accederá, etc. Editamos el fichero /etc/apache2/extra/httpd-vhosts.conf y añadimos lo siguiente:

<VirtualHost *:80>
 ServerAdmin admin@example.com
 DocumentRoot "/Library/WebServer/Documents/pagina01.local"
 ServerName pagina01.local
 ServerAlias *.pagina01.local
 ErrorLog "/private/var/log/apache2/pagina01.local-error_log"
 CustomLog "/private/var/log/apache2/pagina01.local-access_log" common
 </VirtualHost>

Y con esto ya está preparado para funcionar nuestro nuevo host virtual. En cuanto iniciemos el servidor web, podremos consultar la página.

3. Iniciar el servidor web Apache

Por defecto Mac OS X no arranca el servidor web. Para hacerlo simplemente tendremos que acceder a las preferencias del sistema, y en el apartado “Compartir” marcamos la opción “Compartir Web”:

Ventana de habilitación de compartir webs en OS X

¡Y ya tenemos iniciado el servidor web! Puedes probar que ha funcionado accediendo a http://pagina01.local/. Si todo ha ido bien hasta ahora, te saldrá la configuración de PHP.

4. Instalar MySQL

Los equipos de escritorio no incorporan un servidor de bases de datos. Al tratarse de un estándar, vamos a instalar MySQL.

Accedemos a http://dev.mysql.com/downloads/mysql/ y descargamos la versión DMG. Cuando lo hayamos descargado, instalaremos los tres ficheros:

MySQL en el Finder

Una vez instalado, arrancamos el servidor de bases de datos, yendo a las Preferencias del Sistema, accediendo a MySQL y pulsando sobre “Start MySQL Server”:

Preferencias MySQL en entornos MAMP

Ahora vamos a introducir la contraseña del usuario root. Lo podemos hacer o bien así:

$ /usr/local/mysql/bin/mysqladmin -u root password 'contraseña'

O bien siguiendo los pasos del siguiente comando:

$ sudo /usr/local/mysql/bin/mysql_secure_installation

Y con esto ya tenemos instalado, iniciado y preparado nuestro servidor de bases de datos.

5. Instalar phpMyAdmin

PhpMyAdmin es el frontend MySQL más popular. Además funciona en PHP, por lo que nos viene de perlas para poner a prueba nuestra recién creada instalación del entorno MAMP.

Podemos instalarlo en un nuevo virtual host. Para ello tan solo debemos seguir los pasos del apartado en que creamos el virtual host pagina01.local, y crear uno llamado, por ejemplo, phpmyadmin.local

Descargamos la última versión desde http://www.phpmyadmin.net/home_page/downloads.php y la descomprimimos en /Library/WebServer/Documents/phpmyadmin.local/

Por último, copiamos el fichero config.sample.inc.php a config.inc.php, y sustituimos esta línea:

$cfg['Servers'][$i]['host'] = 'localhot';

por esta:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

¡Y ya lo tenemos! Si accedemos a http://phpmyadmin.local/ con nuestro usuario root, y la contraseña que establecimos al instalar MySQL, tendremos acceso al frontend phpMyAdmin.

A partir de aquí, ya podrás crear nuevos hosts virtuales y sus bases de datos a medida que los necesites para poder trabajar sobre tu entorno de desarrollo local.

¡Disfruta de tu entorno MAMP!

CoRD, cliente de escritorio remoto de Mac

Hace unos días hablaba de mi reintroducción al mundo Windows. Para conectar desde Mac mencionaba que se podía utilizar el cliente de escritorio remoto de Microsoft. Bien, al poco de probarlo uno se da cuenta de que es un software que no está listo para producción. El teclado de un Mac es ligeramente distinto al de un Pc convencional. Una de las diferencias es que no tiene tecla “Alt Gr”. Si utilizas un teclado inglés de EEUU, esto no te supondrá un problema, ya que no se utiliza esa tecla:

Disposición de un teclado Inglés

Pero si ése no es tu caso, el cliente de escritorio remoto de Microsoft no te servirá; no hace una conversión previa de un teclado a otro, sino que envía a Windows tal cual las teclas que has pulsado.

Todo esto intenté antes de dar con la solución:

  • Utilizar otro software, como VNC.
  • Hacer uso de la combinación Alt+Ctrl, que en Windows emula la tecla AltGr. Además de ser incómodo, no muestra algunos caracteres como ‘{‘ o ”.
  • Hacer un mapeo de teclado personalizado modificando el registro.

Cuando ya creía haberlo probado todo, vi un foro en el que hablaban de CoRD, un cliente de escritorio remoto para Windows. Lo probé, y a la primera :)

Además de contar con las mismas funcionalidades que el de Microsoft, tiene unas cuantas cosas que lo convierten en un mejor cliente RDP:

  • Se comporta mejor en el modo pantalla completa, ajustándolo a la resolución de tu monitor. Con el de Microsoft esto no ocurría, dejando una banda negra a cada lado.
  • Interpreta y convierte de tu teclado al equivalente en Windows. Puedes escribir la arroba, llaves, almohadillas, o corchetes.
  • Convierte la tecla cmd de Mac en la tecla Win.
  • Puedes tener varias sesiones abiertas a la vez, pudiendo navegar entre ellas desde un cómodo panel.

Y además, es open source!

¿Qué diferencias hay entre Google Chrome y Chromium?

Es posible que, al igual que a mí, os haya surgido esa duda. Si bien desde hoy tenemos a nuestra disposición Google Chrome para Linux y de Mac, hace tiempo que podíamos disfrutar de Chromium. ¿No habíamos quedado en que era lo mismo? ¿Qué diferencias hay? Voy a tratar de dar respuesta a estas dudas.

chrome_vs_chromium

Si consultamos la Wikipedia en castellano veremos que:

  • Google Chrome es un navegador web desarrollado por Google y compilado con base en componentes de código abierto [...]
  • Chromium es el proyecto de software libre detrás de Google Chrome[...]

O dicho de otra forma, Google Chrome es la compilación y el paquete que Google hace del software Chromium. Algo así como los distints paquetes que las distribuciones de GNU/Linux hacen del kernel.

Si eso es todo… ¿Qué más me da usar uno u otro? ¿No son lo mismo pero empaquetado por entidades diferentes? Bien, Google tiene una página explicativa al respecto que con vuestro permiso voy a traducir:

Chromium en Linux tiene en general dos sabores: Puedes instalar o bien Google Chrome o bien un navegador Chromium. Esta página trata de explicar la diferencia entre ambos:

Google Chrome

Google Chrome es el proyecto de software libre Chromium construído, empaquetado y distribuído por Google. Tiene las siguientes diferencias respecto a Chromium:

  • Logo coloreado
  • Opción de informe de errores
  • Opción de métrias de usuarios
  • Soporte para H.264, AAC, MP3, Vorbis y Theora con las etiquetas audio y video.
  • Aislamiento de procesos
  • Un sólo paquete deb/rpm
  • Los ficheros de los perfiles se almacenan en  ~/.config/google-chrome

La compilación del canal de desarrollo se actualiza alrededor de una vez por semana, tras pasar los test automáticos y unos pocos test manuales de garantía de calidad.

Chromium

  • Logo azul
  • Soporte para Vorbis y Theora con las etiquetas video y audio
  • El aislamiento de procesos es opcional, depende del mantenedor del paquete
  • Los paquetes dependen de la distribución, a veces se dividen en múltiples partes.
  • Los ficheros de perfiles se almacenan en ~/.config/chromium

Bien, ahora queda un poco más claro. La principal diferencia que veo yo es el soporte para los codecs de compresión de audio y vídeo. Google, como compañía, está dispuesta a pagar royalties por la licencia de la patente de dichos codecs, no así las ediciones libres.

Por otra parte, mientras nada me haga pensar lo contrario, creo que el nivel de calidad que ofrecen las distribuciones Linux en general es bastante elevado, por lo que no considero que ese hecho otorgue ventaja a Google Chrome.

¿Cuál elegir? Yo personalmente seguiré usando Chromium como navegador secundario y Firefox como primario. Principalmente para promover el uso de tecnologías libres y estándar, como son Vorbis para el audio y Theora para el vídeo.