A maneira correta de alterar o diretório ou executar a partir de vários diretórios sob uma porta diferente para o apache2 é a seguinte:
Para o apache2, os arquivos de configuração estão localizados em /etc/apache2e não usam um único arquivo de configuração como nas versões anteriores, mas são divididos em arquivos de configuração menores, /etc/apache2/apache2.confsendo o principal arquivo de configuração. Para servir arquivos de um diretório diferente, precisamos de um novo arquivo conf de host virtual. Os arquivos conf do host virtual estão localizados /etc/apache2/sites-available(não edite arquivos nos sites habilitados). A instalação padrão do apache usa o arquivo conf do host virtual 000-default.conf.
Comece criando um novo arquivo de host virtual, copiando o arquivo de host virtual padrão usado pela instalação padrão do apache (aquele que é executado no host local na porta 80). Mude para o diretório /etc/apache2/sites-availablee faça a cópia sudo cp 000-default.conf example.com.conf, edite agora o arquivo sudo gedit example.com.confpara:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Excluí as linhas não importantes do arquivo acima por questões de brevidade. Aqui DocumentRootestá o caminho para o diretório no qual os arquivos do site devem ser servidos, como index.html.
Crie o diretório a partir do qual você deseja servir os arquivos, por exemplo; mkdir example.come altere o proprietário e o grupo padrão do diretório, por exemplo, se o seu nome de usuário conectado for ubuntualterar as permissões como sudo chown ubuntu:www-data example.com. Isso concede acesso total ao usuário ubuntue permite acesso de leitura e execução ao grupo www-data.
Agora edite o arquivo conf apache /etc/apache2/apache2.conf emitindo o comando sudo gedit apache2.confe encontre a linha <Directory /var/www/>e abaixo da tag de fechamento </Directory>, adicione o seguinte abaixo:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Agora, existem dois comandos para ativar ou desativar os arquivos de configuração do host virtual, que são a2ensiteea2dissite respectivamente. Agora, como nosso example.com.confarquivo usa a mesma porta ( 80) usada pelo arquivo de configuração padrão ( 000-default.conf), temos que desativar o arquivo de configuração padrão emitindo o comando sudo a2dissite 000-default.confe ativar nosso arquivo conf de virtualhost,sudo a2ensite example.com.conf
Agora reinicie ou recarregue o servidor com o comando sudo service apache2 restart . Agora o apache serve arquivos do diretório example.comna localhostporta padrão de 80.
O a2ensitecomando basicamente cria um link simbólico para o arquivo conf no diretório habilitado para site
Não edite arquivos no diretório ativado por sites (ou *), conforme indicado nesta resposta https://stackoverflow.com/a/41568701/2532763
Para alterar a porta e executar a partir de vários diretórios em portas diferentes:
Agora, se você precisar executar o diretório em uma porta diferente, altere o número da porta de 80 para 8080 editando o arquivo virtualhost como:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
e editar /etc/apache2/ports.confe adicionar Listen 8080logo abaixo da linhaListen 80
Agora, podemos ativar o arquivo conf virtualhost padrão que é executado na porta 80, já que o diretório example.com usa a porta 8080, como sudo a2ensite 000-default.conf
Agora reiniciar ou recarregar o servidor com o comando sudo service apache2 restart. Agora os dois diretórios podem ser acessados localhostelocalhost:8080