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