¿Cómo cambio el directorio raíz de un servidor apache? [cerrado]

241

¿Alguien sabe cómo cambiar la raíz del documento del servidor Apache? Básicamente quiero localhostvenir del /users/spencer/projectsdirectorio en lugar de /var/www.

Editar

Terminé descubriéndolo. Algunos sugirieron que cambie el httpd.confarchivo, pero terminamos encontrar un archivo en /etc/apache2/sites-available/defaulty cambiaron el directorio raíz de /var/wwwa /home/myusername/projects_foldery que trabajaban.

Spencer Cooley
fuente
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte los temas sobre los que puedo preguntar aquí en el Centro de ayuda. Quizás Server Fault o Webmaster Stack Exchange sería un mejor lugar para preguntar.
jww

Respuestas:

209

Necesita cambiar la DocumentRootconfiguración en su httpd.confarchivo. Lo más probable es que esté debajo de algo como/etc/apache2/conf/httpd.conf

Use su editor favorito (recomiendo Vim ) y busque el DocumentRooty cámbielo a /users/spencer/projects. También busque un poco más abajo para una configuración que se vea así:

<Directory "/var/www">

También querrá cambiar lo que está entre comillas a su nuevo directorio. Esto le da acceso a Apache para leer desde ese directorio cuando un usuario realiza una solicitud que lo llama.

Ahora reinicie su servicio apache ( httpd -k restart) y debería estar listo.

Editar : los archivos de configuración del sitio Apache2 ahora generalmente se guardan en /etc/apache2/sites-available/ (Debian, Ubuntu, etc.).

RDL
fuente
66
Abrí /etc/apache2/httpd.conf, pero el archivo estaba en blanco. Lo estoy abriendo con gedit.
Spencer Cooley
3
El archivo puede estar en /etc/httpd/conf/httpd.conf, dependiendo de su sabor de Linux.
Chris Henry
3
el archivo httpd.conf está vacío pero encontré un archivo en etc / apache2 / sites-available / default y cambié el directorio raíz allí. Probablemente debería haber mencionado que esto no está en un servidor real. Estoy creando un entorno de desarrollo local. No estoy seguro si eso hace la diferencia
Spencer Cooley
3
¿Sería posible habilitar tanto / var / www como / home / myusername / projects_folder al mismo tiempo? ¿Y cómo debo configurar? Gracias.
Paul Lo
3
La "respuesta" es realmente obsoleta. La respuesta correcta según los documentos de Ubuntu 18.x es Cambiar el directorio raíz de Apache o mover el proyecto a / var / www / html. Para cambiar el directorio raíz de Apache, ejecute: cd / etc / apache2 / sites-available. Luego abra el archivo 000-default.conf usando el comando: nano 000-default.conf. Edite la opción DocumentRoot: DocumentRoot / path / to / my / project. (ver askubuntu.com/questions/337874/… )
sea26.2
263

Tenga en cuenta que esto solo se aplica a Ubuntu 14.04 LTS y versiones más recientes.

En mi Ubuntu 14.04 LTS, la raíz del documento estaba configurada en /var/www/html. Se configuró en el siguiente archivo:

/etc/apache2/sites-available/000-default.conf

Así que solo haz un

sudo nano /etc/apache2/sites-available/000-default.conf

y cambie la siguiente línea a lo que desea:

DocumentRoot /var/www/html

También hacer un

sudo nano /etc/apache2/apache2.conf

y encuentra esto

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

y cambio /var/www/html a tu directorio preferido

y guárdalo.

Después de guardar los cambios, simplemente reinicie el servidor web apache2 y habrá terminado :)

sudo service apache2 restart


Si prefiere un editor de texto gráfico, puede reemplazarlo sudo nanopor a gksu gedit.

katze_sonne
fuente
1
@Paul Lo: No he probado esto en Ubuntu 13.10, solo en Ubuntu 14.04; Como estoy bastante seguro de que la primera vez que configuré Apache (que estaba en Ubuntu 12.04), no había tal directorio. Entonces sí, supongo que esto solo está disponible en Ubuntu 14.04 LTS y versiones posteriores. Sin embargo, puedes echar un vistazo a las otras respuestas. Los votos positivos sugieren que ayudaron a otras personas, tal vez también trabajen con Ubuntu 13.10.
mozzbozz
1
Sin embargo gracias por preguntar, que acaba de editar esta información en la respuesta de manera que nadie más entra en la trampa de tratar esto con versiones anteriores de Ubuntu (y)
mozzbozz
3
@mozzbozzm, tienes razón. Solo 14.04. Realmente una elección extraña, ahora de repente tiene var/www/htmlcomo raíz predeterminada. ¿Están realmente tratando de perder el tiempo de las personas? :)
davidkonrad
44
Recibo un error prohibido You don't have permission to access / on this server.cuando llego a localhost: 80 en mi navegador. ¿Necesito cambiar el puerto?
Costa
3
@Costa Resolví el problema agregando <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> /etc/apache2/apache2.conf
Keenan Gebze
42

Tuve que editar /etc/apache2/sites-available/default. Las líneas son las mismas que menciona RDL.

Mella
fuente
3
Una edición sugerida por @pabloab tenía esto que decir: "Apache 2.4 y superior requiere .confal final, y por defecto tiene un 000-prefijo". El resultado es /etc/apache2/sites-available/000-default.conf. No he probado esto, pero puede ayudar a algunas personas.
Nick
^^ esto lo arregló. ¿Dónde está documentado que requiero .conf al final de los archivos disponibles en mi sitio? Tengo unos 20 hosts virtuales que fueron deshabilitados y fuera de línea después de una actualización, y después de un par de horas, encontrar esto y cambiar el nombre de los archivos disponibles en mi sitio me lo arregló.
James Perih
23

Esto es para Ubunutu 14.04:

En el archivo /etc/apache2/apache2.confdebe ser como se muestra a continuación sin el nombre del directorio:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

y en el archivo /etc/apache2/sites-available/000-default.confdebe incluir el nombre del directorio personalizado, es decir, www:

DocumentRoot /home/username/www

Si no es lo anterior, le dará un error al cargar el servidor: Forbidden You don't have permission to access / on this server

androsfat
fuente
Gracias amigo :) Esto funcionó para mí en Ubuntu 16.04
Magesh Kumaar
2
También funcionó en Debian 8
androsfat
15

La forma correcta de cambiar el directorio o ejecutar desde múltiples directorios bajo un puerto diferente para apache2 es la siguiente:

Para apache2, los archivos de configuración se encuentran debajo /etc/apache2y no usan un solo archivo de configuración como en versiones anteriores, sino que se dividen en archivos de configuración más pequeños, /etc/apache2/apache2.confsiendo el archivo de configuración principal. Para servir archivos de un directorio diferente, necesitamos un nuevo archivo virtualhost conf. Los archivos conf de virtualhost se encuentran en /etc/apache2/sites-available(no edite archivos dentro de sitios habilitados). El valor por defecto de Apache instalación utiliza el archivo conf host virtual 000-default.conf.

Comience creando un nuevo archivo virtualhost copiando el archivo virtualhost predeterminado utilizado por la instalación predeterminada de apache (el que se ejecuta en localhost en el puerto 80). Cambie al directorio /etc/apache2/sites-availabley luego haga una copia sudo cp 000-default.conf example.com.conf, ahora edite el archivo por sudo gedit example.com.conf:

<VirtualHost *:80>
    ServerAdmin example@localhost
    DocumentRoot /home/ubuntu/example.com    
</VirtualHost>

He eliminado las líneas no importantes del archivo anterior por brevedad. Aquí DocumentRootestá la ruta al directorio desde el que se van a servir los archivos del sitio web como index.html.

Cree el directorio desde el que desea servir los archivos, por ejemplo; mkdir example.comy cambie el propietario y el grupo predeterminado del directorio, por ejemplo, si su nombre de usuario conectado es ubuntucambiar los permisos como sudo chown ubuntu:www-data example.com. Esto otorga acceso completo al usuario ubuntuy permite el acceso de lectura y ejecución al grupo www-data.

Ahora edite el archivo apache conf /etc/apache2/apache2.confemitiendo un comando sudo gedit apache2.confy encuentre la línea <Directory /var/www/>y debajo de la etiqueta de cierre </Directory>, agregue lo siguiente a continuación:

<Directory /home/ubuntu/example.com>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

Ahora hay dos comandos para habilitar o deshabilitar los archivos de configuración de virtualhost, que son a2ensitey a2dissiterespectivamente. Ahora, dado que nuestro example.com.confarchivo usa el mismo puerto ( 80) utilizado por el archivo de configuración predeterminado ( 000-default.conf), tenemos que deshabilitar el archivo de configuración predeterminado emitiendo el comandosudo a2dissite 000-default.conf y habilitar nuestro archivo de conf virtualhostsudo a2ensite example.com.conf

Ahora reinicie o vuelva a cargar el servidor con el comando sudo service apache2 restart. Ahora apache sirve archivos del directorio example.comen localhostel puerto predeterminado de80 .

los a2ensite comando básicamente crea un enlace simbólico al archivo conf en el directorio habilitado para el sitio

No edite archivos dentro de un directorio habilitado para sitios (o habilitado para *), como se señala en esta respuesta https://stackoverflow.com/a/41568701/2532763

Para cambiar el puerto y ejecutar desde múltiples directorios en diferentes puertos:

Ahora, si necesita ejecutar el directorio en un puerto diferente, cambie el número de puerto de 80 a 8080 editando el archivo virtualhost como:

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>

y editando /etc/apache2/ports.confy agregando Listen 8080justo debajo de la líneaListen 80

Ahora podemos habilitar el archivo conf virtualhost predeterminado que se ejecuta en el puerto 80 ya que el directorio example.com usa el puerto 8080, como sudo a2ensite 000-default.conf

Ahora reinicie o vuelva a cargar el servidor con el comando sudo service apache2 restart. Ahora se puede acceder a ambos directorios desde localhostylocalhost:8080

lordvcs
fuente
4

Estaba trabajando con LAMP y para cambiar la carpeta raíz del documento, he editado el archivo predeterminado que está en la carpeta / etc / apache2 / sites-available . Si quieres hacer lo mismo solo edita de la siguiente manera

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Después de esto, si escribe localhost en el navegador, cargará el contenido * / home / username / new_root_folder * .

Shashidhara
fuente
4

Si no pudiste encontrar http.conf y seguiste el camino de Nick.

Reinicie Apache usando sudo service apache2 restart

Nitina
fuente
4

Para apache2 en Linux Mint 17.3 Cinnamon 64-bit, funciona lo siguiente:

  1. En /etc/apache2/sites-available/abrir el 000-default.confarchivo y cambiar la raíz de documentos a la ruta absoluta del directorio.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. En /etc/apache2/abierto httpd.conf, y agregue una <Directory>etiqueta que haga referencia a su directorio y que contenga exactamente la misma configuración que la etiqueta var/www.

    sudo vim /etc/apache2/apache2.conf

    En mi máquina se veía así:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Nota: En el primer paso, es probable que desee cambiar la raíz del documento en el default-ssl.confarchivo también para fines SSL. Pero, por lo que puedo decir, esto no es necesario para ejecutar un entorno de desarrollo general.

stackato
fuente
2

En la versión 2.4.18 de apache (Ubuntu).

1. vaya a este archivo /etc/apache2/apache2.conf busque <Directory /var/www/>y reemplace su directorio ......

2. vaya a /etc/apache2/sites-available/000-default.conf busque DocumentRoot /var/www/htmly reemplace su DocumentRoot ...

habibun
fuente
He hecho las dos cosas. Todavía muestra Prohibido No tiene permiso para acceder / en este servidor.
Programador
compruebe el permiso de su carpeta si no está en su directorio de inicio.
Habibun
2

En caso de que estés usando Ubuntu 16.04. Actualice 000-default.conf en el directorio / etc / apache2 / sites-available.

aquí -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder

Shashank Saxena
fuente
1

Hice /var/wwwque fuera un enlace suave al directorio requerido (p. Ej./users/username/projects ) y las cosas estaban bien después de eso.

Sin embargo, naturalmente, el original /var/wwwdebe eliminarse o cambiarse de nombre.

maan81
fuente
0

Si alguien ha instalado LAMPen la /optcarpeta, entonces el/etc/apache2 no es lo que está buscando.

Busque el httpd.confarchivo en/opt/lampp/etc/httpd.conf .

Cambie la línea en esta carpeta y guárdela desde la terminal.

Yogesh Gupta
fuente
0

En RedHat 7.0: /etc/httpd/conf/httpd.conf

ehacinom
fuente
0

Si está utilizando Linux Mint (opinión personal, de todas las distribuciones, esta me está haciendo feliz), siga esto:

1- Vaya a / etc / apache2 / sites-available y edite 000-default.conf 2- Busque DocumentRoot, por ejemplo DocumentRoot / var / www / html que cambie a su directorio respectivo; 3- Abra la terminal y escriba: sudo service apache2 restart

EDITADO ----- Me doy cuenta de que en Mint vas a /etc/apache2/apache.conf, reemplazas / var / www en tu ruta respectiva, que reinicias el servidor (paso 3).

Eso es.

Marcelo Agimóvel
fuente
0

Se aplica a Ubuntu 14.04 y versiones posteriores. Asegúrese de hacer una copia de seguridad de los siguientes archivos antes de realizar cualquier cambio.

1.Abra /etc/apache2/apache2.confy busque la <Directory /var/www/>directiva y reemplace la ruta con/home/<USERNAME>/public_html . Puedes usar * en lugar de.

2.Abra /etc/apache2/sites-available/000-default.confy reemplace la DocumentRootpropiedad de valor de /var/www/htmla /home/<USERNAME>/public_html. También <Directory /var/www/html>a<Directory /home/<USERNAME>/public_html .

3.Abierto /etc/mods-available/php7.1.conf. Encuentra y comenta el siguiente código

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

No encienda php_admin_flag engine OFF bandera ya que la razón se menciona en el comentario arriba del código de la Directiva. También la versión php puede ser 5.0, 7.0 o cualquier cosa que haya instalado.

Crear public_htmldirectorio en home/<USERNAME>.

Reinicie el servicio apache ejecutando el comando sudo service apache2 restart.

Pruebe ejecutando un script de muestra en el servidor.

usuario1184294
fuente
-3

Si está (como yo) encontrando esta publicación a través de Google:

Lo encontré en /etc/apache2/sites-available/000-default.conf

Borkee
fuente
44
describa su respuesta detallada con código incrustado en lugar de apuntar a un archivo externo.
Christian MICHON