¿Cómo cambio el directorio raíz de un servidor Apache? [cerrado]
¿Cómo puedo cambiar la raíz del documento del servidor Apache? Básicamente quiero localhost
venir del /users/spencer/projects
directorio en lugar de /var/www
.
Terminé averiguándolo. Algunos sugirieron que cambiara el httpd.conf
archivo, pero terminé encontrando un archivo /etc/apache2/sites-available/default
y cambié el directorio raíz de /var/www
a /home/myusername/projects_folder
y funcionó.
Tenga en cuenta que esto solo se aplica a Ubuntu 14.04 LTS (Trusty Tahr) 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
Entonces solo haz un
sudo nano /etc/apache2/sites-available/000-default.conf
y cambia la siguiente línea a lo que quieras:
DocumentRoot /var/www/html
También haz un
sudo nano /etc/apache2/apache2.conf
y encuentra esto:
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Y cambie /var/www/html
a su directorio preferido y guárdelo.
Después de guardar los cambios, simplemente reinicie el servidor web Apache 2 y listo :)
sudo service apache2 restart
Si prefiere un editor de texto gráfico, puede simplemente reemplazarlo sudo nano
con un archivo gksu gedit
.
Necesita cambiar la DocumentRoot
configuración en su httpd.conf
archivo. Lo más probable es que esté debajo de algo como /etc/apache2/conf/httpd.conf
.
Utilice su editor favorito (recomiendo Vim ), busque DocumentRoot
y cámbielo a /users/spencer/projects
. También mire un poco más abajo para ver una configuración similar a esta:
<Directory "/var/www">
También querrás cambiar lo que está entre comillas a tu nuevo directorio. Esto le da a Apache acceso 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 para comenzar.
Los archivos de configuración del sitio Apache 2 ahora normalmente se guardan en /etc/apache2/sites-available/
(Debian, Ubuntu, etc.).
Tuve que editar /etc/apache2/sites-available/default
. Las líneas son las mismas que menciona RDL .
Esto es para Ubuntu 14.04 (Trusty Tahr):
En el archivo /etc/apache2/apache2.conf
debería 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.conf
debe incluir el nombre del directorio personalizado, es decir, www :
DocumentRoot /home/username/www
Si no es como el anterior, te dará un error al cargar el servidor:
Prohibido No tienes permiso para acceder a/en este servidor
La forma correcta de cambiar de directorio o ejecutar desde varios directorios en un puerto diferente para Apache 2 es la siguiente:
Para Apache 2, los archivos de configuración se encuentran debajo /etc/apache2
y no utilizan un solo archivo de configuración como en versiones anteriores, sino que se dividen en archivos de configuración más pequeños, siendo /etc/apache2/apache2.conf
el archivo de configuración principal. Para servir archivos desde un directorio diferente, necesitamos un nuevo archivo de configuración de virtualhost. Los archivos de configuración de virtualhost se encuentran en /etc/apache2/sites-available
(no edite archivos dentro de sitios habilitados). La instalación predeterminada de Apache utiliza el archivo conf de virtualhost 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-available
y luego haga una copia sudo cp 000-default.conf example.com.conf
, ahora edite el archivo sudo gedit example.com.conf
para:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
He eliminado las líneas no importantes del archivo anterior por motivos de brevedad. Aquí DocumentRoot
está la ruta al directorio desde el cual se entregarán los archivos del sitio web, como por ejemplo index.html
.
Cree el directorio desde el cual desea servir los archivos, por ejemplo, mkdir example.com
y cambie el propietario y el grupo predeterminado del directorio, por ejemplo, si su nombre de usuario que inició sesión ubuntu
cambia los permisos como sudo chown ubuntu:www-data example.com
. Esto otorga acceso completo al usuario ubuntu
y permite acceso de lectura y ejecución al grupo www-data
.
Ahora edite el archivo de configuración de Apache /etc/apache2/apache2.conf
emitiendo el comando sudo gedit apache2.conf
y busque 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 a2ensite
y a2dissite
respectivamente. Ahora, dado que nuestro example.com.conf
archivo usa el mismo puerto ( 80
) que usa el archivo de configuración predeterminado ( 000-default.conf
), tenemos que deshabilitar el archivo de configuración predeterminado emitiendo el comando sudo a2dissite 000-default.conf
y habilitar nuestro archivo de configuración de host virtual alsudo a2ensite example.com.conf
Ahora reinicie o vuelva a cargar el servidor con el comando sudo service apache2 restart
. Ahora Apache sirve archivos desde el directorio example.com
en localhost
el puerto predeterminado de 80
.
Básicamente, el a2ensite
comando crea un enlace simbólico al archivo de configuración en el directorio habilitado para el sitio.
No edite archivos dentro del directorio habilitado para sitios (o habilitado para *), como se señala en esta respuesta .
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.conf
y agregando Listen 8080
justo debajo de la líneaListen 80
Ahora podemos habilitar el archivo de configuración de 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 localhost
y localhost:8080
.