Cómo instalar y configurar Apache, PHP, MySQL y phpMyAdmin en OS X 10.9 Mavericks

Sí eres desarrollador web y necesitas tener Apache, PHP y MySQL funcionando en tu nuevo sistema operativo OS X Mavericks, esta guía te va a ayudar a instalarlo y configurarlo. También sé que existen herramientas que incluyen todo el paquete configurado cómo MAMP y XAMP pero lo cierto es que yo prefiero instalar todo desde cero para evitar problemas a la hora de querer actualizar o instalar extensiones de PHP, cómo por ejemplo la extensión Intl que se requiere para trabajar con Symfony.

Si haz actualizado desde Mac OS X 10.8 Mountain Lion y tenías ya todo configurado, tu MySQL, Apache y la configuración de phpMyAdmin deben seguir funcionando sin problema, ahora sólo tienes que activar PHP. Pero si haz hecho una instalación limpia de OS X Mavericks sigue todos los pasos.

Para tener tu servidor local de desarrollo con Apache, PHP y MySQL vas a dividir esta guía en estos pasos:

  1. Habilitar Apache
  2. Configurar el DocumentRoot en Apache
  3. Configurar los .htaccess para que permitan sobreescribir
  4. Habilitar PHP
  5. Instalar y configurar MySQL
  6. Instalar phpMyAdmin
  7. Configurar permisos

1. Habilitar Apache

Apache está preinstalado en el sistema operativo y solamente le falta ser activado a través de la línea de comandos, esto se hace desde la aplicación llamada Terminal que se encuentra en /Applications/Utilities/Terminal

Para aquellos no familiarizados con la Terminal, en realidad no es tan complicado como puede parecer, una vez que abras la Terminal tienes una ventana lista para que escribas los comandos, puedes solamente copiar y pegar los comandos aquí mencionados y presionar Enter, algunos comandos no dan respuesta, sólo significa que el comando se llevó a cabo, otros comandos dan información, etc. Pasemos a la acción.

Para iniciar Apache escribe este comando en la Terminal:

sudo apachectl start

Después de poner este comando te va a pedir la contraseña de administrador, esto es porque estamos usando el comando sudo para ejecutar apache con permisos de administrador.

Ahora cuando quieras apagar Apache usa este comando:

sudo apachectl stop

Para reiniciar Apache

sudo apachectl restart

Para mostrar la versión actual de Apache

httpd -v

La versión de Apache instalada en OS X Mavericks es la Apache/2.2.24

Después de iniciar Apache, prueba desde el navegador que el servidor web esté funcionando, escribe la dirección http://localhost y deberás ver en tu navegador el texto: It works!.

1 - Iniciar Apache en OS X Mavericks

2. Configurar el DocumentRoot en Apache

El DocumentRoot (directorio raíz) es el lugar donde se almacenan los archivos que nuestro servidor va a compartir, es el equivalente a los \’public_html\’ y \’htdocs\’, OS X ha tenido históricamente 2 directorios raíz, uno a nivel de sistema y otro a nivel de usuario, puedes usar ambos o solamente trabajar con uno, la ventaja del de nivel de usuario es que permite que cada usuario tenga su propia carpeta raíz, mientras que el que está a nivel sistema es global para todos los usuarios. Además al usar el de nivel de usuario evitará que tengas que escribir la contraseña de administrador cada vez que quieras hacer una modificación a los archivos dentro de la carpeta raíz.

La ruta de la carpeta raíz a nivel de sistema es la siguiente:

/Library/WebServer/Documents/

Mientras que la carpeta raíz a nivel de usuario puede ser la que tu quieras, pero tradicionalmente en OS X se usa la siguiente

/Users/tu usuario/Sites 

Cómo configurar la carpeta raíz a nivel de usuario

La otra carpeta raíz que no se encuentra de manera predeterminada es la carpeta ~/Sites dentro de la carpeta de usuario. Es necesario crear una carpeta llamada Sites en la raíz de tu carpeta de usuario, en mi caso mi isiario es «carlos» por lo tanto la raíz de mi carpeta de usuario es «/Users/carlos/«. Si estás actualizando a OS X Mavericks desde una versión anterior de OS X, se preserva la carpeta Sites, pero se elimina la configuración que hacía que fuera la carpeta raíz. No te preocupes, sigue estos pasos para configurar Sites como la carpeta raíz (DocumentRoot). Para esto se necesita añadir un archivo con el nombre carlos.confdonde carlos es el nombre de usuario de tu cuenta en OS X, en mi caso carlos, a continuación te digo como crearlo.

