Habilitar Apache en Yosemite

Al actualizar a Mavericks – y después a Yosemite – se eliminó de las Preferencias del Sistema la opción Compartir Web.

Esa opción permitía tener sitios o aplicaciones web dentro de la carpeta «Sitios» o «Sites» que cada usuario del sistema tenía dentro de su directorio. Estos sitios o aplicaciones se podían compartir con los usuarios de una red local. Esta configuración también servía para utilizar una versión pre-instalada de Apache y PHP para desarrollar.

Aunque no exista esta preferencia en el sistema Apache sigue instalado y lo podemos utilizar.
Apache se encuentra en la carpeta /etc/apache2.

apache

Directorio de apache en yosemite

Antes de modificar la configuración de Apache – httpd.conf – es recomendable hacer un respaldo del archivo httpd.conf – lo guardé como httpd.conf.bak -.

$ sudo cp httpd.conf httpd.conf.bak
# => Teclear la contraseña de usuario cuando la pida el sistema

El copiar los archivos de configuración es útil en caso de que necesitemos regresar a la configuración inicial. Simplemente se elimina el archivo httpd.conf y se sustituye con una copia del respaldo.

Nota:
El archivo httpd.conf~previous es la configuración que tenía en Mavericks y que utilicé como referencia para volver a configurar el servidor web.

Una vez que tenemos respaldo de la configuración inicial hay que definir un directorio en donde van a estar los sitios o aplicaciones. Este directorio es probable que se le conozca o mencione como htdocs pero puede tener cualquier nombre y estar en cualquier ubicación del sistema de archivos.

Por comodidad – costumbre o hábito – hice una carpeta Sites en el directorio de mi usuario $HOME -.

# Ir al directorio del usuario 
$ cd $HOME
# Crear la carpeta
$ mkdir Sites
# Revisar que exista la carpeta
$ ls $HOME | grep Sites
Crear carpeta para proyectos web

Crear carpeta para proyectos web

Ya que tenemos el directorio podemos modificar el httpd.conf para que lo utilice como raíz para buscar los proyectos dentro de este directorio.

La primer modificación del archivo httpd.conf fue en la línea 52

# Línea 52
Listen 8888

Utilizo el puerto 8888 – puede ser cualquier puerto – porque utilizo pow en el puerto 80.

Para utilizar PHP revisamos si está instalado PHP en el sistema.

Revisar instalación de php en el sistema.

Revisar instalación de php en el sistema.

# Revisar si está instalado PHP
$ which php
# Si PHP está instalado vamos revisar la versión
$ php -v
# Obtener la información de PHP 
# es phpinfo() desde la terminal
$ php -i

Si PHP está instalado en el sistema podemos habilitar el módulo de php para que Apache lo pueda utilizar.

# Línea 169 / 170
LoadModule php5_module libexec/apache2/libphp5.so

Una vez hecho esto, es necesario especificar el directorio que va a utilizar Apache para a buscar los archivos que se manden llamar con el URL. En este caso es el directorio «Sites» dentro de la carpeta de mi usuario.

# Línea 238-239
DocumentRoot "/Users/{usuario}/Sites"

Este valor también va dentro de la directiva del directorio

# Línea 240-241
<Directory "/Users/{usuario}/Sites">

El nombre {usuario} se refiere al usuario que inició sesión en el equipo.
Al trabajar con los archivos se debería de visualizar el nombre de tu usuario sin las llaves.

Es posible que las líneas de configuración varíen si, en lugar de eliminar las líneas se comentan y se agregan las nuevas configuración y / o si se agregan comentarios.

Para iniciar / detener Apache desde la línea de comandos lo mandamos llamar con:

# Para iniciar apache 
$ sudo `which httpd` -k start

# Para detener apache 
$ sudo `which httpd` -k stop

Si queremos evitar que se muestre el siguiente mensaje al iniciar el servidor web:


AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using {usuario}.local. Set the ‘ServerName’ directive globally to suppress this message

Hay que asignarle un nombre al servidor.
En este caso le asigné el nombre localhost – con el puerto que definí anteriormente -.

# Línea 213 - 214
ServerName localhost:8888

Y desde el navegador podemos acceder al directorio principal con:

http://localhost/ – Si no se modificó el puerto de conexión (80)
http://localhost:8888/ – Utilizar el número de puerto que se utilizó (en lugar del 8888).

Para utilizar los proyectos que se encuentran en alguna carpeta dentro de Sites basta con agregar el nombre de la carpeta, nombre del archivo.

http://localhost/proyecto1/archivo.php

Actualización

Para iniciar, reiniciar, detener el servidor Apache.

# Iniciar el servidor Apache
$ sudo apachectl start  
# Detener el servidor Apache
# $ sudo apachectl stop
# Reiniciar el servidor Apache
# $ sudo apachectl restart

Estos comandos corresponden con la versión de apachectl de Apple.

Para visualizar la documentación desde la terminal

$ man apachectl

La versión de los comandos que había incluido utiliza `which httpd`
which ubica un programa en el PATH de un usuario, al utilizarlo dentro de backticks lo evalúa al momento de ejecución y se utiliza el resultado de ese comando como parámetro o parte de otro comando.

En este ejemplo utilizo echo para mostrar en la línea de comandos una cadena de texto, la cadena de texto – en este caso – va a ser el resultado del comando `which apachectl` o `which httpd`

$ echo `which httpd`

# $ echo `which apachectl`

1 comentario en “Habilitar Apache en Yosemite

  1. Jorge

    Hola! Realice todos estos paso y funcionó hasta cuando abrí en safari http://localhost/, con lo cual abrir «It Works!

    Pero este aqui que cuando quiero agregar mis carpetas, por ej. mis sitios están dentro de Users/miLogin/Web/ no hay caso de que abra nada. Por ejemplo escribo: http://localhost:8888/webmaster/index.html, me tira Error al abrir la página.

    Si busco la Info de la carpeta Sites esta renombrada a Web pero en las definiciones del archivo http.conf he puesto /Users/miLogin/Sites/ y no estoy seguro si el OS igualmente debería reconocerlo pues a pesar de llamarse Web, creo, interiormente lo denomina Sites.

    Agradezco toda aclaración que puedan comentarme… gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada.