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:
- Habilitar Apache
- Configurar el DocumentRoot en Apache
- Configurar los .htaccess para que permitan sobreescribir
- Habilitar PHP
- Instalar y configurar MySQL
- Instalar phpMyAdmin
- 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!.
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.conf
donde carlos es el nombre de usuario de tu cuenta en OS X, en mi caso carlos, a continuación te digo como crearlo.
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.conf
crealo, 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
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».
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.
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 phpmyadmin
luego 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.
Cambia a la pestaña Authentication y configura el usuario cómo root la contraseña.
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.
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:
Excelente tutorial, ahora solo me queda hacer pruebas para intentar instalar Nginx, y MariaDB.
Muchas gracias,
Dani.
De nada
Muchas Gracias , excelente tutorial
Muy bien explicado todo, pese a que soy relativamente nuevo en OS-X, y un completo novato en php y mysql, he conseguido poner todo en marcha, muchas gracias por el aporte, un saludo…
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.
Ok, a mi me dio ese error en otra Mac que configuré, pero me di cuenta que no estaba poniendo la ruta correctamente, verifica eso, que la ruta del DocumentRoot sea correcta, es decir, una carpeta que exista, pero puedes seguir este tutorial para configurar mejor los virtual hosts: https://techtastico.com/post/como-configurar-virtual-hosts-en-apache-sobre-os-x-mavericks-y-mountain-lion/
Siii funciona, la ruta estaba mal.
Ahora si me quedo perfecto, muchas gracias.
Saludos.
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!
Verifica que MySQL esté corriendo
He seguido todos los pasos con cuidado y, de repente, me da error si intento acceder a localhost. Soy nuevo en esto, agradecería ayuda explicada con sencillez. Gracias
Hola, entonces en lugar de acceder a localhost accede a esta dirección http://localhost/~usuario/ reemplaza usuario por tu nombre de usuario en tu Mac.
Después si quieres configurar mejor tus URL, con virtual host, sigue este tutorial te va a ayudar a entenderlo mejor: https://techtastico.com/post/como-configurar-virtual-hosts-en-apache-sobre-os-x-mavericks-y-mountain-lion/
Supongo que la respuesta es para mi, ya he probado con htttp://localhost/~marco y nada. Mañana miraré tu tutorial de virtual hosts pero creo que mi problema viene de algo que he hecho mal antes pero como soy nuevo y estoy haciendo esto porque el programador de mi hermano le ha dejado colgado y yo soy su única (aunque imperfecta) opción. La idea es montar un servidor en mi iMac con php para probar los cambios en la web de la empresa que está en PHP (que no conozco pero que estoy estudiando, tampoco las modificaciones son tan difíciles) de modo que todo este probado antes de subirlo al servidor que tienen contratado. Se admiten sugerencias.
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. ;-)
Excelente tutorial, te felicito.
para que funcione el /localhost/~usuario/
deves poner la tecla «~» es alt + ñ
muchas gracias por esa pequeña nota me sacaste de un problema
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!!
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 ?
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.
Como modifico el archivo https.confi de la parte 3?
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
por que tiene que poner
Fíjate que le falta el signo de interogación primero
no me deja poner el código.
En el código php falta un signo de interrogación tras el primer signo ‘menor que’
Me gusta usar con MySQL en Mac OS X – herramienta gratuita de Valentina Studio, hace todo lo que necesito, y lo hace muy bien http://www.valentina-db.com/en/valentina-studio-overview
Puede instalar Valentina Studio (GRATIS) directamente desde Mac App Store: https://itunes.apple.com/us/app/valentina-studio/id604825918?ls=1&mt=12
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!!
Gracias por el tuto estaba como loco dando vueltas a porque no me iba la instalacion en local de wordpress con MAMP y ya por fin lo consegui
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
Recomiendo Valentina Studio, que me parece ser, con mucho, el mejor MySQL-manager libre para OSX, échale un vistazo si no has probado todavía: http://www.valentina-db.com/valentina-studio-overvie
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
Curiosamente la carpeta «sites» aparece con el nombre «web» en el finder.
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.
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!
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.
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…
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
como puedo iniciar mysql como usuario root por que , me dice que tengo acceso denegado desde la terminal, sin en cambio desde sequel pro si puedo
no me deja poner el código.
En el código php del archivo phpinfo.php falta un signo de interrogación tras el primer signo ‘menor que’
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
Super… eres un maestro mano.
Un abrazo y sigue como hasta ahora. De lo mejor que he leído
excelente. muchas gracias desde CHILE
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?
Hola, seguí todos los pasos para cambiar el directorio raíz a /nombre_de_mi_usuario/Sites/ y cuando intento entrar por el navegador a: http://localhost/~nombre_de_mi_usuario/. Sale un mensaje de error:
Not Found
The requested URL /~nombre_de_mi_usuario/ was not found on this server.
Espero me puedan ayudar. Gracias.
Muy buen material, me puedes colaborar en algo y es saber donde puedo encontrar el php.ini para habilitar el php_pgsql.dll
Gracias
Excelente tutorial!!! de lujo
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