2 - Crear carpeta Sites en usuario

Primero verifica que no tengas un el archivo carlos.conf en la siguiente ruta con el comando:

cd /etc/apache2/users

ls

Si no hay un archivo llamado carlos.confcrealo, para eso vamos a usar un editor de texto desde la Terminal llamado nano, ejecuta el siguiente comando (recuerda reempazar «carlos» por tu nombre de usuario):

sudo nano carlos.conf

Agregar este código dentro del archivo recién creado, recuerda reempazar «carlos» por tu nombre de usuario.

<Directory "/Users/carlos/Sites/">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Después de pegar el código en nano presiona ctrl + o y luego Enter para guardar y luego ctrl + x para cerrar nano.

Ahora cambia los permisos al archivo con este comando (recuerda reempazar «carlos» por tu nombre de usuario):

sudo chmod 644 username.conf

Finalmente reinicia Apache para que los cambien tengan efecto, con este comando:

sudo apachectl restart

Ahora el contenido de «Sites» es accesible desde la URL: http://localhost/~carlos/

3. Configurar los .htaccess para que permitan sobreescribir

Por default Apache tiene desahibitada la posibilidad de usar nuestros .htaccess para sobre escribir las configuraciones por defecto, para corregir esto vamos a editar el archivo httpd.conf ubicado en: /etc/apache2/httpd.conf lo abrimos y buscamos la línea 217 que dice AllowOverride none y lo cambiamos por AllowOverride all

3 - Habilitar AllowOverride

Finalmente reinicia Apache para que los cambien tengan efecto, con este comando:

sudo apachectl restart

4. Habilitar PHP

OS X Mavericks viene con PHP 5.4.17 pero para que funcione debe ser activado editando el archivo httpd.conf.

sudo nano /etc/apache2/httpd.conf

Utiliza ctrl + w para buscar dentro de nano y la busca php este esto te llevará a la línea que contiene lo siguiente pero que está comentada con un # al inico de la línea, para descomentar simplemente elimina el # al inicio de la línea para que quede con la siguiente:

LoadModule php5_module libexec/apache2/libphp5.so

Para finalizar ctrl + o y luego Enter para guardar y luego ctrl + x para cerrar nano.

Reinicia Apache para que los cambien tengan efecto, con este comando:

sudo apachectl restart

Para ver y probar PHP, crea un archivo llamado phpinfo.php y colócalo en la carpeta Sites con el siguiente contenido, y luego míralo en el navegador.

<php phpinfo(); ?>

5. Instalar y configurar MySQL

MySQL es un componente que OS X ya no incluye de serie como antes, ahora es necesario descargarlo desde el sitio de MySQL (Sitio para descargar MySQL), en el sitio de descarga elige la versión llamada Mac OS X 10.7 (x86, 64-bit), DMG Archive esta versión funciona bien en OS X Mavericks.

Al descargar MySQL no tienes que registrarte, buscar al final de la página de descarga el enlace que dice: No thanks, just take me to the downloads para pasar directamente a la descarga sin registro.

Una vez descargado MySQL abre el .dmg y verás 3 componentes, instala los 3. Es posible que necesites ajustar las preferencias de seguridad y privacidad de OS X para permitir instalaciones de aplicaciones de terceros, en caso de que no te deje instalarlo ve a «Preferencias del sistema» -> «Seguridad y privacidad» y ahí marca la opción que dice «Permitir aplicación descargadas de:» -> «Cualquier sitio».

4 - Instalar MySQL en OS X Mavericks

Primero instala mysql-5.x.x…, luego MySQLStartupItem.pkg que permite iniciar MySQL cuando la Mac se inicia y el tercero es una preferencia del sistema que permite iniciar y/o detener MySQL.

Puedes iniciar el servidor MySQL desde las Preferencias del sistema o a través de la Terminal.

5 - Iniciar MySQL desde Preferencias del sistema

Comando para iniciar MySQL

sudo /usr/local/mysql/support-files/mysql.server start 

Comando para ver la versión de MySQL desde la Terminal:

/usr/local/mysql/bin/mysql -v

