A la hora de desarrollar aplicaciones web, u otras basadas en apache, te puedes encontrar con problemas. Esta vez te cuento como solucionar error 403 forbidden en apache y virtualhost.
Este método te va a ser últil en Linux, pues se basa en revisar la configuración del servicio y también en el sistema de archivos y permisos. No descarto que en alguna actualización sea necesario también en WSL.
Cómo arreglar error 403 forbidden virtualhost apache
Tras dejar configurado o puesto en marcha apache, has intentado abrir la web que tengas en la carpeta concreta y te ha dado error 403. Esto no suele ser difícil de solucionar, pero tendrás que revisar varios puntos, ya que generalmente es por algo que no está bien configurado (o falta), o por que el usuario de apache no puede ejecutar los archivos.
Lo primero, revisar que hayas creado y habilitado el sitio en apache. Para eso vete a la carpeta de las configuraciones de apache:
cd /etc/apache2/sites-available
Una vez ahí puedes hacer ls -l y ver si tienes el archivo de configuración del sitio que intentas revisar. Deberías tener algo como 000-default.conf y vichaunter.conf que será tu sitio configurado. Por si no lo tienes te dejo un ejemplo de cómo debería parecer este archivo:
sudo nano vichaunter.conf
y dentro poner algo así:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/vichaunter ServerName vichaunter.local ServerAlias www.vichaunter.local ErrorLog ${APACHE_LOG_DIR}/vichaunter-error.log CustomLog ${APACHE_LOG_DIR}/vichaunter-access.log combined <Directory /var/www/vichaunter/> Options +FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
Cambia la ruta de vichaunter por la carpeta donde tengas tu proyecto.
Cómo habilitar el sitio en apache
Vale, ya lo tenemos creado, pero no bastará con que reinicies el servidor de apache, pues la configuración solo está creada pero no habilitada. Para eso tienes que ejecutar este comando:
sudo a2ensite vichaunter.conf
Ahora sí que debes reiniciar el servidor de apache con
sudo service apache2 restart
Arreglar que apache no tenga permiso de ejecución y salga forbidden
Si después de esto aún te da problemas, aún queda una cosa por hacer antes de profundizar.
Suele ser porque los archivos de la carpeta donde está la web o aplicación no son ejecutables, y podrás solucionarlo con un comando sencillo:
sudo chmod +x /var/www/vichaunter
Si aun así no te funciona puedes ir más lejos y ejecutar:
sudo chmod -R +xr /var/www/vichaunter
Aunque no suele ser necesario, y como es para desarrollo no habría ningún problema mientras sea en local.
Revisar los permisos de los archivos
Por otro lado también conviene que le eches un ojo a los permisos de los archivos. Muchas veces los creamos con un usuario en concreto y el usuario de apache no tiene acceso de lectura.
Puedes ejecutar este otro comando para arreglarlo:
sudo chown -R www-data.www-data /var/www/vichaunter
Por supuesto en todos los comandos de arriba debes cambiar /var/www/vichaunter por la ruta a la carpeta del sitio que estés habilitando.
También recuerda que para poder acceder desde tu equipo local con la ruta vichaunter.local debes habilitarlo en el archivo /etc/hosts. Edítalo y añade esta línea al final:
sudo nano /etc/hosts 127.0.0.1 vichaunter.local
Así con todas las urls que quieras que se resuelvan desde el navegador contra tu servidor local. No es necesario reiniciar ni nada, pero es posible que tengas que poner http:// en algunos navegadores para que no te salga el buscador.
Si aun así estás teniendo problemas con este u otro error dímelo y te echo un cable en los comentarios. Recuerda reiniciar apache o incluso el equipo si se resiste tras configurar.
¿Has podido resolverlo? ¿Qué versión de linux usas? Comenta y comparte.
Ver comentarios (7)
Amigo, que gran aporte, solucionaste mis errores, eres un Dios
A mandar xD
Y esta fue la conf que implemente de acuerdo al tutorial
ServerAdmin webmaster@localhost
DocumentRoot /home/ubuntu/cursophp
ServerName cursophp.local
ServerAlias http://www.cursophp.local
ErrorLog ${APACHE_LOG_DIR}/cursophp-error.log
CustomLog ${APACHE_LOG_DIR}/cursophp-access.log combined
Options +FollowSymLinks
AllowOverride
All Order allow,deny
allow from all
Al habilitar esta conf no dejaba recargar el apache, con la configuracion por default si activo las opciones del Directoru como en este archivo, igualmente no me permite recargar apache, gracias por la atencion, saludos
Te recomiendo que mejor dejes el archivo 000-default sin modificar.
Luego en los demás archivos ya pongas todas las configuraciones para cada dominio, por ejemplo cursophp.local.conf (en la carpeta sites available):
Y por último
sudo a2ensite cursophp.local.conf
Y reinicias el servidor de apache.
Hola VicHaunter:
esta es la configuracion del archivo 000-default,conf
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName cursophp.local
ServerAlias http://www.cursophp.local
ServerAdmin webmaster@localhost
DocumentRoot /home/ubuntu/cursophp
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf"
# AllowOverride All
# Order allow,deny
# Deprecated
# Allow from all
# Deprecated
# --New way of doing it Required all granted
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Hola, Buenas noches VicHaunter, tengo el mismo problema con Apache, he seguido el tutorial al pie de la letra y el problema se ha hecho mas grande ya que me no me permite acceder de ninguna forma al servidor, quiero realizar un proyecto e instale LAMP para probar en una maquina local, cuando termine de instalar todos los componentes me aparecia la pagina de inicio de apache y al verificar el php tambien me confirmaba que estaba activo, pero hasta ahi, al habilitar la conf de la carpeta donde tengo el proyecto dejo de enviar el forbidden y me indico que no podia iniciar apache, lo deshabilite con a2disite y ya me aparece nuevamente el forbidden, ya es la segunda vez que instalo el LAMP y caigo en este error, me podras apoyar? el sistema es Ubuntu 16.04(xenial) y lo tengo en una maquina virtual, saludos.
Pégame la configuración de tu sitio de Apache, la de la carpeta sites-available. Generalmente no necesitas reinstalar, será tema de configuración o permisos