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/apache2
y 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.conf
siendo 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-available
y 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í DocumentRoot
está 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.com
y cambie el propietario y el grupo predeterminado del directorio, por ejemplo, si su nombre de usuario conectado es ubuntu
cambiar los permisos como sudo chown ubuntu:www-data example.com
. Esto otorga acceso completo al usuario ubuntu
y permite el acceso de lectura y ejecución al grupo www-data
.
Ahora edite el archivo apache conf /etc/apache2/apache2.conf
emitiendo un comando sudo gedit apache2.conf
y 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 a2ensite
y a2dissite
respectivamente. Ahora, dado que nuestro example.com.conf
archivo 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.com
en localhost
el 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.conf
y agregando Listen 8080
justo 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 localhost
ylocalhost:8080