Después de la instalación, con el fin de utilizar los comandos de MySQL en la Terminal sin tener que escribir la ruta completa hacia los comandos. Vamos a agregar el directorio mysql a tu shell path, (paso opcional) esto se hace en el archivo «.bash_profile» que está en tu carpeta de usuario, si no tienes ese archivo sólo créalo con vi o nano con este comando:

cd ; nano .bash_profile

Y pega esta línea dentro del archivo:

export PATH="/usr/local/mysql/bin:$PATH"

Ahora ctrl + o y luego Enter para guardar y luego ctrl + x para cerrar nano.

La última cosa que hay que hacer aquí es para recargar la shell para que todo funcione, con el siguiente comando:

source ~/.bash_profile

Ahora prueba el con el comando:

mysql -v

Si todo salió bien te debe mostrar la versión de MySQL, ahora solamente presiona \\q para salir de MySQL.

Configurar la contraseña root de MySQL

Es importante que sepas que la contraseña del usuario root de MySQL no es la misma que se usa como admin en OS X, algunas personas la confunden, la contraseña para el usuario root es una contraseña que te permitirá gestionar MySQL.

Para asignar la contraseña al usuario root usa el siguiente comando (recuerda reemplazar aquí_va_tu_contraseña por la contraseña que quiere utilizar):

/usr/local/mysql/bin/mysqladmin -u root password \'aquí_va_tu_contraseña\'

Usa comillas simples entre la contraseña

6. Instalar phpMyAdmin

Antes de instalar phpMyAdmin tal vez desees darle un vistazo a Sequel Pro es una apliación gratuita que te permite gestionar MySQL en una interfaz amigable y fácil de usar, últimamente la he usado más que phpMyAdmin, página de descarga de Sequel Pro.

Para instalar phpMyAdmin primero debes ejecutar estos comando para corregir el «mysql 2002 socket error«:

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Descarga phpMyAdmin, en un archivo .zip y descomprímelo y nombra a la carpeta phpmyadminluego mueve esa carpeta y colócala dentro de la carpeta Sites (la carpeta raíz).

Ahora vamos a crear la carpeta config con este comando:

mkdir ~/Sites/phpmyadmin/config

Cambia los permisos de la carpeta con este comando:

chmod o+w ~/Sites/phpmyadmin/config

Ejecuta la instalación de phpMyAdmin desde el navegador ve a la dirección: http://localhost/~carlos/phpmyadmin/setup/ (recuerda reemplzar carlos con tu nombre de usuario) o http://localhost/phpmyadmin/setup/

Es necesario crear una nueva conexión de servidor MySQL para localhost, haz clic en New server.

6 - crear servidor en phpMyAdmin

Cambia a la pestaña Authentication y configura el usuario cómo root la contraseña.

7 - configurar phpMyAdmin

Añade el nombre de usuario «root» (tal vez ya estaba rellenado, añade la contraseña que configuraste anteriormente para el usuario root de al instalar MySQL, haz clic en Save y volverás a la pantalla anterior.

8 - guardar la configuración de phpMyAdmin

Asegúrate de hacer clic en Save, esto creará un archivo llamado config.inc.php en la carpeta config dentro de la carpeta de phpmyadmin, ahora tienes que mover este archivo a la raíz de phpmyadmin y después eliminar el directorio config ahora vacío.

Ahora ya puedes acceder a phpMyAdmin desde tu navegador: http://localhost/~carlos/phpmyadmin/ (recuerda reemplzar carlos con tu nombre de usuario) o http://localhost/phpmyadmin/

7. Configurar permisos

Para ejecutar un sitio web sin problemas de permisos, es mejor establecer la raíz Web y su contenido para ser «escribible» por todos, ya que es un desarrollo local, esto no debería ser un problema de seguridad.

Digamos que tienes un sitio en la carpeta Sites en el siguiente lugar ~/Sites/sitio-de-prueba para hacerlo «escribible» ejecuta el siguiente comando:

sudo chmod -R a+w ~/Sites/sitio-de-prueba

Si estás preocupado por la seguridad entonces en vez de la carpeta sea «escribible» por todo el mundo, ajusta el usuario para que sea Apache _www pero cuando se trabaja con archivos deberás autenticarte como administrador ya que «no» eres el propietario, el comando para hacer que sean escribibles por Apache es el siguiente:

sudo chown -R _www ~/Sites/sitio-de-prueba

Esto establecerá el contenido de forma recursiva a ser propiedad del usuario de Apache.

Si tuvieras la página web almacenada en el directorio raíz a nivel del sistema en /Library/WebServer/Documents/sitio-de-prueba entonces tendrías que usar este comando éste:

sudo chown -R _www /Library/WebServer/Documents/sitio-de-prueba

Así que creo que vale la pena la creación de la carpeta raíz a nivel de usuario ya que hay menos problemas de autenticación.


¡Eso es todo! Ahora tienes tu AMP (Apache, MySQL y PHP) nativo que se ejecuta sobre el nuevo sistema OS X Mavericks.

Ahora solamente queda pendiente para otra guía sobre cómo configurar Virtual Hosts en Apache sobre OS X Mavericks y Mountain Lion (aunque también puedes usar una utilidad llamada VirtualHostX que te permite configurar los Virtual Hosts en Apache de manera visual) y no te puedes perder estas otras guías:

Escríbe un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

48 comentarios en “Cómo instalar y configurar Apache, PHP, MySQL y phpMyAdmin en OS X 10.9 Mavericks”

  1. Hola, gracias por el tuto. Te comento que tuve un problema, seguí todos los pasos pero cuando voy a localhost/~usuario/ me salta un error (Forbidden, you don’t have permission to access /~usuario/ on this server.

    El localhost funciona, si elimino el usuario.conf de Sites, no funciona.

    Si ingreso a Library/WebServer/Documents/ejemplo.php funciona de diez, pero cada vez que guardo algo me pide autenticación, sabes que puede ser que este mal?

    Muchas gracias, un saludo.

    Pablo.

  2. Carlos, muchas gracias por el tutorial muy completo. Hice todo tal cual dijiste pero cuando quiero conectar a la base de datos me esta tirando este error «Warning: mysql_connect(): No such file or directory in», por lo que pude averiguar parece un problema con el archivo socket (mysql.sock) pero no pude solucionarlo.
    Tienes alguna idea de como puedo arreglarlo?

    Muchas gracias!

  3. he tecleado en Terminal
    wargawain:~marco$ cd /etc/apache2/users
    #respuesta
    wargawain:users marco$
    #escribo
    ls
    #respuesta
    Guest.conf carlos.conf.save marco.conf
    wargawain:users marco$

    no sé por qué me aparece users, ni carlos.conf (eso puede ser un error de no cambiar los nombres al copiar el texto, no se si influye en mis problemas o no, pero me gustaría saber como quitarlo).
    Lamento agobiar con tantas preguntas pero quiero aprender, explicáis las cosas bien y en castellano. ;-)

  4. Para los desarrolladores web que ya trabajábamos en local bajo el sistema operativo de Apple, con Apache, PHP, MySQL y phpMyAdmin instalados, la nueva actualización del Sistema Operativo a OSX 10.9 Mavericks viene con el PHP desactivado por defecto…

    en la siguiente entrada de nuestro blog podréis encontrar una manera inmediata de activarlo:

    http://exitia.com/es/blog/reactivar-php-con-apache-desde-la-actualizacion-de-apple-osx-mavericks

    Saludos!!

  5. Hola manes en primera instancia logre visualizar el «it works» de apache pero cuando empese a crear el username.conf ( claro con mi usuario ) luego ya no me levanta el localhost. y nada que reinicio el apache. alguna solucion ?

  6. Hola Gracias Por la informacion, pregunta:

    Como hago para cambiar la version del PHP?
    Como puedo cambiar la carpeta para que no sea en USER/Sites sino por ejemplo en Dropbox para tener la info actualizada en mis dos MAC, es posible esto?

    Atento a sus comentarios.

  7. En la parte de crear el archivo phpinfo y guardarlo en Sites, accedo al navegador y lo encuentro allí pero porque al darle clic al archivo no puedo visualizar toda la info de phpinfo, solo se visualiza una pagina en blanco

  8. Buen buen tutorial me ayudo para habilitar el php en mi Mavericks ya que no uso Mysql podrias ayudarme a instalar Postgresql ya que no eh podido configurarlo con mi php

    Saludos!!

  9. Hola Leopoldo!

    Muchas gracias por compartir con nosotros tus conocimientos, se agradece que alguien te lo haga fácil.

    Solo una cosa, he seguido todos los pasos que indicas y al comprobar en el localhost/~usuario/ me da error, me dice que no fue encontrado en el servidor. He probado a cambiar el usuario por el de mi Mac, pero tampoco.

    En los comentarios vi a gente que le pasaba lo mismo y que recomendabas este post https://techtastico.com/post/como-configurar-virtual-hosts-en-apache-sobre-os-x-mavericks-y-mountain-lion/
    he probado y Apache me responde con «Permission denied». Como puedo configurar el Document Root?

    Muchas gracias, Noelia

  10. hola a los que no les funciona el paso 2 yo también tuve ese problema, puede solo por casualidad ser que hicieron todo pero como yo no crearon la carpeta «Sites», cuando la cree en ese momento ya me ejecuto bien la ruta de usuario

  11. Excelente tutorial. Probé MAMP y PHP no arrancaba ni a tiros, y y además siempre aparecía la invitación a pasarse a la versión pro. O sea, que termina uno pagando por lo que es gratis. Al final la mejor solución era hacerlo manualmente paso a paso, y tu tutorial es perfecto.

  12. Genial! Por fin lo he conseguido…. a medias! ;)

    Todo me ha ido de perillas porque quería utilizar los recursos de macos y no de mamp.
    El problema es que no puedo utilizar los .htaccess. Al ponerlos (he probado con varios que siempre me han funcionado) me lanza el

    403 Forbidden You don’t have permission to access /~miusuario/micarpeta/ on this server.

    Que puede ser? he seguido paso a paso todo el tuto y me he fijado especialmente en donde hablas de los htaccess pero sigo sin dar con ello.

    En fin si me puedes orientar genial!

  13. Hola, muy buen aporte, tengo una duda.
    Al habilitar php, y ver si funciona la dirección seria , o estoy mal?, espero puedas responder. Por lo otro Muchas Gracias, por el post.

  14. Hola,

    Gracias por tu excelente tutorial. Tengo un problema que hace que me atasque en el paso agregar el directorio mysql a tu shell path, y que además me provoca otro tipo de problemas. Al recargar la shell con source ~/.bash_profile y probar con el comando mysql -v me devuelve el siguiente mensaje:

    connect to server at ‘localhost’ failed
    error: ‘Access denied for user ‘root’@’localhost’ (using password: NO)’

    Yo sí tengo un password en phpmyAdmin para el usuario root. He probado ya de todo, y no consigo nada. me sigue devolviendo el mismo error. ¿Podrías ayudarme? Gracias de antemano! Un saludo!

    • Hola Eva.
      Prueba a poner 127.0.0.1 en vez de localhost en el archivo de configuración de mysql.
      Si, lo sé, es lo mismo.. pero no. Yo no podía entrar en myAdmin por eso :/
      Fue cambiarlo y listo.

      • Gracias, Jorge. He intentado lo que me dices de poner 127.0.0.1 y nada. La verdad es que debo de tener algo mal en la asignación de users o de privilegios, pero no sé qué es y ya le he dado mil vueltas, tanto en phpMyAdmin como en la Terminal del Mac. Sí puedo entrar sin problemas a MyAdmin. Pero la Terminal no me reconoce como usuario autorizado para algunos comandos. La terminal, me arroja este error que puse arriba, y nanai. Que no consigo avanzar… En fin, paciencia…

  15. Seria Muy Bueno que hicieras un tutorial de instalcion y configuracion de sequel pro estuve revisandolo y es MUY BUENO pero no sabria como configurarlo ni instarlo para conectarlo con mis formularios u otras cosas

  16. Hola, no tengo mucha idea ni porqué, pero si al crear el carlos.conf, (cambiar carlos por el usuario de cada uno) en la segunda linea en vez de: Options Indexes MultiViews, pongo: Options FollowSymLinks Indexes MultiViews la cosa me va mejor. Hay que reiniciar el apache con el sudo apachectl restart para apreciar los cambios.

    el texto quedaria asín:

    Options FollowSymLinks Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all

  17. estimado.
    gracias por el manual pero tengo un problema.
    hago un log a mysql desde la terminal con mi clave «1234» y me loguea, y configuro tal cual describiste el phpmyadmin con la misma clave 1234 , y no tengo acceso desde phpmyadmin

    > mysql -u root -p
    > 1234

    phpmyadmin -> user = root y password = 1234

    que sera?

  18. Muchas gracias por este tutorial ha sido muy útil.
    Al verificar el config con mi nombre de usuario, aparece: miusuario.conf… entonces como sigo los pasos que tu indicas?

    Muchas gracias